Gentoo Logo

1.  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 ${arch}systemach opartych na architekturze nazywane są one partycjami.

Systemy Itanium korzystają z EFI, Extensible Firmware Interface, do uruchamiania. Format tabeli partycji rozumiany przez EFI nazywa się GPT (GUID Partition Table). Program partycjonujący, który rozumie GPT nazywa się "parted", więc jest to narzędzie, z którego będziemy korzystali poniżej. Dodatkowo EFI potrafi czytać tylko system plików FAT, więc takiego formatu należy użyć dla partycji rozruchowej, gdzie "elilo" zainstaluje jądro.

Zaawansowane metody przechowywania danych

Płyty instalacyjne dla architektury ${arch} 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ń.

1.  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 vfat 32M Partycja rozruchowa EFI
/dev/sda2 (swap) 512M Partycja wymiany
/dev/sda3 ext3 Rest of the disk 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 parted.

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ę 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 również ze sobą spore problemy. Źle zaplanowany zaowocuje pustkami na zbyt dużych i ciasnotą na zbyt małych partycjach. Istnieje również limit 15-tu partycji dla SCSI i SATA.

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

Listing 1.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% <nie zamontowany>
(Zostało 2GB nie przydzielonego 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, tak aby prowadziła do partycji z odpowiednią ilością wolnego miejsca do kompilacji ekstremalnie dużych pakietów takich jak OpenOffice.

1.  Partycjonowanie dysku przy pomocy parted

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

Partycja Opis
/dev/sda1 Partycja rozruchowa EFI
/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

parted jest edytorem GNU partycji. Uruchamiamy parted na naszym dysku (w powyższym przykładzie jest to /dev/sda):

Listing 1.1: Uruchamianie parted

# parted /dev/sda

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

Listing 1.1: Znak zachęty parted

GNU Parted 1.6.22
Copyright (C) 1998 - 2005 Free Software Foundation, Inc.
This program is free software, covered by the GNU General Public License.

This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without
even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.  See the GNU General Public License for more details.

Using /dev/sda
(parted)

W tym miejscu jedną z dostępnych komend będzie help, z którego należy skorzystać jeśli chcemy poznać pozostałe komendy. Kolejną komendą jest print, który powinniśmy wprowadzić chcąc wyświetlić obecną konfigurację partycji:

Listing 1.1: Przykładowa konfiguracja partycji

(parted) print
Disk geometry for /dev/sda: 0.000-34732.890 megabytes
Disk label type: gpt
Minor    Start       End     Filesystem  Name                  Flags
1          0.017    203.938  fat32                             boot
2        203.938   4243.468  linux-swap
3       4243.469  34724.281  ext3

Ta konkretna konfiguracja jest bardzo podobna do tej proponowanej wcześniej. Zwróćmy uwagę, że w drugiej linii tablica partycji podana jest w GPT. Jeżeli jest inaczej to system ia64 nie będzie w stanie się uruchomić z tego dysku. Dla potrzeb tego przewodnika usuniemy partycje i stworzymy je od nowa.

Usuwanie partycji

Uwaga: W przeciwieństwie do fdisk i innych programów partycjonujących, które odkładają wykonanie zmian aż do podania instrukcji zapisu, polecenia w parted mają efekt natychmiastowy. Po rozpoczęciu tworzenia i usuwania partycji nie ma możliwości wyjścia z programu bez zapisu... wszystko już zostało zapisane.

Łatwym sposobem usunięcia wszystkich partycji i stworzenia wszystkiego od początku, co zagwarantuje nam, że używamy poprawnej tablicy partycji, jest utworzenie nowej tabeli partycji przy użyciu polecenia mklabel. Po dokonaniu tego otrzymamy pustą tablicę partycji GPT.

Listing 1.1: Tworzenie nowej tablicy partycji

(parted) mklabel gpt
(parted) print
Disk geometry for /dev/sda: 0.000-34732.890 megabytes
Disk label type: gpt
Minor    Start       End     Filesystem  Name                  Flags

Nasza tablica partycji jest już pusta i możemy stworzyć nowe partycje. Użyjemy domyślnego schematu partycjonowania jak ten omawiany wcześniej. Nie kieruj się tymi instrukcjami słowo w słowo jeżeli nie chcesz używać takiego samego schematu partycji.

Tworzenie partycji rozruchowej EFI

Na początek tworzymy małą partycje rozruchową EFI. Wymaga się tutaj systemu plików FAT, aby wbudowane oprogramowanie ia64 mogło ją odczytać. W naszym przykładzie partycja ta ma rozmiar 32 megabajtów, co jest wystarczające do przechowywania jąder oraz konfiguracji elilo. Zazwyczaj jądra ia64 mają wielkość około 5 megabajtów, więc taka konfiguracja pozostawia nam jeszcze miejsce na eksperymenty.

Listing 1.1: Tworzenie partycji rozruchowej

(parted) mkpart primary fat32 0 32
(parted) print
Disk geometry for /dev/sda: 0.000-34732.890 megabytes
Disk label type: gpt
Minor    Start       End     Filesystem  Name                  Flags
1          0.017     32.000  fat32

Tworzenie partycji wymiany

Stwórzmy partycję wymiany. Klasyczny rozmiar dla takiej partycji wynosił podwójną ilość pamięci RAM. W nowoczesnych systemach z dużą ilością RAM-u nie jest to już konieczne. Dla większość systemów typu desktop 512-megowa partycja wymiany jest wystarczająca. Dla serwera powinniśmy rozważyć założenie większej partycji.

Listing 1.1: Tworzenie partycji wymiany

(parted) mkpart primary linux-swap 32 544
(parted) print
Disk geometry for /dev/sda: 0.000-34732.890 megabytes
Disk label type: gpt
Minor    Start       End     Filesystem  Name                  Flags
1          0.017     32.000  fat32
2         32.000    544.000

Tworzenie głównej partycji

Na koniec tworzymy partycję główną. Nasza konfiguracja pozwoli głównej partycji na zajęcie pozostałej przestrzeni naszego dysku. Używamy domyślnie ext3, ale można wykorzystać ext2, jfs, reiserfs czy xfs. Rzeczywisty system plików nie jest tworzony w tym kroku, ale tablica partycji zawiera informacje początkowe o systemie plików każdej partycji i dobrym pomysłem jest, aby nasza tablica odpowiadała naszym zamiarom.

Listing 1.1: Tworzenie partycji głównej

(parted) mkpart primary ext3 544 34732.890
(parted) print
Disk geometry for /dev/sda: 0.000-34732.890 megabytes
Disk label type: gpt
Minor    Start       End     Filesystem  Name                  Flags
1          0.017     32.000  fat32
2         32.000    544.000
3        544.000  34732.874

Opuszczanie parted

Aby opuścić parted wpisujemy quit. Nie ma potrzeby wykonywać jakichkolwiek kroków w celu zapisania układu partycji, ponieważ zostało to już dokonane. Po wyjściu parted przypomni o konieczności aktualizacji /etc/fstab, co zrobimy w dalszej części tego przewodnika.

Listing 1.1: Opuszczanie parted

(parted) quit
Information: Don't forget to update /etc/fstab, if necessary.

Teraz gdy już partycje zostały stworzone możemy przejść do tworzenia systemu plików.

1.  Tworzenie systemu 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. Jeśli zamierzamy instalować Gentoo na bardzo mały dysku (mniejszym niż 4GB) musimy przekazać ext2 informacje o rezerwacji wystarczającej ilości inode w trakcie tworzenia systemu plików poprzez wydanie komendy mke2fs -T small /dev/<device>.

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. Jeśli zamierzamy instalować Gentoo na bardzo mały dysku (mniejszym niż 4GB) musimy przekazać ext2 informacje o rezerwacji wystarczającej ilości inode w trakcie tworzenia systemu plików poprzez wydanie komendy mke2fs -j -T small /dev/<device>.

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
vfat mkdosfs
ext2 mke2fs
ext3 mke2fs -j
reiserfs mkreiserfs
xfs mkfs.xfs
jfs mkfs.jfs

Na przykład aby założyć partycję rozruchową (/dev/sda1 w naszym przykładzie) jako vfat oraz partycję główną (/dev/sda3 w naszym przykładzie) jako ext3, należy wykonać poniższe polecenia.

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

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

Aktywacja partycji wymiany

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

Listing 1.1: Tworzenie partycji wymiany

# mkswap /dev/sda2

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

Listing 1.1: Aktywacja partycji wymiany

# swapon /dev/sda2

Teraz tworzymy i aktywujemy partycję wymiany za pomocą wyżej podanych poleceń.

1.  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 1.1: Montowanie głównej partycji

# mount /dev/sda3 /mnt/gentoo

Uwaga: W przeciwieństwie do innych architektur wspieranych przez Gentoo, /boot nie jest montowane na ia64. Powodem tego jest fakt. że partycja rozruchowa EFI będzie montowana automatycznie i zapisywana przez komendę elilo przy jej każdym wykonaniu. Dlatego też /boot rezyduje na głównym systemie plików i jest miejscem, w którym przetrzymuje się jądra tworzone przez naszą konfigurację elilo.

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).

Zaktualizowano 1 kwietnia 2008

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

Donate to support our development efforts.

Copyright 2001-2012 Gentoo Foundation, Inc. Questions, Comments? Contact us.