Gentoo Logo

[ << ] [ < ] [ Powrót ] [ > ] [ >> ]


4. Przygotowywanie dysków

Spis treści:

4.a. Wprowadzenie do urządzeń blokowych

Urządzenia blokowe

Rzućmy okiem na aspekty Gentoo Linux oraz ogólnie Linuksa związane z dyskami. Omówimy systemy plików, partycje oraz urządzenia blokowe. Następnie opiszemy proces podziału twardego dysku tak, aby jak najlepiej wykorzystać dostępne miejsce.

Zaczniemy od omówienia urządzeń blokowych. Najpopularniejszym z nich prawdopodobnie jest /dev/sda reprezentujący w Linuksie pierwszy napęd. Napędy SATA i SCSI otrzymują nazwy z rodziny /dev/sd*. Dzięki libata, nawet stare napędy IDE są nazywane /dev/sd*. Urządzenie to dawniej nazywało się /dev/hda.

Urządzenia blokowe stanowią abstrakcyjny interfejs dysków. Programy użytkownika mogą z nich korzystać nie martwiąc się o to czy napędy są typu IDE, SCSI czy jakiegoś innego. Przechowywane dane adresuje się jako ciąg 512-bajtowych bloków.

Partycje

Teoretycznie przeznaczenie na system całego dysku jest możliwe, zazwyczaj nie jest to jednak zbyt dobre rozwiązanie. Zamiast tego dzielimy napęd na mniejsze i dużo łatwiejsze w zarządzaniu urządzenia blokowe. W systemach opartych na architekturze x86 nazywane są one partycjami.

Wyróżniamy trzy rodzaje partycji: podstawowe, rozszerzone oraz logiczne.

Informacje o partycjach podstawowych przechowywane są w MBR (master boot record). Jako że jest on bardzo mały (512 bajtów), mieszczą się w nim dane maksymalnie czterech takich partycji (na przykład od /dev/sda1 do /dev/sda4).

Specjalną odmianą partycji podstawowych są partycje rozszerzone (również obowiązuje je powyższy limit). Przechowują one wewnątrz siebie kolejne partycje. W ten sposób można ominąć niewygodną granicę i lepiej zagospodarować przestrzeń dyskową.

Partycje umieszczone i opisane wewnątrz rozszerzonych nazywamy logicznymi. Dane o nich nie znajdują się w MBR.

Zaawansowane metody przechowywania danych

Płyty instalacyjne dla architektury x86 posiadają obsługę EVMS oraz LVM2, co znacznie rozszerza możliwości partycjonowania dysków. W Podręczniku skupimy się na tworzeniu zwykłych partycji, warto jednak wiedzieć, że możliwe jest korzystanie również z nowocześniejszych rozwiązań.

4.b. Projektowanie schematu podziału

Domyślny schemat podziału

Można pominąć samodzielne rozrysowywanie schematu podziału dysku i po prostu skorzystać z naszego:

Partycja System plików Rozmiar Opis
/dev/sda1 ext2 32M Partycja rozruchowa
/dev/sda2 (swap) 512M Partycja wymiany
/dev/sda3 ext3 Pozostałe wolne miejsce Partycja główna

W dalszej części tekstu wyjaśnimy jak wiele i jak dużych partycji należy utworzyć. Można pominąć te informacje i przejść bezpośrednio do partycjonowania dysku przy pomocy fdisk.

Jak dużo i o jakim rozmiarze?

Ilość partycji ściśle zależy od danego środowiska. Na przykład, jeśli administruje się systemem mającym wielu użytkowników, prawdopodobnie uzna się za stosowne oddzielenie /home, aby poprawić bezpieczeństwo i uprościć tworzenie kopii zapasowych. Jeżeli docelowym zastosowaniem Gentoo jest serwer poczty, na osobnej partycji należy umieścić /var, gdzie przechowywane są listy. Dobry wybór systemu plików może znacznie zwiększyć wydajność. Oddzielenie /opt jest dobrym rozwiązaniem na serwerach gier, gdyż większość używanego oprogramowania zostanie tam zainstalowana. Powód jest podobny jak przy /home: bezpieczeństwo i kopie zapasowe. Na pewno warto zapewnić dużo wolnego miejsca na /usr, ponieważ będą tam się znajdowały nie tylko dane wszystkich zainstalowanych pakietów, ale również ważące 500 MB drzewo Portage i kody źródłowe programów.

