|
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$'
# dmesg | grep '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
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$'
# dmesg | grep '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).
|