2.1 2005-03-28
Úvod do blokových zařízení Bloková zařízení

Nyní se podíváme na to, jak Gentoo Linux i Linux obecně zachází s disky a souvisejícími věcmi, jako jsou třeba souborové systémy, diskové oddíly a bloková zařízení. Až budete s těmito věcmi srozuměni, provedeme Vás procesem vytvoření diskových oddílů a souborových systémů (filesystémů), na které později nainstalujete svůj Gentoo Linux.

Na začátku představíme bloková zařízení. Nejznámější z nich jsou zřejmě ta, která reprezentují první IDE zařízení v linuxovém systému, a to sice /dev/hda. Pokud používáte SCSI zařízení, váš první pevný disk bude /dev/sda.

Tato bloková zařízení poskytují abstraktní rozhraní pro přístup k disku. Uživatelské programy je mohou používat, aniž by se museli starat o to, jestli je Váš disk IDE, SCSI a nebo něco jiného - programy mohou disk používat prostě jako úložiště dat, jako množinu souvislých, libovolně přístupných bloků o velikosti 512 bajtů.

Diskové oddíly a svazky

I když můžete teoreticky použít celý disk pro uchování instalace svého systému, téměř nikdy se to tak nedělá. Namísto toho se celé blokové zařízení reprezentující disk rozdělí do několika menších, lépe spravovatelných částí, tvořících opět další bloková zařízení. Na amd64 systémech se jim říká diskové oddíly čili partition.

Diskové oddíly

Oddíly se dělí do tří typů: primární, rozšířený a logický.

Informace o primárních diskových oddílech je uchovány přímo v MBR (master boot record) disku. Protože je MBR velmi malý (512 bajtů), mohou být založeny pouze čtyři primární oddíly, například /dev/hda1/dev/hda4.

Rozšířený oddíl je speciální primární oddíl, který může obsahovat další oddíly. Původně rozšířené oddíly neexistovaly, ale protože se omezení na pouhé čtyři oddíly na disk ukázalo jako silně limitující, byl tento způsob zaveden jako zpětně kompatibilní metoda.

Logický oddíl sídlí v rozšířeném oddíle. Záznamy o logických oddílech nejsou součástí MBR, ale jsou uschovány uvnitř rozšířeného oddílu.

Návrh rozdělení disku Výchozí rozdělení disku

Pokud Vás nezajímají detaily návrhu rozdělení disku, můžete použít výchozí schéma, které používáme pro účely této příručky:

/dev/hda1ext232Mbootovací oddíl/dev/hda2(swap)512Moddíl pro swap/dev/hda3ext3zbytek diskuoddíl pro kořenový adresář
Oddíl Systém souborů Velikost Popis

Zajímá-li Vás, jak velké oddíly či svazky vytvářet nebo kolik jich je potřeba, čtěte dále, jinak pokračujte rozdělením disku podle části rozdělení disků - fdisk.

Kolik a jak velké?

Počet oddílů úzce závisí na Vašem prostředí. Máte-li kupříkladu hodně uživatelů, asi budete chtít vyhradit pro /home vlastní diskový oddíl pro zvýšení bezpečnosti a lepší zálohování. Pokud instalujete Gentoo na budoucí mailserver, měli byste mít oddělený /var, protože bude sloužit pro ukládání všech mailů. Dobrý výběr souborového systému poté zvýší výkon celého systému. Herní servery budou mít pravděpodobně oddělený /opt, protože většina herních serverů se instaluje právě tam. Důvody jsou podobné jako u /home: bezpečnost a zálohy.

Jak vidíte, velmi záleží na tom, čeho chcete dosáhnout. Oddělené oddíly nebo svazky mají tyto výhody:

  • můžete si vybrat nejlepší systém souborů pro každý oddíl či svazek
  • systému nedojde volné místo kvůli tomu, že jeden nefunkční nástroj začne nepřetržitě zapisovat soubory do oddílu či svazku
  • je-li to nezbytné, kontroly systému souborů mohou být zkráceny, protože se jich může provádět více paralelně (toto je velmi patrné zejména při konfiguracích s více fyzickými disky)
  • můžete zlepšit bezpečnost připojením některých oddílů či svazků v režimu pouze pro čtení, nosuid (ignorování setuid bitů), noexec (ignorování příznaků "spustitelný") atd.