Jak widać, wiele zależy od oczekiwanego rezultatu. Rozdzielenie partycji ma wiele zalet:

  • Daje możliwość wybrania dla poszczególnych partycji najbardziej wydajnego w danym zastosowaniu systemu plików.
  • Zapełnienie całego wolnego miejsca na partycji przez wadliwie działający program nie będzie miało szkodliwego wpływu na całość systemu.
  • Możliwe będzie skrócenie czasu kontroli systemów plików dzięki jednoczesnemu dokonywaniu jej na kilku partycjach (ma to znaczenie zwłaszcza na komputerze z wieloma twardymi dyskami).
  • Montując część partycji lub woluminów z opcjami read-only (tylko do odczytu), nosuid (ignorowane są bity setuid), noexec (ignorowane są bity wykonywalności) itd. można znacznie poprawić bezpieczeństwo.

Niestety zbyt rozbudowany schemat podziału niesie ze sobą spore problemy. Źle zaplanowany zaowocuje pustkami na zbyt dużych i ciasnotą na zbyt małych partycjach.

W przykładzie pokażemy partycjonowanie dysku o rozmiarze 20GB wykorzystywanego w laptopie z zainstalowanym serwerem poczty, stron internetowych oraz środowiskiem Gnome:

Listing 2.1: Przykładowy podział dysku

$ df -h
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sda5     ext3    509M  132M  351M  28% /
/dev/sda2     ext3    5.0G  3.0G  1.8G  63% /home
/dev/sda7     ext3    7.9G  6.2G  1.3G  83% /usr
/dev/sda8     ext3   1011M  483M  477M  51% /opt
/dev/sda9     ext3    2.0G  607M  1.3G  32% /var
/dev/sda1     ext2     51M   17M   31M  36% /boot
/dev/sda6     swap    516M   12M  504M   2% <not mounted>
(Zostało 2GB nieprzydzielonego do żadnej partycji miejsca - do wykorzystania w przyszłości)

/usr jest niemal w pełni zajęty (wykorzystane 83%), ale po instalacji wszystkich potrzebnych pakietów nie będzie się on zbytnio rozrastał. Przeznaczenie kilku gigabajtów na /var może wydać się zbyt rozrzutne. Należy jednak zwrócić uwagę, że Gentoo kompiluje tam domyślnie wszystkie pakiety. Jeżeli chcemy, aby /var posiadało mniejszy rozmiar, na przykład 1GB, powinniśmy zmodyfikować zmienną PORTAGE_TMPDIR w pliku /etc/make.conf, aby zawierała partycję z odpowiednią ilością wolnego miejsca do kompilacji ekstremalnie dużych pakietów takich jak na przykład OpenOffice.

4.c. Partycjonowanie dysku przy pomocy fdisk

Teraz przedstawimy proces tworzenia partycji wypisanych w naszym przykładowym schemacie podziału dysku. Oto on:

Partycja Opis
/dev/sda1 Partycja rozruchowa
/dev/sda2 Partycja wymiany
/dev/sda3 Partycja główna

Ten schemat oczywiście można (i zwykle należy) zmodyfikować stosownie do własnych potrzeb.

Wyświetlanie aktualnego podziału dysku

fdisk to popularne i bardzo wygodne narzędzie służące do partycjonowania dysków. Zacznijmy od uruchomienia go dla naszego dysku (pokażemy to na przykładzie /dev/sda):

Listing 3.1: Uruchamianie fdisk

# fdisk /dev/sda

Po chwili ukaże się taki znak zachęty fdisk:

Listing 3.2: Znak zachęty fdisk

Command (m for help):

Aby wyświetlić obecną konfigurację partycji wpisujemy p:

Listing 3.3: Przykładowa konfiguracja partycji

Command (m for help): p

