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.

Plastry

Teoretycznie możliwe jest przeznaczenie na system całego dysku, zazwyczaj nie jest to jednak rozwiązanie zbyt praktyczne. Zamiast tego dzieli się napęd na mniejsze i łatwiejsze w zarządzaniu tzw. urządzenia blokowe. Na systemach Alpha są one nazywane plastrami (ang. slices).

1.  Projektowanie schematu podziału

Domyślny schemat Podziału

Jako przykładu użyjemy następującego schematu plastrów:

Plaster Opis
/dev/sda1 Plaster wymiany
/dev/sda2 Plaster Root
/dev/sda3 Caly dysk (wymagane)

Jeśli interesują Cię nasze rady dotyczące rozmiarów oraz ilości partycji, czytaj dalej. W przeciwnym wypadku przejdź od razu do paragrafu podział dysku za pomocą fdisk (dla SRM) lub podział dysku za pomocą fdisk (dla ARC/AlphaBIOS)

Jak dużo jak wielkich?

Ilość partycji ściśle zależy od danego środowiska. Na przykład, jeśli administrujesz systemem mającym wielu użytkowników, prawdopodobnie uznasz 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 powinieneś 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 widzisz, wiele zależy od oczekiwanego rezultatu. Wydzielenie partycji lub woluminów ma wiele zalet:

  • Masz możliwość dostosowania jak najwydajniejszego w danym zastosowaniu systemu plików dla poszczególnych partycji.
  • W przypadku zapełnienia partycji przez nieprawidłowo działające narzędzie, nie ma to wpływu na całość systemu.
  • Jeśli to konieczne, można skrócić czas kontroli systemów plików, gdyż można jednocześnie dokonywać jej na kilku partycjach (ma to znaczenie zwłaszcza na sprzęcie z wieloma 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 podział niesie ze sobą spore problemy: źle zaplanowany zaowocuje pustkami na zbyt dużych i ciasnotą na zbyt małych partycjach.

1.  Partycjonowanie dysku za pomocą fdisk (tylko SRM)

W kolejnych podsekcjach pokażemy jak utworzyć partycje takie jak w zaprezentowanym wcześniej schemacie:

Plaster Opis
/dev/sda1 Plaster wymiany
/dev/sda2 Plaster Root
/dev/sda3 Caly dysk (wymagane)

Oczywiście możesz i czasem nawet powinieneś dostosować ten schemat odpowiednio do swoich potrzeb.

Sprawdzanie dostępnych dysków

Aby dowiedzieć się jakie dyski masz do dyspozycji skorzystaj z następujących poleceń:

Listing 1.1: Sprawdzanie dostępnych dysków

# dmesg | grep 'drive$'        (dla dysków IDE)
# dmesg | grep 'scsi'          (dla dysków SCSI)

Na podstawie rezultatu powinieneś wywnioskować, które dyski zostały wykryte i jakie urządzenia w /dev je reprezentują. W kolejnych podsekcjach zakładamy, iż korzystasz z pierwszego dysku SCSI (/dev/sda).

Odpal fdisk:

Listing 1.1: Odpalanie fdisk

# fdisk /dev/sda

Usuwanie plastrów

Jeżeli Twój dysk twardy jest pusty będziesz musiał najpierw stworzyć etykietę dysku BSD.

Listing 1.1: Tworzenie etykiety BSD dysku

Command (m for help): b
/dev/sda contains no disklabel.
Do you want to create a disklabel? (y/n) y
Teraz zobaczysz kilka informacji różnych dla każdego dysku
3 partitions:
#       start       end      size     fstype   [fsize bsize   cpg]
  c:        1      5290*     5289*    unused        0     0

Zaczniemy od pozbycia się wszystkich plastrów, z wyjątkiem plastra 'c' (wymagany, gdy używasz etykiety dysku BSD). Pokażemy jak to zrobić na przykładzie 'a'. Powtórz ten proces aby usunąć również pozostałe (oczywiście oprócz 'c').

Użyj p aby ujrzeć wszystkie plastry. Do usuwania służy d.

Listing 1.1: Usuwanie plastra

BSD disklabel command (m for help): p

8 partitions:
#       start       end      size     fstype   [fsize bsize   cpg]
  a:        1       235*      234*    4.2BSD     1024  8192    16
  b:      235*      469*      234*      swap
  c:        1      5290*     5289*    unused        0     0
  d:      469*     2076*     1607*    unused        0     0
  e:     2076*     3683*     1607*    unused        0     0
  f:     3683*     5290*     1607*    unused        0     0
  g:      469*     1749*     1280     4.2BSD     1024  8192    16
  h:     1749*     5290*     3541*    unused        0     0

BSD disklabel command (m for help): d
Partition (a-h): a

Po powtórzeniu powyższego procesu dla wszystkich plastrów listing powinien przedstawiać się następująco:

Listing 1.1: Pusty listing schematu partycji

BSD disklabel command (m for help): p

3 partitions:
#       start       end      size     fstype   [fsize bsize   cpg]
  c:        1      5290*     5289*    unused        0     0

Tworzenie plastra wymiany

W komputerach Alpha nie ma konieczności tworzenia partycji boot. Za to pierwszy cylinder dysku zostanie zajęty obrazem aboot.

Utworzymy teraz plaster wymiany zaczynający się od trzeciego cylindra o rozmiarze 1GB. W tym celu skorzystamy z polecenia n. Następnie zmienimy jego typ na 1, czyli swap.

Listing 1.1: Tworzenie plastra wymiany

BSD disklabel command (m for help): n
Partition (a-p): a
First cylinder (1-5290, default 1): 3
Last cylinder or +size or +sizeM or +sizeK (3-5290, default 5290): +1024M

BSD disklabel command (m for help): t
Partition (a-c): a
Hex code (type L to list codes): 1

Teraz listing podziału powinien wyglądać podobnie:

Listing 1.1: Listing podziału po utworzeniu plastra wymiany

BSD disklabel command (m for help): p

3 partitions:
#       start       end      size     fstype   [fsize bsize   cpg]
  a:        3      1003      1001       swap
  c:        1      5290*     5289*    unused        0     0

Tworzenie plastra root

Nadszedł czas na utworzenie plastra root. Powinien zaczynać się od pierwszego cylindra po plastrze swap. Aby zobaczyć gdzie kończy się ów plaster skorzystaj z polecenia p. W naszym przykładzie jest to 1003, a więc początkiem plastra root będzie cylinder 1004.

Obecnie w programie fdisk znajduje się błąd powodujący iż liczba dostępnych cylindrów jest o jeden większa od faktycznej. Innymi słowy, zapytany o ostatni cylinder podaj numer zmniejszony o jeden (w naszym przykładzie 5290).

Po założeniu partycji, zmień jej typ na 8, czyli ext2.

Listing 1.1: Zakładanie plastra root

D disklabel command (m for help): n
Partition (a-p): b
First cylinder (1-5290, default 1): 1004
Last cylinder or +size or +sizeM or +sizeK (1004-5290, default 5290): 5289

BSD disklabel command (m for help): t
Partition (a-c): b
Hex code (type L to list codes): 8

Teraz schemat podziału powinien wyglądać następująco:

Listing 1.1: Wyświetlanie listingu podziału

BSD disklabel command (m for help): p

3 partitions:
#       start       end      size     fstype   [fsize bsize   cpg]
  a:        3      1003      1001       swap
  b:     1004      5289      4286       ext2
  c:        1      5290*     5289*    unused        0     0

Zapisywanie podziału i zamykanie fdisk

Aby zapisać zmiany i opuścić fdisk wpisz w.

Listing 1.1: Zachowywanie zmian i zamykanie fdisk

Command (m for help): w

Twoje plastry są już gotowe, więc możesz przejść do paragrafu Tworzenie systemów plików.

1.  Partycjonowanie dysku za pomocą fdisk (tylko ARC/AlphaBIOS)

W kolejnych podsekcjach pokażemy jak utworzyć partycje takie jak w zaprezentowanym wcześniej schemacie:

Partycja Opis
/dev/sda1 Partycja Boot
/dev/sda2 Partycja Swap
/dev/sda3 Partycja Root

Zmodyfikuj go stosownie do swoich potrzeb.

Sprawdzanie dostępnych dysków

Aby dowiedzieć się jakie dyski masz do dyspozycji skorzystaj z następujących poleceń:

Listing 1.1: Sprawdzanie dostępnych dysków

# dmesg | grep 'drive$'        (dla dysków IDE)
# dmesg | grep 'scsi'          (dla dysków SCSI)

Na podstawie rezultatu powinieneś wywnioskować, które dyski zostały wykryte i jakie urządzenia w /dev je reprezentują. W kolejnych podsekcjach zakładamy, iż korzystasz z pierwszego dysku SCSI (/dev/sda).

Odpal fdisk:

Listing 1.1: Odpalenie fdisk

# fdisk /dev/sda

Usuwanie partycji

Jeżeli dysk twardy jest pusty, należy najpierw stworzyć etykietę dyski DOS.

Listing 1.1: Tworzenie etykiety dysku DOS

Command (m for help): o
Building a new DOS disklabel.

Zaczniemy od pozbycia się wszystkich partycji. Pokażemy jak usunąć partycję (na przykładzie '1'). Powtórz ten proces aby usunąć również pozostałe.

Użyj p aby ujrzeć wszystkie partycje. Do usuwania partycji służy d.

Listing 1.1: Usuwanie partycji

command (m for help): p

Disk /dev/sda: 9150 MB, 9150996480 bytes
64 heads, 32 sectors/track, 8727 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1         478      489456   83  Linux
/dev/sda2             479        8727     8446976    5  Extended
/dev/sda5             479        1433      977904   83  Linux Swap
/dev/sda6            1434        8727     7469040   83  Linux

command (m for help): d
Partition number (1-6): 1

Tworzenie partycji boot

Na systemach Alpha, które używają MILO do procesu startu systemu musimy utworzyć małą partycję boot.

Listing 1.1: Tworzenie partycji boot

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

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 6
Changed system type of partition 1 to 6 (FAT16)

Tworzenie partycji wymiany

Utworzymy teraz partycję wymiany zaczynającą się na trzecim cylindrze o rozmiarze 1GB. W tym celu skorzystamy z polecenia n.

Listing 1.1: Tworzenie partycji wymiany

Command (m for help): n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (17-8727, default 17): 17
Last cylinder or +size or +sizeM or +sizeK (17-8727, default 8727): +1000M

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 82
Changed system type of partition 2 to 82 (Linux swap)

Teraz schemat podziału powinien wyglądać następująco:

Listing 1.1: Listing podziału po utworzeniu partycji wymiany

Command (m for help): p

Disk /dev/sda: 9150 MB, 9150996480 bytes
64 heads, 32 sectors/track, 8727 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          16       16368    6  FAT16
/dev/sda2              17         971      977920   82  Linux swap

Tworzenie partycji root

Nadeszedł czas na utworzenie partycji root. Ponownie, wykorzystaj polecenie n.

Listing 1.1: Tworzenie partycji root

Command (m for help): n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (972-8727, default 972): 972
Last cylinder or +size or +sizeM or +sizeK (972-8727, default 8727): 8727

Teraz schemat podziału powinien wyglądać następująco:

Listing 1.1: Listing podziału po utworzeniu partycji wymiany

Command (m for help): p

Disk /dev/sda: 9150 MB, 9150996480 bytes
64 heads, 32 sectors/track, 8727 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          16       16368    6  FAT16
/dev/sda2              17         971      977920   82  Linux swap
/dev/sda3             972        8727     7942144   83  Linux

Zapisywanie podziału i zamykanie fdisk

Aby zapisać zmiany i opuścić fdisk wpisz w.

Listing 1.1: Zachowanie zmian i zamykanie fdisk

Command (m for help): w

Twoje plastry są już gotowe, więc możesz przejść do paragrafu Tworzenie systemów plików.

1.  Tworzenie systemów plików

Wprowadzenie

Po utworzeniu partycji nadszedł czas na założenie na nich systemów plików.

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.

Tworzenie systemów plików na partycjach

Aby założyć na woluminie lub partycji system plików powinieneś skorzystać odpowiednich dla każdego z nich narzędzi:

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

Na przykład, aby założyć ext3 na partycji root (w naszym przypadku /dev/sda2) powinniśmy wykonać następujące polecenia:

Listing 1.1: Tworzenie systemu plików na partycji

# mke2fs -j /dev/sda2

Stwórz teraz systemy plików na swoich partycjach.

Aktywacja partycji wymiany

Aby utworzyć partycję wymiany skorzystaj z programu mkswap.

Listing 1.1: Tworzenie partycji wymiany

# mkswap /dev/sda1

Aby ją aktywować skorzystaj z polecenia swapon:

Listing 1.1: Aktywacja partycji wymiany

# swapon /dev/sda1

Partycję wymiany tworzymy i aktywujemy za pomocą komend podanych wyżej.

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. Nie zapomnij utworzyć odpowiednich katalogów dla każdej z montowanych partycji. Pokażemy to na przykładzie partycji root:

Listing 1.1: Montowanie partycji

# mount /dev/sda2 /mnt/gentoo

Uwaga: Jeżeli chcesz przenieść /tmp na oddzielną partycję, nie zapomnij po zamontowaniu odpowiednio poprawić praw dostępu: chmod 1777 /mnt/gentoo/tmp. Dotyczy to również /var/tmp.

Musimy też zamontować system plików proc (wirtualny interfejs jądra) w /proc. Najpierw jednak nagrajmy na dysk kilka niezbędnych plików.

Następny 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.