Avšak více oddílů má jednu velkou nevýhodu: pokud není takové rozdělení provedeno správně, můžete skončit se systémem, který má hodně volného místa v jednom oddílu a žádné jinde. Navíc na SCSI a SATA existuje limit 15 oddílů na disk.

Jako ukázkové rozdělení Vám předvedeme 20GB disk používaný v demonstračním notebooku (obsahuje webserver, mailserver, GNOME,...):

$ df -h
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/hda5     ext3    509M  132M  351M  28% /
/dev/hda2     ext3    5.0G  3.0G  1.8G  63% /home
/dev/hda7     ext3    7.9G  6.2G  1.3G  83% /usr
/dev/hda8     ext3   1011M  483M  477M  51% /opt
/dev/hda9     ext3    2.0G  607M  1.3G  32% /var
/dev/hda1     ext2     51M   17M   31M  36% /boot
/dev/hda6     swap    516M   12M  504M   2% <not mounted>
(nerozdělené místo pro budoucí použití: 2 GB)

/usr je v našem příkladu poměrně plný (z 85%), ale jakmile máme programy nainstalované, /usr už moc neroste. Někteří si mohou myslet, že tolik místa pro /var je příliš, což však není tak docela pravda, protože Gentoo kompiluje všechny programy uvnitř /var/tmp/portage, takže by Váš /var měl mít alespoň 1GB volného místa, pokud nechcete kompilovat velké aplikace, a alespoň 3GB, pokud Vás nezastraší ani kompilace KDE či OpenOffice.org.

Rozdělení disků - fdisk

V následující části vysvětlíme, jak přenést ukázkové rozvržení oddílů na Váš pevný disk. Použijeme:

/dev/hda1bootovací oddíl/dev/hda2oddíl pro swap/dev/hda3oddíl pro kořenový adresář
Oddíl Popis

Změňte si toto rozvržení podle vlastních potřeb.

Zobrazení současného rozvržení oddílů

fdisk je populární a mocný nástroj k rozdělení disku na oddíly. Spusťte fdisk nad svým diskem (v našem příkladě použijeme /dev/hda):

# fdisk /dev/hda

Uvnitř nástroje fdisk budete uvítáni výzvou, která bude vypadat přibližně takto:

Command (m for help):

Zadejte p pro zobrazení současného rozvržení oddílů:

Command (m for help): p

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

Device Boot    Start       End    Blocks   Id  System
/dev/hda1             1        14    105808+  83  Linux
/dev/hda2            15        49    264600   82  Linux swap
/dev/hda3            50        70    158760   83  Linux
/dev/hda4            71      2184  15981840    5  Extended
/dev/hda5            71       209   1050808+  83  Linux
/dev/hda6           210       348   1050808+  83  Linux
/dev/hda7           349       626   2101648+  83  Linux
/dev/hda8           627       904   2101648+  83  Linux
/dev/hda9           905      2184   9676768+  83  Linux

Command (m for help):

Tento disk je nakonfigurován tak, aby uchovával sedm linuxových souborových systémů (každý oddíl je vypsán jako "Linux") a jeden oddíl pro swap (vypsáno jako "Linux swap").

Odstranění všech oddílů

Nejdříve z disku odstraníme všechny oddíly. Pro odstranění oddílu napište d. Chcete-li například odstranit stávající /dev/hda1:

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

Oddíl byl naplánován k odstranění. Již se neukáže, napíšete-li p, ale nebude vymazán, dokud nebudou změny uloženy. Pokud jste se spletli, ihned napište q a zmáčkněte Enter; Vaše oddíly nebudou odstraněny.

Nyní, chcete-li opravdu smazat všechny oddíly ve svém systému, opakovaně pište p (výpis tabulky oddílů) a poté d následované číslem oddílu k vymazání. Nakonec budete mít tabulku oddílů prázdnou:

Disk /dev/hda: 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):