Disk /dev/sda: 240 heads, 63 sectors, 2184 cylinders
Units = cylinders of 15120 * 512 bytes

Device   Boot     Start       End    Blocks   Id  System
/dev/sda1   *         1        14    105808+  83  Linux
/dev/sda2            15        49    264600   82  Linux swap
/dev/sda3            50        70    158760   83  Linux
/dev/sda4            71      2184  15981840    5  Extended
/dev/sda5            71       209   1050808+  83  Linux
/dev/sda6           210       348   1050808+  83  Linux
/dev/sda7           349       626   2101648+  83  Linux
/dev/sda8           627       904   2101648+  83  Linux
/dev/sda9           905      2184   9676768+  83  Linux

Command (m for help):

Na prezentowanym dysku znajduje się siedem linuksowych systemów plików (każdy na osobnej partycji, oznaczonej jako "Linux") oraz partycja wymiany (oznaczona jako "Linux swap").

Usuwanie partycji

Zacznijmy od usunięcia starych partycji. Służy do tego polecenie d z odpowiednim dla każdej partycji numerem. Na przykład, aby pozbyć się /dev/sda1, należy wpisać:

Listing 3.4: Usuwanie partycji

Command (m for help): d
Partition number (1-4): 1

Partycja została zaznaczona do usunięcia. Nie będzie więcej pojawiać się po wpisaniu p, ale pozostanie nienaruszona dopóki zmiany nie zostaną fizycznie zapisane na dysku. Po popełnieniu błędu przy dzieleniu dysku wystarczy wpisać q i wcisnąć enter, aby wszystkie dokonane modyfikacje poszły w niepamięć.

Aby pozbyć się wszystkich istniejących partycji wpisujemy p, aby wyświetlić ich listę, a następnie po kolei kasujemy je poleceniem d z odpowiednim numerem. Na koniec p powinno dawać następujący rezultat:

Listing 3.5: Pusta tablica partycji

Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot    Start       End    Blocks   Id  System

Command (m for help):

Kiedy już nasza tymczasowa kopia tablicy partycji będzie pusta możemy rozpocząć dzielenie dysku. Pokażemy to na przykładzie naszego domyślnego schematu, który należy oczywiście odpowiednio zmienić dla danej sytuacji, aby możliwie najlepiej spełniał konkretne przed nim stawiane zadania.

Zakładanie partycji rozruchowej

Rozpoczniemy od utworzenia niewielkiej partycji rozruchowej. Wpisujemy n, aby ją założyć, a następnie p, aby nadać jej typ podstawowy i 1, ponieważ będzie to pierwsza taka partycja. Zapytani o pierwszy cylinder wciskamy enter, a przy pytaniu o ostatni wpisujemy +32M, by nadać jej rozmiar 32 MB oraz ustawić flagę partycji rozruchowej:

Listing 3.6: Zakładanie partycji rozruchowej

Command (m for help): n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-3876, default 1):  (Enter)
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-3876, default 3876): +32M

Teraz polecenie p powinno pokazywać taką listę:

Listing 3.7: Partycja rozruchowa

Command (m for help): p

Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot    Start       End    Blocks   Id  System
/dev/sda1          1        14    105808+  83  Linux

Musimy również oznaczyć naszą partycję jako uruchamialną. W tym celu skorzystamy z polecenia a. Na kolejnych wydrukach podziału w kolumnie "Boot" przy naszej partycji pojawi się znak *.

Zakładanie partycji wymiany

Następnie tworzymy partycję wymiany. Ponownie korzystamy z polecenia n, potem wpisujemy p (gdyż ma to być partycja podstawowa) i 2, ponieważ będzie ona drugą tego typu. Zapytani o pierwszy cylinder wciskamy enter, a w odpowiedzi na pytanie o ostatni wpisujemy +512M (aby nadać partycji rozmiar 512 MB). Na koniec wpisujemy t (aby zmienić jej typ), 2 (aby wybrać tę, którą właśnie stworzyliśmy) i 82 (co nada jej typ "Linux Swap"). Teraz polecenie p powinno pokazywać następującą listę:

Listing 3.8: Wydruk podziału po utworzeniu partycji wymiany

Command (m for help): p

Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot    Start       End    Blocks   Id  System
/dev/sda1 *        1        14    105808+  83  Linux
/dev/sda2         15        81    506520   82  Linux swap

Zakładanie partycji głównej

Na koniec tworzymy partycję główną. Jeszcze raz posłużymy się poleceniem n. Zapytani o rodzaj wciskamy p (aby była partycją podstawową), następnie 3 (gdyż będzie już trzecią tego typu, czyli w naszym przypadku /dev/sda3), a na pytanie o pierwszy i ostatni cylinder wciskamy enter, dzięki czemu zajmie ona całą pozostałą wolną przestrzeń. Ostatecznie polecenie p powinno pokazać następującą listę:

Listing 3.9: Wydruk podziału po utworzeniu partycji głównej

Command (m for help): p

Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot    Start       End    Blocks   Id  System
/dev/sda1 *        1        14    105808+  83  Linux
/dev/sda2         15        81    506520   82  Linux swap
/dev/sda3         82      3876  28690200   83  Linux

Zapisywanie podziału partycji

Aby zachować ustalony podział i opuścić fdisk, należy wpisać w.

Listing 3.10: Zachowywanie zmian i zamykanie fdisk

Command (m for help): w

Po utworzeniu partycji można przejść do zakładania systemów plików.

4.d. Zakładanie systemów plików

Wprowadzenie

Po utworzeniu partycji trzeba założyć na nich odpowiednie systemy plików. Osoby, którym wszystko jedno jaki system plików wybiorą lub te, które są zadowolone z domyślnych ustawień z Podręcznika mogą przejść do zakładania systemów plików na partycji. Pozostali muszą czytać dalej, aby dowiedzieć się więcej na ich temat.

Systemy plików

Jądro Linux obsługuje wiele różnych systemów plików. W tym tekście omówimy ext2, ext3, ReiserFS, XFS i JFS, ponieważ są one najczęściej używane w systemach linuksowych.

ext2 to sprawdzony i popularny linuksowy system plików, którego główną wadą jest to, że nie posiada księgowania. Powoduje to, że jego regularne kontrole przy starcie systemu bywają długotrwałe. Obecnie istnieją nowoczesne systemy plików z księgowaniem, które można szybko sprawdzić i to właśnie te polecamy naszym użytkownikom. Księgowanie zapobiega długotrwałym kontrolom podczas uruchamiania systemu oraz ewentualnym błędom spójności danych.

ext3 to odpowiednik ext2 posiadający księgowanie w trybach full oraz ordered, dzięki czemu w razie awarii dane odzyskiwane są błyskawicznie. ext3 używa indeksu drzewa HTree, który zapewnia wysoką wydajność w prawie wszystkich zastosowaniach. W skrócie, ext3 to bardzo dobry i niezawodny system plików.

JFS to bardzo wydajny system plików IBM wyposażony w księgowanie. Jest lekki, szybki i godny polecenia. Oparto go na drzewie B+ dzięki czemu doskonale sprawdza się w wielu bardzo różnych zastosowaniach.

ReiserFS to system plików z księgowaniem oparty na drzewie B+. Wykazuje się doskonałą wydajnością przy obsłudze bardzo wielu małych plików (kosztem zwiększonego obciążenia procesora). Nie jest tak aktywnie rozwijany jak inne systemy plików.

XFS to system plików z księgowaniem metadanych, który został zaprojektowany z myślą o skalowalności i nie posiada wielu dodatkowych możliwości. Nie jest on również zbyt odporny na problemy sprzętowe.

Zakładanie systemów plików na partycjach

Aby założyć na woluminie lub partycji system plików, należy skorzystać z odpowiednich narzędzi:

System plików Program do jego zakładania
ext2 mke2fs
ext3 mke2fs -j
reiserfs mkreiserfs
xfs mkfs.xfs
jfs mkfs.jfs

Na przykład, aby założyć ext2 na partycji rozruchowej (w naszym przypadku /dev/sda1) oraz ext3 na partycji głównej (w naszym przypadku /dev/sda3), należy wykonać następujące polecenia:

Listing 4.1: Zakładanie systemu plików na partycji

# mke2fs /dev/sda1
# mke2fs -j /dev/sda3

Przed przejściem do dalszych kroków należy stworzyć systemy plików na wszystkich partycjach.

Aktywacja partycji wymiany

Aby utworzyć partycję wymiany, należy skorzystać z programu mkswap.

Listing 4.2: Tworzenie partycji wymiany

# mkswap /dev/sda2

Do aktywowania partycji wymiany używa się programu swapon:

Listing 4.3: Aktywacja partycji wymiany

# swapon /dev/sda2

Teraz tworzymy i aktywujemy partycję wymiany za pomocą powyższych poleceń.

4.e. Montowanie

Po założeniu partycji i utworzeniu na nich systemów plików nadszedł czas na ich zamontowanie. Służy do tego program mount. Należy utworzyć odpowiednie katalogi dla montowanych partycji. W przykładzie zamontujemy partycję rozruchową i główną:

Listing 5.1: Montowanie partycji

# mount /dev/sda3 /mnt/gentoo
# mkdir /mnt/gentoo/boot
# mount /dev/sda1 /mnt/gentoo/boot

Uwaga: Aby przenieść /tmp na osobną partycję, należy po jego zamontowaniu odpowiednio zmienić prawa dostępu: chmod 1777 /mnt/gentoo/tmp. Dotyczy to również /var/tmp.

Konieczne będzie także zamontowanie systemu plików proc (wirtualny interfejs jądra) w katalogu /proc, ale najpierw musimy umieścić odpowiednie pliki na partycjach.

Kolejny rozdział to Wypakowywanie plików instalacyjnych.


[ << ] [ < ] [ Powrót ] [ > ] [ >> ]


Drukuj

Pokaż całość

Zaktualizowano 9 stycznia 2009

Oryginalna wersja tego dokumentu została po raz ostatni zaktualizowana 4 października 2009. Jeśli chcesz pomóc w aktualizacji tego dokumentu do najnowszej wersji, skontaktuj się z Łukaszem Damentko, koordynatorem polskiego projektu tłumaczeń dokumentacji Gentoo.

Podsumowanie: Opis tworzenia partycji, na których zostanie zainstalowane Gentoo.

Sven Vermeulen
Autor

Grant Goodyear
Autor

Roy Marples
Autor

Daniel Robbins
Główny Architekt

Chris Houser
Autor

Jerry Alexandratos
Autor

Seemant Kulleen
Gentoo x86 Developer

Tavis Ormandy
Gentoo Alpha Developer

Jason Huebel
Gentoo AMD64 Developer

Guy Martin
Gentoo HPPA developer

Pieter Van den Abeele
Gentoo PPC developer

Joe Kallar
Gentoo SPARC developer

John P. Davis
Redaktor

Pierre-Henri Jondot
Redaktor

Eric Stockbridge
Redaktor

Rajiv Manglani
Redaktor

Jungmin Seo
Redaktor

Stoyan Zhekov
Redaktor

Jared Hudson
Redaktor

Colin Morey
Redaktor

Jorge Paulo
Redaktor

Carl Anderson
Redaktor

Jon Portnoy
Redaktor

Zack Gilburd
Redaktor

Jack Morgan
Redaktor

Benny Chuang
Redaktor

Erwin
Redaktor

Joshua Kinard
Redaktor

Tobias Scherbaum
Redaktor

Xavier Neys
Redaktor

Gerald J. Normandin Jr.
Korekta

Donnie Berkholz
Korekta

Ken Nowack
Korekta

Lars Weiler
Współpracownik

Joshua Saddler
Editor

Karol Wojtaszek
Tłumacz

Łukasz Damentko
Tłumacz

Donate to support our development efforts.

Support OSL
Gentoo Centric Hosting: vr.org
Tek Alchemy
SevenL.net
Global Netoptex Inc.
Bytemark
Online Kredit Index
Copyright 2001-2009 Gentoo Foundation, Inc. Questions, Comments? Contact us.