1.14 2005-02-20
Úvod do blokových zařízení Bloková zařízení

Nyní se podíváme na to, jak Gentoo Linux a Linux obecně zachází s disky a souvisejícími věcmi, jako je třeba souborový systém, 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 Váš 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 nebo SATA zařízení, váš první pevný disk bude /dev/sda.

Tato bloková zařízení reprezentují 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

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

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ána 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 (tj. rozšířený oddíl musí být jeden ze čtyř primárních oddílů), který může obsahovat více oddílů. Původně rozšířené oddíly neexistovaly, ale protože se počet čtyř oddílů ukázal jako nedostatečný, byl zaveden jako zpětně kompatibilní metoda.

Logický oddíl je 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.

Pokročilé metody ukládání dat

LiveCD pro x86 architekturu podporují EVMS a LVM2, metody zvyšující flexibilitu správy diskových oddílů. Během instalace se zaměříme na "běžná" schémata, ale je dobré vědět, že máte EVMS i LVM2 k dispozici.

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 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 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 může provádět více kontrol paralelně (tato výhoda ze 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ů.

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š, to 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 ani KDE či OpenOffice.org nezastraší.

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 Vaší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):

Napište 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 vypsán jako "Linux") a jedním oddílem pro swap (vypsán 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 nejsou 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 a číslo 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í napíšete 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. Napíšete-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ý cylindr napište +512M, protože chcete vytvořit oddíl o velikosti 512MB. Poté napište 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 typ oddílu na "Linux Swap". Poté můžete napsat 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 cylindru (neboť chcete, aby oddíl zabíral veškeré zbylé místo na disku). Poté 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 vytvořené 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 s 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?

Linuxové jádro podporuje mnoho různých souborových systémů. Vysvětlíme si ext2, ext3, ReiserFS, XFS a JFS, protože to jsou ty na linuxových strojích nejčastěji používané.

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 celkem časově 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 vytváření obrovských filesystémů, uchování mnoha malých souborů, nebo naopak velmi velkých souborů či adresářů obsahujících desetitisíce souborů.

XFS je systém s žurnálováním metadat přicházející s širokou paletou možností a je 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. 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í vytvořte systémy souborů na svých diskových oddílech či logických svazcích.

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.

# 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ů.