Nyní je kopie tabulky oddílů v paměti, nad kterou program pracuje, prázdná, a můžeme tedy přistoupit k vytvoření oddílů podle již probraného schématu. Samozřejmě, pokud používáte vlastní rozvržení, nemůžete se řídit těmito instrukcemi do posledního slova.

Vytvoření bootovacího oddílu

Napřed vytvoříme malý bootovací oddíl. Pro vytvoření nového oddílu zmáčkněte n následované 1 pro výběr primárního typu oddílu. Program se Vás zeptá na první cylindr ("First cylinder"), zmáčkněte Enter. Na dotaz na poslední cylindr ("Last cylinder") napište +32M, aby měl oddíl velikost 32MB:

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): (zmáčkněte Enter)
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-3876, default 3876): +32M

Když nyní zadáte p, měli byste uvidět následující rozvržení:

Command (m for help): p

Disk /dev/hda: 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/hda1          1        14    105808+  83  Linux

Nyní musíte označit oddíl jako bootovací; dosáhnete toho napsáním a a 1. Vyberete-li znovu p, uvidíte * ve sloupci "Boot".

Vytvoření oddílu pro swap

Nyní vytvořme oddíl pro swap. Napište n pro nový oddíl, p pro výběr primárního typu oddílu, poté 2, protože se chystáte vytvořit druhý primární oddíl čili /dev/hda2. Při dotazu na první cylindr zmáčkněte Enter, při dotazu na druhý zadejte +512M, protože chcete vytvořit oddíl o velikosti 512MB. Poté vyberte t pro nastavení typu oddílu - napsáním 2 vyberete oddíl, který jste právě vytvořili, a poté zadejte 82, abyste nastavili jeho typ na "Linux Swap". Nakonec můžete vybrat p, abyste se přesvědčili, že tabulka oddílů vypadá podobně, jako tato:

Command (m for help): p

Disk /dev/hda: 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/hda1 *        1        14    105808+  83  Linux
/dev/hda2         15        81    506520   82  Linux swap
Vytvoření oddílu pro hlavní souborový systém

Nyní vytvořme oddíl pro uložení kořenového systému souborů, takzvanou "root partition". Nový oddíl vytvoříte napsáním n, poté p, aby fdisk věděl, že chcete vytvořit primární oddíl, a 3, neboť chcete vytvořit třetí primární oddíl, /dev/hda3. Při dotazu na první cylindr zmáčkněte Enter, totéž na dotaz o posledním, protože chcete, aby oddíl zabíral veškeré zbylé místo na disku. Nakonec se můžete pomocí p přesvědčit, jak jste to zvládli. Výsledek by měl vypadat přibližně takto:

Command (m for help): p

Disk /dev/hda: 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/hda1 *        1        14    105808+  83  Linux
/dev/hda2         15        81    506520   82  Linux swap
/dev/hda3         82      3876  28690200   83  Linux
Uložení rozvržení oddílů

Pro uložení provedených změn a ukončení programu fdisk napište w.

Command (m for help): w

Nyní máme připravené diskové oddíly, můžeme tedy přistoupit k vytvoření souborových systémů.

Vytvoření souborových systémů Úvod

Máte připravené diskové oddíly, je tedy čas na nich vytvořit systém souborů, filesystém. Pokud je Vám jedno, jaký filesystém si zvolit, a jste spokojeni s výchozí volbou, kterou používáme v této příručce, pokračujte vytvořením souborového systému na oddílu, jinak čtěte dále, abyste se dozvěděli o dostupných filesystémech.

Filesystémy?

K dispozici je několik filesystémů, z nichž některé jsou na amd64 stabilní, jiné ne. Za stabilní jsou považovány ext2 a ext3; jfs a reiserfs mohou pracovat, ale potřebují více testování. Pokud jste dobrodružné povahy, můžete zkusit nepodporované systémy souborů.

ext2 je pravý a vyzkoušený linuxový souborový systém, avšak nemá žurnálování metadat (metadata journaling), což znamená, že rutinní prohlídky filesystému při spuštění počítače mohou být časově poměrně náročné. Nyní je k dispozici široký výběr souborových systémů nové generace, u kterých probíhá kontrola konzistence velmi rychle a jsou proto všeobecně preferovány před svými nežurnálovými konkurenty. Žurnálové filesystémy zabraňují dlouhým prodlevám při spuštění počítače, kdy systém souborů nevypadá úplně v pořádku.

