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