ext3 je žurnálovací verze souborového systému ext2, poskytující žurnálování metadat pro rychlou obnovu spolu s vylepšenými žurnálovacími režimy jako "full data journaling" a "ordered data journaling". ext3 je velmi dobrý a spolehlivý filesystém. Má možnost doplňkového indexování pomocí b-stromů, které umožňuje dosahovat vysokého výkonu v téměř každé situaci. Zkrátka a dobře, ext3 je výborný filesystém.

ReiserFS je souborový systém založený na B*-tree, který poskytuje velmi dobrý celkový výkon a vysoce předčí jak ext2, tak ext3, pokud jde o zpracování malých souborů (menších než 4kB), často i 10x až 15x. ReiserFS je také velmi dobře škálovatelný a má žurnálování metadat. Od kernelu 2.4.18 je ReiserFS stabilní a použitelný stejně dobře jako všeobecný systém souborů i v extrémních případech, jako je vytváření obrovských filesystémů, uchování mnoha malých souborů a nebo naopak velmi velkých souborů či adresářů obsahujících desetitisíce položek.

XFS je systém s žurnálováním metadat přicházející s širokou paletou možností, optimalizovaný pro škálovatelnost. Doporučujeme ho pouze na linuxové systémy s high-end SCSI nebo Fibre Channel zařízeními pro ukládání dat a s UPS. Protože XFS uchovává mnoho dat v RAM, špatně navržené programy (ty, které si nedávají dobrý pozor při zápisu na disk, a jejich poměrně hodně) mohou ztratit velké množství dat, pokud systém havaruje.

JFS je vysoce výkonný žurnálovací systém souborů od IBM. Teprve nedávno se stal připraveným k produkčnímu nasazení a tudíž ještě nemůže být jeho stabilita objektivně hodnocena, ať už pozitivně či negativně.

Vytvoření souborového systému na oddílu

Pro vytvoření systému souborů na diskovém oddíle jsou k dispozici tyto odpovídající nástroje:

ext2mke2fsext3mke2fs -jreiserfsmkreiserfsxfsmkfs.xfsjfsmkfs.jfs
Filesystém Příkaz k vytvoření

Chcete-li kupříkladu mít bootovací oddíl (v našem příkladu /dev/hda1) na ext2 a kořenový filesystém (/dev/hda3 dle příkladu) na ext3, použijete:

# mke2fs /dev/hda1
# mke2fs -j /dev/hda3

Nyní na nově vytvořených diskových oddílech založte souborové systémy.

Aktivace oddílu se swapem

mkswap je příkaz používaný k inicializaci oddílů se swapem:

# mkswap /dev/hda2

Pro aktivaci swap oddílu použijte swapon:

# swapon /dev/hda2

Vytvořte a aktivujte oddíl se swapem pomocí výše zmíněných příkazů.

Připojení souborových systémů

Nyní jsou oddíly připraveny a inicializovány, a je je tedy možno připojit, slouží k tomu příkaz mount. Nezapomeňte vytvořit nezbytné adresáře, do kterých budete připojovat každý vytvořený systém souborů. Jako příklad připojíme naše souborové systémy / a /boot:

Kvůli chybě v balíčku e2fsprogs je nutné, abyste použili volbu mount -t ext3, používáte-li ext3 filesystém.
# mount /dev/hda3 /mnt/gentoo
# mkdir /mnt/gentoo/boot
# mount /dev/hda1 /mnt/gentoo/boot
Chcete-li, aby Váš /tmp byl na odděleném oddílu, změňte po připojení jeho práva: chmod 1777 /mnt/gentoo/tmp. Toto platí i pro /var/tmp.

Také budeme potřebovat připojit souborový systém proc (virtuální rozhraní jádra) na /proc, avšak nejdříve musíme na nové filesystémy umístit naše soubory.

Pokračujte instalací instalačních souborů.