Na čistém disku lze hledat navěky.
Z pohledu diskového subsystému vás jako správce čeká skutečně nejvíc práce při instalaci operačního systému Linux, případně instalace jeho vyšší verze. Je potřeba vytvořit souborové systémy, do kterých se budou ukládat soubory, a vyhradit na discích prostor pro různé části systému.
Tato kapitola popisuje všechny tyto úvodní činnosti. Když tuto práci jednou podstoupíte a systém nastavíte, obvykle to už nebudete muset dělat znovu. Výjimkou je používání disket. K této kapitole se také budete vracet pokaždé, když budete přidávat nový pevný disk nebo pokud budete chtít optimálně vyladit diskový subsystém.
Mezi základní úkoly při správě disků patří:
Unix a tedy i Linux zná dva různé typy zařízení. Jednak bloková zařízení s náhodným přístupem (například disky) a jednak znaková zařízení (např. pásky a sériové linky). Znaková zařízení mohou být buď sériová, nebo s náhodným přístupem. Každému z podporovaných zařízení odpovídá v systému souborů jeden nebo několik speciálních souborů. Když se čtou či zapisují data z anebo do speciálního souboru, přenáší se ve skutečnosti na zařízení, které tento soubor reprezentuje. Takže pro přístup k zařízením nejsou nutné žádné zvláštní programy a žádné zvláštní programovací techniky (jako např. obsluha přerušení nebo nastavování parametrů sériového portu). Když například chcete vytisknout nějaký soubor na tiskárně, stačí zadat
$ cat jméno_souboru > /dev/lp1
$
Obsah tohoto souboru se vytiskne. Soubor musí mít přirozeně nějakou formu, kterou tiskárna zná. Avšak vzhledem k tomu, že není příliš rozumné, aby několik uživatelů současně kopírovalo soubory na jedinou tiskárnu, se pro tiskové úlohy běžně používá zvláštní program (nejčastěji lpr). Tento program zajistí, že se v určitém okamžiku bude tisknout pouze jeden soubor. Ihned po ukončení tiskové úlohy automaticky pošle na tiskárnu další ze souborů. Podobný mechanismus přístupu vyžaduje většina zařízení. Takže ve skutečnosti se běžný uživatel o speciální soubory skoro vůbec nemusí zajímat.Protože se zařízení chovají jako soubory souborového systému (uložené v adresáři /dev), lze velmi lehce zjistit, které speciální soubory existují. Lze použít například příkaz ls nebo jiný vhodný program. v prvním sloupci výstupu příkazu ls .l je uvedený typ takového souboru a jeho přístupová práva. Chcete-li si prohlédnout sériová zařízení systému, zadáte
$ ls .l /dev/cua0
crw.rw.rw. 1 root uucp 5, 64 Nov 30 1993 /dev/cua0
$
Podle prvního písmene prvního sloupce, tedy písmene "c" v řetězci "crw.rw.rw.", informovaný uživatel pozná o jaký typ souboru jde. V tomto případě se jedná o znakové zařízení. U běžných souborů je prvním písmenem ".", u adresářů je to "d" a pro bloková zařízení se používá písmeno "b". Podrobnější informace uvádí manuálová stránka k příkazu ls. Všimněte si, že všechny speciální soubory obvykle existují, i když zařízení samotné není nainstalované. Takže například pouhý fakt, že v systému souborů je soubor /dev/sda, neznamená, že skutečně máte pevný disk SCSI. Díky tomu, že všechny speciální soubory po instalaci operačního systému existují, lze zjednodušit instalační programy. Méně složité je tím pádem i přidávání nových hardwarových komponent (pro nově přidávané součásti již není třeba hledat správné parametry a vytvářet speciální soubory).
Tento odstavec zavádí terminologii, která se v oblasti pevných disků používá. Znáte-li tyto pojmy a principy, můžete tuto část přeskočit. Na obrázku 4.1 jsou schematicky znázorněny důležité části pevného disku, který se skládá z jedné nebo více kruhových desek. Jedna případně obě strany těchto desek, jsou pokryty magnetickou vrstvou, na kterou se zaznamenávají data. Každé takovéto vrstvě odpovídá jedna čtecí a zapisovací hlava, která čte nebo zaznamenává údaje. Disky rotují kolem běžné hřídele. Typická rychlost otáčení je 3600 otáček za minutu. Pevné disky s vysokým výkonem používají i vyšší rychlosti. Hlavy se pohybují po obvodu disků. Díky tomuto pohybu spojenému s rotací kruhových desek může hlava přistupovat ke všem částem magnetických povrchů pevných desek disku.
Procesor (CPU) a vybraný disk spolu komunikují prostřednictvím řadiče disku. Díky řadiči se zbytek systému nemusí zajímat o to, jak pracovat s diskem, protože lze použít pro různé typy disků řadiče, jež mají pro ostatní součásti počítače stejné rozhraní. Takže počítač může disku (místo zadávání sérií dlouhých a složitých elektrických signálů, podle nichž se hlava nejdřív přesune na odpovídající místo disku, pak čeká, až se pod ni dostane žádaná pozice a dělá další nepříjemností, které je pro danou operaci potřeba) jednoduše vzkázat "hele milý disku, dej mně to, co potřebuji". (Ve skutečnosti je sice rozhraní řadiče stejně dost složité, ale rozhodně ne tak složité, jako by bylo v případě, kdyby ostatní prvky systému přistupovaly k disku přímo.) Řadič navíc dělá některé další operace, obsluhuje například vyrovnávací paměť, automaticky nahrazuje vadné sektory atd.
Výše uvedené obvykle každému postačí k pochopení toho, jak hardware pevného disku funguje. Existuje pochopitelně ještě řada dalších detailů, např. řízení motoru, který otáčí disky a přemísťuje hlavy, elektronika, jež řídí operace dalších mechanických částí atd., které ale většinou nejsou pro pochopení principu práce pevného disku tak důležité.
Magnetické vrstvy disku jsou obvykle rozděleny do soustředných kružnic, kterým se říká stopy (angl. tracks). Stopy jsou po obvodu rozděleny na sektory. Toto rozdělení se používá pro určování místa na disku a přidělování diskového prostoru souborům. Když například chcete na disku najít určité místo, zadáte "souořadnice": "vrstva 3, stopa 5, sektor 7". Počet sektorů je většinou pro všechny stopy stejný, ale některé pevné disky mají na vnějších stopách víc sektorů (všechny sektory mají stejnou fyzickou velikost, takže většina z nich je umístěna na delších, vnějších stopách). Typicky bude v jednom sektoru uloženo 512 bajtů dat. Disk samotný pak neumí pracovat s menším množstvím dat, než je jeden sektor. Každá vrstva je rozdělena na stopy a sektory stejným způsobem. Takže když je hlava jedné vrstvy nad určitou stopou, hlavy ostatních povrchů se také nachází nad odpovídajícími stopami. Všem těmto stopám dohromady se říká cylindr. Přemístění hlavy z jedné stopy (cylindru) na jinou trvá jistou dobu. Takže ukládáním dat, ke kterým se často přistupuje najednou (například data jednoho souboru) na stejný cylindr, se zamezí zbytečnému přesouvání hlav při jejich pozdějším čtení. Snižuje se přístupová doba a zvyšuje výkon. Není ale vždycky možné uložit data na disk tímto způsobem. Souborům, které jsou na disku uložené na několika místech, se říká fragmentované.
Počet vrstev (resp. hlav, což je to samé), cylindrů a sektorů se dost liší. Specifikace jejich počtu se nazývá geometrií pevného disku. Geometrie je obvykle uložena ve zvláštní bateriemi zálohované oblasti paměti, které se říká CMOS RAM. Z paměti CMOS RAM si geometrii disku operační systém načítá vždy během zavádění nebo inicializace ovladače disku.
Na neštěstí má BIOS omezení, které neumožňuje adresovat v CMOS RAM počet stop větší, než 1024. To je pro pevné disky velké kapacity příliš málo. Uvedené omezení lze obejít tak, že řadič pevného disku nebude říkat ostatním prvkům výpočetního systému pravdu o jeho skutečné geometrii a bude překládat adresy, které zbytek systému požaduje, do něčeho, co odpovídá realitě. Mějme například pevný disk, jenž má 8 hlav, 2048 stop a 35 sektorů na stopu. Řadič tohoto disku bude zbytku systému "lhát" a tvrdit, že má 16 hlav, 1024 stop a 35 sektorů na stopu, což nepřekračuje omezení v počtu stop. Pak bude při každém požadavku systému na přístup k disku překládat adresu, kterou dostane tak, že počet hlav vydělí dvěma a počet stop dvěma vynásobí. Matematické úpravy budou v praxi složitější, protože skutečná čísla nejsou tak "pěkná", jako v uvedeném příkladě. Ale nezbývá než zopakovat, že detaily nejsou tak důležité pro pochopení principu. Překládání adres zkresluje pohled operačního systému na to, jak je disk ve skutečnosti organizovaný. To je nepraktické, protože nelze pro snížení přístupové doby a zvýšení výkonu použít "trik" s ukládáním všech souvisejících dat na jeden cylindr.
Překlady adres jsou výlučně problémem disků typu IDE. Disky typu SCSI používají sekvenční čísla sektorů. To znamená, že řadič disku SCSI překládá každé sekvenční číslo sektoru na uspořádanou trojici [hlava, cylindr, sektor]. Navíc používá úplně jinou metodu komunikace s CPU, a proto jsou disky SCSI těchto problémů ušetřeny. Uvědomte si ale, že ani u disků SCSI počítač nezná jejich skutečnou geometrii.
Vzhledem k tomu, že operační systém Linux obvykle nezná skutečnou geometrii disku, nebudou se ani jeho souborové systémy pokoušet ukládat soubory na stejné cylindry. Místo toho se pokusí souborům přidělit sekvenčně řazené sektory. Tato metoda téměř vždy zaručí podobný výkon, jakého lze dosáhnout při ukládání souvisejících dat na jeden cylindr. Celá problematika je o něco složitější, řadiče například využívají vlastní vyrovnávací paměti, nebo mechanismus automatického, řadičem řízeného "poednaeítán". sekvenčně řazených sektorů atd.
Každý pevný disk je v systému reprezentován samostatným speciálním souborem. Nejčastěji budou v systému buď dva, nebo čtyři pevné disky IDE. Zastupují je pak speciální soubory /dev/hda, /dev/hdb, /dev/hdc, případně /dev/hdd. Pevné disky SCSI reprezentují speciální soubory /dev/sda, /dev/sdb atd. Podobné konvence týkající se názvů speciálních souborů platí i pro pevné disky jiných typů. Podrobnější informace uvádí [Anv]. Pamatujte na to, že speciální soubory zastupující pevné disky umožňují přístup k disku jako celku, bez ohledu na jeho diskové oblasti (o těch bude řeč později). Není proto těžké při práci s disky pochybit. Neopatrnost může v tomto případě vést ke ztrátě dat. Speciální soubory disků se obvykle používají pouze pro přístup k zaváděcímu sektoru disku (angl. master boot record, zkráceně MBR), o kterých se také dozvíte víc v dalších částech této kapitoly.
Disketa sestává z pružné membrány pokryté z jedné nebo obou stran podobnou magnetickou substancí, jako pevný disk. Pružný disk samotný nemá čtecí a zápisovou hlavu, ta je součástí disketové mechaniky. Disketa vlastně odpovídá jedné desce pevného disku, ale na rozdíl od pevného disku je vyměnitelná. Jednu disketovou mechaniku lze využít pro přístup k různým disketám, kdežto pevný disk je jedinou nedílnou jednotkou.
Podobně jako pevný disk se i disketa dělí na stopy a sektory. Dvě korespondující si stopy každé strany diskety tvoří cylindr. Počet stop a sektorů je ale pochopitelně o hodně nižší, než u pevného disku.
Disketová jednotka umí obvykle pracovat s několika různými typy disket. Například 3,5palcová disketová mechanika může pracovat jak s disketami o velikosti 720 kB, tak 1,44 MB disketami. Vzhledem k tomu, že disketová jednotka musí zacházet s každým typem diskety trochu jinak, musí i operační systém vědět, který typ diskety je zrovna zasunutý v mechanice.
Proto existuje pro jednotky pružných disků množství speciálních souborů, a to vždy jeden pro každou kombinaci typu disketové jednotky a typu diskety. Takže soubor /dev/fd0H1440 pak reprezentuje první disketovou jednotku (fd0). Musí to být 3,5palcová mechanika pracující s 3,5palcovšmi disketami vysoké hustoty záznamu (proto H v názvu zařízení) s kapacitou 1 440 kB (proto 1440 ve jménu speciálního souboru). To jsou běžné 3,5palcové diskety HD (High Density).
Podrobnější informace o konvencích pro pojmenovávání speciálních souborů reprezentujících disketové mechaniky uvádí [Anv].
Konstrukce tvorby názvů speciálních souborů zastupujících disketové jednotky je poměrně složitá. Proto má Linux pro diskety i zvláštní typy zařízení. Tato zařízení automaticky detekují typ diskety zasunuté v mechanice. Fungují tak, že se při požadavku na přístup pokouší přečíst první sektor vložené diskety, přičemž postupně zkouší jejich různé typy, až se jim podaří najít ten správný. Samozřejmě, podmínkou je, aby vložená disketa byla nejdřív naformátovaná. Automatická zařízení zastupují speciální soubory /dev/fd0, /dev/fd1 atd.
Parametry, které tato automatická zařízení používají pro přístup k disketám, lze nastavit také programem setfdprm. To se může hodit jednak v případě, že používáte diskety, jež nemají běžnou kapacitu, to znamená, že mají neobvyklý počet sektorů, dále v případě, že autodetekce z neznámých důvodů selže a nebo když vlastní speciální soubor chybí.
Kromě toho, že Linux zná všechny standardní formáty disket, umí pracovat i s množstvím nestandardních formátů. Některé z nich ale vyžadují speciální formátovací programy. Touto problematikou se teď nebudeme zabývat a doporučíme projít si soubor /etc/fdprm. Ten blíže specifikuje nastavení, která program setfdprm podporuje.
Operační systém musí vědět o tom, že byla disketa v mechanice vyměněna. Jinak by totiž mohl například použít data z dříve vložené diskety, uložená ve vyrovnávací paměti. Bohužel vodič, jenž se používá k signalizaci všměny diskety, bývá někdy poikozený. Při používání disketové jednotky v systému MS-DOS nebude mechanika vůbec schopná indikovat systému všměnu média, což je ještě horší situace. Jestli jste se někdy setkali s podivnými, zdánlivě nevysvětlitelnými problémy při práci disketami, jejich příčinou mohla být právě nefunkční indikace všměny média. Jediným způsobem, jak lze tyto problémy odstranit, je nechat disketovou mechaniku opravit.
Jednotky CD.ROM čtou opticky data z plastických disků. Informace jsou zaznamenány na povrchu těchto disků jako miniaturní "dolíčky" seřazené v husté spirále, jež začíná uprostřed disku a končí na jeho okraji. Jednotka vysílá laserový paprsek, který čte data z disku tak, že sleduje tuto spirálu. Od hladkého povrchu disku se odráží jinak, než když narazí na dolík. Tímto způsobem lze jednoduše kódovat binární informace. Ostatní je prostě pouhá mechanika.
Ve srovnání s pevnými disky jsou jednotky CD.ROM pomalé. Pevné disky mají průměrnou přístupovou dobu typicky menší než 15 milisekund, kdežto rychlá jednotka CD.ROM bude data vyhledávat s přístupovou dobou řádově v desetinách sekundy. Skutečná rychlost přenosu dat je ale celkem vysoká, zhruba kilobajt za sekundu. To, že je jednotka CD-ROM "pomalá", znamená, že ji nelze pohodlně využít jako alternativu pevných disků, i když to samozřejmě možné je. Některé distribuce Linuxu totiž nabízejí tzv. "live" souborové systémy na CD.ROM. Ty fungují tak, že část souborů se při instalaci nekopíruje na pevný disk a v případě potřeby se čtou přímo z kompaktního disku. Instalace je pak jednodušší, méně časově náročná a ušetří se také značná část diskového prostoru. Jednotky CD.ROM lze s výhodou využít při instalaci nového programového vybavení, protože při instalování není vysoká rychlost určujícím faktorem.
Je několik způsobů jak se data na disky CD.ROM ukládají. Nejrozšířenější z nich upravuje mezinárodní standard ISO 9660. Tato norma definuje minimální souborový systém, který je ještě o něco primitivnější, než systém souborů používaný systémem MS-DOS. Na druhou stranu je souborový systém ISO 9660 tak jednoduchý, že by s ním měly - jako se svšm původním - umět bez problémů pracovat všechny operační systémy.
Pro běžnou práci v Unixu je ale souborový systém ISO 9660 prakticky nepoužitelný. Proto se zavedlo rozšíření tohoto standardu, kterému se říká "Rock Ridge extensionin. Rock Ridge například umožňuje používat dlouhá jména souborů, symbolické linky a mnoho dalších vymožeností, díky kterým se disk CD.ROM tváří víceméně jako unixovš souborový systém. Navíc, rozšíření Rock Ridge zachovává kompatibilitu se Souborovým systémem ISO 9660, takže je použitelné i v jiných než unixových systémech. Operační systém Linux podporuje jak ISO 9660, tak Rock Ridge extension. Rozšíření rozezná a dále používá zcela automaticky.
Souborový systém je ale pouze jednou stranou mince. Většina disků CD.ROM často obsahuje data, ke kterým lze přistupovat všhradně pomocí zvláštních programů. Bohužel většina těchto programů není určena pro Linux (možná s všjimkou některých programů, jež běží pod dosemu, linuxovšm emulátorem systému MS-DOS).
K jednotce CD.ROM se také přistupuje prostřednictvím odpovídajícího speciálního souboru. Je několik způsobů jak připojit jednotku CD.ROM k počítači: buď rozhraním SCSI, nebo pomocí zvukové karty, nebo rozhraním EIDE. Popis dalších podrobností technického řešení jed notlivých způsobů připojení jednotky CD-ROM jdou nad rámec této knihy. Pro vás je podstatné, že podob ně jako u jednotek pružných disků určuje způsob připojení vždy jiný speciální soubor. Další podrobnosti, které by mohly více objasnit tuto problematiku, uvádí [Anv].
Magnetopáskové jednotky používají pásky podobné těm, které se používají pro záznam zvuku na magnetofonových kazetách. Páska je již svou povahou sériovšm zařízením - aby bylo možné dostat se k některé její části, je nejdřív nutné projít všechny předchozí záznamy.
K údajům na disku lze přistupovat náhodně, takže je možné "skočitiv přímo na kterékoliv místo na něm. Sériovš přístup k datům na páskách je příčinou toho, že jsou pomalé. Na druhou stranu jsou relativně levné, což kompenzuje nedostatky v rychlosti. Bez problému je lze vyrobit dost dlouhé, takže je na ně možno uložit velké množství dat. To vše předurčuje pásková zařízení k archivaci a zálohování, u nichž se nevyžaduje vysoká rychlost, ale naopak, využívá se nízkých nákladů a velké kapacity.
Formátování je procedura zápisu značek, které se používají na označení stop a sektorů na magnetickém médiu. Předtím, než je disk naformátován, jsou magnetické signály na jeho povrchu neuspořádané, chaotické. Formátování do tohoto chaosu vnáší určitý řád. Načrtnou se - obrazně řečeno - linie, ve kterých vedou stopy a ty se pak rozdělí na sektory. Skutečné podrobnosti jsou trochu jiné, ale to není pro tuto chvíli podstatné. Důležité je to, že disk nelze používat bez toho, že by byl naformátován.
Pokud jde o formátování, je terminologie mírně zavádějící. v systému MS-DOS se pod pojmem "formátování" rozumí i proces vytváření souborového systému (o němž bude řeč později). Takže se obě tyto procedury označují jediným pojmem - obzvlášť u disket. Když je nutné je rozlišit, používá se pro formátování v pravém slova smyslu termín nízkoúrovňové formátování (angl. low.level formatting) a pro vytvoření souborového systému označení vysokoúrovňové formátování (angl. high.level formatting). Terminologie používaná v unixovém světě označuje obě tyto činnosti tradičními pojmy "formátování" a "vytvoření souborového systému". Nejinak tomu bude i v této knize.
Disky IDE a některé disky SCSI jsou formátovány ve výrobě a není třeba je po připojení formátovat opakovaně. Možná proto se o formátování disků málokdo zajímá. Ale právě nesprávné formátování pevného disku může být skutečnou příčinou toho, že disk nepracuje správně (některé disky vyžadují zvláštní způsob formátování, který pak umožňuje například automatické přemísťování vadných sektorů).
Navíc disky, které je potřeba (a které lze) formátovat často, vyžadují speciální formátovací programy, protože rozhraní formátovací logiky zabudované v jednotce se liší od jednoho typu disku k druhému. Takovéto formátovací programy jsou často buď součástí řadiče BIOS, nebo běží pouze pod systémem MS-DOS. Ani jeden z těchto prostředků tedy nelze bez problémů použít v systému Linux.
V průběhu formátování můžete narazit na chybná místa na disku, kterým se říká vadné bloky nebo vadné sektory. S vadnými bloky si někdy poradí samotný řadič pevného disku, ale v případě, že se jich objeví víc, je potřeba nějakým opatřením zamezit možnému použití těchto vadných částí disku. Mechanismus, který problém vadných bloků řeší, je součástí souborového systému. Způsob, jakým systém souborů pracuje s informacemi o vadných sektorech, je popsaný v dalších částech této kapitoly. Jinou alternativou je vytvoření malé diskové oblasti (partition), která by obsahovala pouze vadné bloky disku. Takovýto alternativní postup je vhodný zejména v případě, že je rozsah vadných sektorů velmi velký. Souborové systémy totiž mohou mít s rozsáhlými oblastmi vadných bloků problémy.
Diskety se formátují programem fdformat. Speciální soubor, který se má formátovat, se zadává jako jeho parametr. Následujícím příkazem bychom například zformátovali 3,5 palcovou disketu s vysokou hustotou záznamu, vloženou do první disketové jednotky:
$ fdformat /dev/fd0H1440
Double.sided, 80 tracks, 18 sec/track. Total capacity 1440 kB.
Formatting ... done
Verifying ... done
$
Pamatujte si, že když chcete použít zařízení s autodetekcí (např. /dev/fd0), musíte nejdříve nastavit parametry zařízení pomocí programu setfdprm. Stejný všsledek jako v prvním příkladě mají příkazy:
$ setfdprm /dev/fd0 1440/1440
$ fdformat /dev/fd0
Double.sided, 80 tracks, 18 sec/track. Total capacity 1440 kB.
Formatting ... done
Verifying ... done
$
Je obvykle výhodnější vybrat správný speciální soubor, jenž odpovídá typu diskety. Zapamatujte si, že není rozumné formátovat disketu na vyšší kapacitu než je ta, pro kterou je určena. Program fdformat zároveň prověří disketu - zkontroluje, zda neobsahuje vadné bloky. Pokud narazí na vadný blok, opakovaně se pokusí vadný blok použít (obvykle to uslyšíte - zvuky, které jednotka při formátování vydává, se dramaticky změní). Je-li na disketě pouze logická chyba (špatná úroveň signálu po zápisu znečištěnou zápisovou hlavou), program fdformat si nebude "stěžovat". Naopak skutečná chyba - fyzicky poškozený sektor, přeruší proces kontroly povrchu diskety a jejího formátování. Jádro systému zapíše hlášení do log-souboru po každé vstupně/výstupní chybě, na kterou při formátování narazí. Tato hlášení se zároveň objeví na konzole. Když běží program syslog, zapisují se tato hlášení také do souboru /var/log/messages. Samotným programem fdformat uživatel nezjistí, kde přesně se vadný blok nachází (obvykle to ani nikoho nezajímá - diskety jsou tak levné, že se ty vadné automaticky vyhazují).
$ fdformat /dev/fd0H1440
Double.sided, 80 tracks, 18 sec/track. Total capacity 1440 kB.
Formatting ... done
Verifying ... read: Unknown error
$
Vadné bloky na disku nebo diskové oblasti (i disketě) lze vyhledat pomocí příkazu badblocks. Ten ale neumí disk zformátovat, takže jej lze použít jenom ke kontrole existujících souborových systémů. Níže uvedený příklad hledá chyby na 3,5palcové disketě se dvěma vadnými bloky:
$ badblocks /dev/fd0H1440 1440
718
719
$
Výstupem příkazu badblocks jsou čísla vadných sektorů. Většina souborových systémů umí takovéto vadné bloky označit jako nepoužitelné. Systémy souborů udržují seznam, tabulku vadných sektorů, která se zakládá, když se systém souborů vytváří. Tento seznam pak lze kdykoliv měnit. První kontrola vadných bloků se dělá příkazem mkfs, jimž se vytváří souborový systém. Další kontroly se dělají programem badblocks a nové chybné bloky se přidávají do seznamu vadných bloků příkazem fsck. Příkazy mkfs a fsck popíšeme později.
Řada moderních disků umí automaticky zjistit výskyt vadných bloků a pokouší se "opravit" je tak, že místo nich použije k těmto účelům zvlášť vyhrazené správné sektory. Mechanismus náhrady chybného bloku správným je pro operační systém transparentní. Takováto vlastnost diskové jednotky by měla být dokumentovaná v jejím manuálu. V něm byste měli najít podrobnější informace o způsobu jak zjistit, jestli se na disku, který používáte, vyskytují vadné bloky, které řadič disku popsaným způsobem nahradil správnými sektory. Avšak i disky tohoto typu by teoreticky mohli selhat, kdyby počet vadných bloků výrazně vzrostl. Nicméně je pravděpodobnější, že než by se tak stalo, byl by disk již tak opotřebovaný, že by byl prakticky nepoužitelný.
Pevný disk může být rozdělen na několik diskových oblastí, neboli segmentů (angl. partitions). Každá oblast se chová tak, jako by byla samostatným diskem. Využití diskových oblastí má všznam v případě, že máte jeden pevný disk a chcete na něm používat například dva operační systémy. Disk můžete rozdělit na dva segmenty. Každý operační systém pak bude používat vlastní diskovou oblast a nebude zasahovat do druhé. Takto mohou oba operační systémy v klidu a míru koexistovat na jediném disku. Kdybyste nepoužili rozdělení disku na samostatné diskové oblasti, museli byste zakoupit pevný disk pro každý z operačních systémů.
Diskety se na segmenty nedělí. Z technického hlediska to možné je, ale vzhledem k tomu, že mají malou kapacitu, by oblasti byly prakticky využitelné jenom v ojedinělých případech. Ani disky CD.ROM se obvykle nedělí na oblasti, protože je praktičtější je používat jako jeden velký disk a skutečně málokdy je potřeba mít na jednom disku CD-ROM uloženo několik operačních systémů.
Informace o tom, jak je pevný disk rozdělen na diskové oblasti, je uložena v prvním sektoru (to jest, prvním sektoru první stopy první vrstvy disku). První sektor je tzv. zaváděcí sektor disku (angl. master boot record, zkráceně MBR). Je to sektor, který se načítá a spouští systémem BIOS pokaždé, když se počítač spustí. Zaváděcí sektor disku obsahuje krátký program, jenž načte tabulku rozdělení disku na oblasti (angl. partition table) a zjistí, která oblast disku je aktivní (tedy označená jako zaváděcí). Pak přečte první sektor této oblasti, neboli zaváděcí sektor (angl. boot sector) této oblasti. (MBR je také zaváděcí sektor, ale má zvláštní postavení, a proto i zvláštní označení.) Zaváděcí sektor diskového segmentu obsahuje další krátký program, který načítá první část operačního systému, jenž je na této diskové oblasti uložený (samozřejmě za předpokladu, že je daná oblast označena jako aktivní - zaváděcí) a spouští jej.
Metoda dělení disku na diskové oblasti není hardwarově implementovaná a není ani součástí systému BIOS. Jde čistě o nepsaná pravidla podporovaná i jinými operačními systémy. Ale ne všechny operační systémy se chovají podle těchto konvencí, jsou i výjimky. Některé operační systémy sice podporují dělení disku na diskové oblasti, ale obsadí jeden diskový segment a v rámci této oblasti používají svou vlastní interní metodu dělení. Avšak i tyto typy operačních systémů mohou bez jakýchkoliv zvláštních prostředků spolupracovat s jinými systémy (včetně operačního systému Linux). Naopak, takový operační systém, jenž rozdělení disku na diskové oblasti nepodporuje, nemůže koexistovat na stejném pevném disku s jiným operačním systémem, který tyto konvence podporuje.
Je dobré si na kousek papíru vypsat tabulku rozdělení disku na oblasti. Kdyby pak náhodou v budoucnu došlo k poškození některé oblasti, nemusíte díky tomuto jednoduchému bezpečnostnímu opatření přijít o všechna data. (Poškozenou tabulku oblastí lze opravit programem fdisk.) Některé důležité informace získáte příkazem fdisk .l:
$ fdisk .l /dev/hda
Disk /dev/hda: 15 heads, 57 sectors, 790 cylinders
Units = cylinders of 855 * 512 bytes
Device Boot Begin Start End Blocks Id system
/dev/hda1 1 1 24 10231+ 82 Linux swap
/dev/hda2 25 25 48 10260 83 Linux native
/dev/hda3 49 49 408 153900 83 Linux native
/dev/hda4 409 409 790 163305 5 Extended
/dev/hda5 409 409 744 143611+ 83 Linux native
/dev/hda6 745 745 790 19636+ 83 Linux native
$
Původní schéma dělení disků počítačů PC na diskové oblasti umožňuje vytvořit pouze čtyři diskové segmenty. To se záhy v praxi ukázalo jako nedostatečné. Zčásti například proto, že někteří uživatelé chtěli mít na svém počítači i víc než čtyři operační systémy (Linux, MS-DOS, OS/2, Minix, FreeBSD, NetBSD nebo Windows/NT, a to jsme vyjmenovali jenom některé), ale především proto, že je všhodné mít několik diskových oblastí i pro jeden operační systém. Například z důvodů zlepýení odezvy operačního systému je lepší nevyužívat pro odkládací prostor systému Linux hlavní diskovou oblast operačního systému, ale mít prostor pro "swapid na samostatném diskovém segmentu (podrobnosti uvádíme v dalších částech manuálu).
Aby bylo možné omezení počtu diskových oblastí obejít, byly zavedeny tzv. rozšířené diskové oblasti (angl. extended partitions). Tento trik umožňuje rozdělit primární diskové oblasti (angl. primary partitions) na podoblasti. Takto rozdělená primární oblast je onou rozšířenou oblastí a její části (podoblasti) jsou tzv. logické oblasti (angl. logical partitions).
Chovají se jako primární, ale jsou vytvořené jiným způsobem. Není mezi nimi ale žádný rozdíl v rychlosti.
Struktura oblastí pevného disku by mohla vypadat například tak, jak je uvedeno na obrázku 4.2. Disk je rozdělen na tři primární diskové oblasti. Druhá z nich je rozdělena na dvě logické diskové oblasti. Část disku nepatří vůbec žádné oblasti. Disk jako celek a každá primární oblast má svůj zaváděcí sektor.
Tabulky oblastí disku (jedna v MBR a další na roziíoených diskových oblastech) mají vyhrazený jeden bajt pro každou oblast, jež identifikuje její typ. Typ diskové oblasti určuje operační systém, který daný segment využívá, případně jiný účel, pro který tuto oblast operační systém používá (např. odkládací prostor "swapir). Informační bajt by měl zamezit tomu, aby mohly být v počítačovém systému nainstalovány dva operační systémy, které by náhodně využívaly stejnou oblast disku. Avšak ve skutečnosti většina operačních systémů označení typu diskové oblasti ignoruje. I Linux se například vůbec nezajímá o to, jak je určitá disková oblast označená. Dokonce - což je ještě horší, některé operační systémy tento bajt používají nesprávně. Například přinejmenším některé verze systému DR.DOS ignorují všznamnijií část tohoto bajtu, kdežto zbylé ne.
Žádný z úřadů pro normalizaci nespecifikoval, co která hodnota bajtu znamená. Některé obecně přijaté hodnoty a odpovídající typy uvádí tabulka 4.1. Stejný seznam vypíýe linuxovš program fdisk.
Je mnoho programů, které umí vytvářet a mazat diskové oblasti. Součástí většiny operačních systémů je nějaký nástroj pro práci s diskovšmi segmenty. Je vždy lepší používat program, jenž je součástí operačního systému, v prostředí kterého se segmenty pracujete. Pouze v případě, že by se tento program choval nezvykle, se doporučuje použít jiný. Většinou se tyto programy jmenují fdisk (včetně toho, který je součástí distribuce systému Linux) nebo nějak podobně. Detaily týkající se možností linuxového programu fdisk podrobně popisuje jeho manuálová stránka. Podobný je příkaz cfdisk, který má hezčí, celoobrazovkové uživatelské rozhraní.
0 Nevyužitá oblast 40 Venix 80286 94 Amoeba BBT 1 DOS (12bit. FAT) 51 Novell? a5 BSD/386 2 XENIX (oblast "root") 52 Microport b7 BSDI fs 3 XENIX (oblast "usr") 63 GNU HURD b8 BSDI swap 4 DOS (16bit) < 32M 64 Novell c7 Syrinx 5 Rozšířená oblast 75 PC/IX db CP/M 6 DOS (16bit) > 32M 80 Starší MINIX e1 DOS (přístupná) 7 OS/2 HPFS 81 Linux/MINIX e3 DOS (pouze pro čtení) 8 AIX 82 Linux swap f2 DOS (sekundární) 9 AIX zaváděcí 83 Linux nativní ff BBT a OS/2 Boot Manager 93 Amoeba
Typy diskových oblastí (výstup programu fdisk pro Linux) |
V případě, že používáte disky IDE, musí být celá zaváděcí disková oblast (tedy segment, na kterém jsou uloženy soubory obrazů jádra) na prvních 1024 cylindrech. To proto, že při zavádění operačního systému (předtím, než systém přechází do chráněného režimu) používá disk systém BIOS a ten neumí pracovat s více než 1024 cylindry. V některých případech je možné používat zaváděcí diskovou oblast, která leží na prvních 1024 cylindrech, jenom zčásti. To je možné jenom když budou uloženy na prvních 1024 cylindrech všechny soubory, které při inicializaci čte systém BIOS. Vzhledem k tomu, že takovéhoto uspořádání je velmi obtížné dosáhnout, je lepší jej vůbec nepoužívat - nikdy si totiž nemůžete být jistí, zda změna parametrů jádra systému nebo defragmentace disku nezpůsobí, že systém nebude vůbec možné zavést. Proto se raději vždy ujistěte, že je zaváděcí oblast vaýeho systému celá na prvních 1024 cylindrech. Některé nové verze systémů BIOS a disků IDE již umí pracovat i s disky, které mají více než 1024 cylindrů. Máte-li takovýto systém, můžete na tento problém zapomenout. Jestli si v tom nejste zcela jisti, umístněte raději podle doporučení zaváděcí diskovou oblast na prvních 1024 cylindrů.
Každá disková oblast by měla mít sudý počet sektorů, protože souborové systémy Linuxu používají bloky velikosti 1 kB, tedy dva sektory. Lichý počet sektorů diskové oblasti způsobí, že poslední sektor bude nevyužitý. Nemělo by to způsobit žádné zvláštní problémy, ale není to příliš elegantní. Některé verze programu fdisk vás budou na tento stav upozorňovat.
Při změně velikosti diskové oblasti je nejlepší vytvořit zálohu všeho, co chcete z tohoto segmentu disku uchovat (pro každý případ raději celý disk nebo oblast), pak tento segment smazat, vytvořit nový a obnovit na nové diskové oblasti soubory ze zálohy. Chcete-li zvětýit velikost diskové oblasti, budete muset pravděpodobně upravit i velikosti (tedy vytvořit zálohy a obnovit soubory) sousedních diskových oblastí.
Vzhledem k tomu, že změny velikostí diskových oblastí jsou dost pracné, je lepší nastavit je správně hned napoprvé. Jinak budete potřebovat efektivní a jednoduchý systém zálohování.
Instalujete-li poprvé systém z médií, jež nevyžadují časté zásahy obsluhy (například z CD.ROM - protikladem jsou diskety), je často jednoduýší si nejdřív pohrát s různými konfiguracemi. Jelikož zatím na disku nemáte žádná data, která by bylo potřeba zálohovat, není natolik bolestné několikrát změnit velikosti diskových oblastí.
Existuje program pro systém MS-DOS, který se jmenuje fips, a ten umí změnit velikosti diskových oblastí systému MS-DOS bez toho, že by bylo potřeba zálohovat, mazat a obnovovat soubory z těchto segmentů. Pro jiné souborové systémy je to zatím nadále nevyhnutné.
Každá disková oblast a rozšířená disková oblast má svůj vlastní speciální soubor. Podle konvence pro konstrukci názvů speciálních souborů se číslo diskové oblasti připojí za jméno celého disku s tím, že 1-4 budou primární diskové oblasti (podle toho kolik primárních oblastí bylo vytvořeno) a 5-8 jsou logické diskové oblasti (podle toho, na které primární oblasti jsou vytvořené). Například /dev/hda1 je první primární disková oblast prvního pevného disku IDE a /dev/sdb7 je třetí rozšířená disková oblast na druhém pevném disku SCSI. Více informací najdete v seznamu zařízení, jenž je uveden v [Anv].
Souborový systém tvoří metody a struktury dat, pomocí kterých operační systém udržuje záznamy souborů na disku nebo diskové oblasti. Jde tedy o způsob, jakým jsou soubory na disku organizované. Tento termín se ale používá i ve vztahu k diskové oblasti nebo disku, na kterém se ukládají soubory, nebo ve všznamu typu souborového systém. Takže když někdo řekne "mám dva souborové systémyié, může mít namysli to, že má disk rozdělen na dvě diskové oblasti, nebo to může znamenat, že používá "rozšířeny souborový systémiv, tedy určitý typ souborového systému.
Rozdíl mezi diskem či diskovou oblastí a Souborovým systémem, který je na nich vytvořený, je dost podstatný. Některé programy (mezi nimi - zcela logicky - programy, pomocí kterých se souborové systémy vytváří) pracují přímo se sektory disku nebo diskového segmentu. Jestli na nich byl předtím vytvořený systém souborů, bude po spuýtění takovýchto programů zničený nebo vážně poikozený. Většina aplikací ale pracuje se Souborovým systémem. Proto je nelze použít na diskové oblasti, na které není vytvořený žádný systém souborů (nebo na oblasti, na které je vytvořený souborový systém nesprávného typu).
Před tím, než bude možné diskovou oblast nebo disk použít, je potřeba je inicializovat - musí se na ně zapsat určité účetní datové struktury. Tento proces se označuje jako vytvoření souborového systému.
Většina unixových souborových systémů má podobnou obecnou strukturu. v dalších podrobnostech se ale celkem dost liší. Mezi ústřední pojmy patří superblok, i-uzel, datovš blok, adresářovš blok a nepřímý blok. Superblok obsahuje informace o souborovém systému jako celku, například jeho velikost (zrovna u této položky závisí přesná hodnota na konkrétním souborovém systému). I-uzel obsahuje všechny informace o souboru, kromě jeho jména. Jméno souboru je uloženo v adresáři, společně s odpovídajícím číslem i-uzlu. Adresářová položka obsahuje jména souborů a čísla i-uzlů, které tyto soubory reprezentují. I-uzel dále obsahuje čísla datových bloků, v nichž jsou uložená data souboru, který daný i-uzel zastupuje. V i-uzlu je ale místo jenom pro několik čísel datových bloků. Když je jich potřeba víc, je dynamicky alokováno víc místa pro další ukazatele na datové bloky. Tyto dynamicky alokované bloky jsou tzv. nepřímé bloky. Jak jejich název naznačuje, v případě, že je potřeba najít datovš blok, musí se nejdřív najít jeho číslo v nepřímém bloku.
Unixové souborové systémy obvykle umožňují vytvořit v souboru "díruiu (angl. hole), a to pomocí programu lseek (podrobnosti uvádí přísluýná manuálová stránka). Vypadá to tak, že souborový systém pouze "předstíráii, že je na konkrétním místě souboru uloženo nula bajtů dat, takže pro toto místo nejsou vyhrazeny žádné sektory pevného disku (to znamená, že takovýto soubor zabírá o něco méně diskového prostoru). S tím se můžete setkat zvlášť často u malých binárních souborů, sdílených knihoven Linuxu, některých databází a v několika dalších speciálních případech. (Tato "prázdná místain jsou implementována tak, že se jako adresa datového bloku v nepřímém bloku nebo i-uzlu uloží zvláštní hodnota. Tato zvláštní adresa znamená, že pro určitou část souboru není alokován žádný datovš blok, tedy že je v tomto souboru "díra".)
Prázdná místa v souborech lze využít. Na autorově systému bylo jednoduchými prostředky dokázáno, že tímto způsobem lze potencionálně uýetřit asi 4 MB z celkových 200 MB diskového prostoru. A to je na tomto systému poměrně málo programů a vůbec žádné databázové soubory. Uvedené diagnostické nástroje jsou popsané v příloze A.
Linux podporuje několik typů souborových systémů. Mezi nejdůležitější patří:
minix | Je nejstarší a je považovaný za nejspolehlivější. Má ale několik omezení - chybí časová razítka (angl. time stamps), jména souborů mohou být nejvíce 30 znaků dlouhá, souborový systém může mít maximálně 64 MB a další. |
xia | Modifikovaná verze souborového systému minix. Nemá omezení v délce jmen souborů a velikosti souborového systému, jinak nepřináší žádné nové rysy. Mezi uživateli není velmi oblíbený, ale jinak má pověst velmi spolehlivého systému. |
ext2 | Souborový systém, který má nejvíce různých možností ze všech zde uvedených původních souborových systémů pro Linux. V současnosti je také nejpopulárnější. Byl navržen tak, aby byl zpětně kompatibilní, takže nové verze kódu souborového systému nevyžadují nové, opakované vytváření již existujících souborových systémů. |
ext | Starší verze ext2, která nebyla zpětně kompatibilní. Lze ji jenom stěží používat v nových instalacích Linuxu - většina uživatelů již přešla na systém souborů ext2. Kromě toho je podporováno několik souborových systémů jiných operačních systémů, což umožňuje přenášet soubory mezi různými operačními systémy. Tyto cizí, nepůvodní souborové systémy jinak fungují jako původní systémy souborů pro Linux, ale obvykle postrádají některé rysy typické pro Unix, případně mají některá neobvyklá omezení nebo jiné zvláštnosti. |
msdos | Souborový systém kompatibilní se Souborovým systémem FAT operačního systému MS-DOS (také OS/2 a Windows NT). |
umsdos | Rozšiřuje možnosti ovladače souborového systému msdos pro systém Linux. Umí pracovat s dlouhými názvy souborů, zná vlastníky souborů, přístupová práva, linky a speciální soubory. To umožňuje používat běžný souborový systém msdos jako by byl původním linuxovým Souborovým systémem. Rovněž není potřeba mít oddělené diskové oblasti pro systémy Linux a MS-DOS. |
iso9660 | Standardní souborový systém disků CD.ROM. Oblíbené rozšíření "Rock Ridge extension" tohoto standardu automaticky zavádí delší jména souborů a další možnosti. |
nfs | Síťový souborový systém, který umožňuje sdílení souborových systémů mezi větším počtem počítačů a jednoduchý přístup k souborům každého z nich. |
hpfs | Souborový systém operačního systému OS/2. |
sysv | Souborové systémy operačních systémů SystemV/386, Coherent a Xenix. |
Výběr konkrétního souborového systému závisí na dané situaci. V případě, že jsou kompatibilita nebo jiná omezení nutnou podmínkou výběru některého souborového systému jiného operačního systému, nezbývá než použít tento nepůvodní systém souborů. Jestli nejste ve výběru omezení, bude pravděpodobně nejrozumnější používat ext2, protože má ze všech uvedených systémů souborů nejvíce možností a nemá nedostatky z hlediska výkonu.
Dalším ze souborových systémů je systém souborů proc, nejčastěji dostupný prostřednictvím adresáře /proc. Ve skutečnosti ale není Souborovým systémem v pravém slova smyslu, i když tak na první pohled vypadá. Systém souborů proc umožňuje přístup k určitým datovým strukturám jádra systému, například k seznamu procesů (odtud jeho jméno). Přizpůsobuje tyto datové struktury tak, že se navenek chovají jako soubory souborového systému. K systému souborů proc pak lze přistupovat všemi běžnými nástroji, které se soubory běžně pracují. Takže kdybyste chtěli znát například seznam všech procesů, zadali byste příkaz
$ ls .l /proc
total 0
dr.xr.xr.x 4 root root 0 Jan 31 20:37 1
dr.xr.xr.x 4 liw users 0 Jan 31 20:37 63
dr.xr.xr.x 4 liw users 0 Jan 31 20:37 94
dr.xr.xr.x 4 liw users 0 Jan 31 20:37 95
dr.xr.xr.x 4 root users 0 Jan 31 20:37 98
dr.xr.xr.x 4 liw users 0 Jan 31 20:37 99
.r..r..r.. 1 root root 0 Jan 31 20:37 devices
.r..r..r.. 1 root root 0 Jan 31 20:37 dma
.r..r..r.. 1 root root 0 Jan 31 20:37 filesystems
.r..r..r.. 1 root root 0 Jan 31 20:37 interrupts
.r........ 1 root root 8654848 Jan 31 20:37 kcore
.r..r..r.. 1 root root 0 Jan 31 11:50 kmsg
.r..r..r.. 1 root root 0 Jan 31 20:37 ksyms
.r..r..r.. 1 root root 0 Jan 31 11:51 loadavg
.r..r..r.. 1 root root 0 Jan 31 20:37 meminfo
.r..r..r.. 1 root root 0 Jan 31 20:37 modules
dr.xr.xr.x 2 root root 0 Jan 31 20:37 net
dr.xr.xr.x 4 root root 0 Jan 31 20:37 self
.r..r..r.. 1 root root 0 Jan 31 20:37 stat
.r..r..r.. 1 root root 0 Jan 31 20:37 uptime
.r..r..r.. 1 root root 0 Jan 31 20:37 version
$
(v seznamu bude vždy několik souborů, které neodpovídají žádným procesům. Výstup ve výše vedeném příkladu byl zkrácen.)
Je důležité si uvědomit, že i když se pro systém proc používá označení "Souborový systém", žádná z jeho částí neleží na žádném z disků. Existuje jenom "v představách" jádra systému.
Kdykoliv k některé části souborového systému proc přistupuje uživatel systému nebo některý z procesů, jádro "předstírá", že je tato část uložená na disku, ale ve skutečnosti tomu tak není. Takže i když je v souborovém systému proc uložený několika megabajtový soubor /proc/kcore, ve skutečnosti nezabírá žádné místo na disku.
Obvykle není moc důvodů používat několik různých souborových systémů. V současné době je nejoblíbenějším Souborový systém ext2fs a to je současně pravděpodobně ta nejrozumnější volba. Ve vztahu k zmiňovaným účetním strukturám, rychlosti, (pochopitelně) spolehlivosti, kompatibilitě a vzhledem k různým jiným důvodům by mohlo být vhodné zvolit i jiný systém souborů. Takovéto požadavky je třeba posuzovat případ od případu.
Souborové systémy se vytváří a inicializují příkazem mkfs. Je to vlastně vždy jiný program pro každý typ souborového systému. Program mkfs je jenom tzv. "front end", tedy program, který spouští některé další programy, podle typu požadovaného souborového systému. Typ souborového systému se volí přepínačem .t fstype.
Programy volané příkazem mkfs mají nepatrně odlišné rozhraní příkazové řádky. Běžně používané a nejdůležitější volby jsou uvedené níže. Více informací najdete v manuálových stránkách.
Kdybyste chtěli vytvořit Souborový systém ext2 na disketě, zadali byste následující příkazy:
$ fdformat .n /dev/fd0H1440
Double.sided, 80 tracks, 18 sec/track. Total capacity 1440 kB.
Formatting ... done
$ badblocks /dev/fd0H1440 1440 / bad.blocks
$ mkfs .t ext2 .l bad.blocks /dev/fd0H1440
mke2fs 0.5a, 5.Apr.94 for EXT2 FS 0.5, 94/03/10
360 inodes, 1440 blocks
72 blocks (5.00%) reserved for the super user
First data block=1
Block size=1024 (log=0)
Fragment size=1024 (log=0)
1 block group
8192 blocks per group, 8192 fragments per group
360 inodes per group
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
$
V prvním kroku se disketa formátuje (volba .n zakáže její validaci, tedy kontrolu vadných sektorů). Vadné bloky pak vyhledává program badblocks, a to s výstupem přesměrovaným do souboru bad.blocks. Nakonec se vytvoří Souborový systém a mezi účetní struktury se uloží seznam vadných bloků, ve kterém budou všechny vadné sektory, jež našel program badblocks.
Místo příkazu badblocks je možno použít argument .c programu mkfs a název souboru tak, jak to uvádí následující příklad:
$ mkfs .t ext2 .c /dev/fd0H1440
mke2fs 0.5a, 5.Apr.94 for EXT2 FS 0.5, 94/03/10
360 inodes, 1440 blocks
72 blocks (5.00%) reserved for the super user
First data block=1
Block size=1024 (log=0)
Fragment size=1024 (log=0)
1 block group
8192 blocks per group, 8192 fragments per group
360 inodes per group
Checking for bad blocks (read.only test): done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
$
Volba .c programu mkfs je sice vhodnější, než použití programu badblocks, ale příkaz badblocks je vždy nutné použít pro kontrolu vadných bloků po vytvoření souborového systému. Postup, kterým se vytváří souborové systémy na pevných discích a diskových oblastech, je stejný jako naznačený postup inicializace souborového systému na disketě, až na to, že není nutné je formátovat.
Souborový systém se musí před použitím připojit, namontovat. Po připojení systému souborů dělá operační systém některé účetní operace, kterými se ověřuje funkčnost připojení. Protože všechny soubory v Unixu jsou součástí jediného hierarchického adresářového stromu, operace připojení souborového systému začlení obsah připojovaného souborového systému do některého z adresářů dříve připojeného systému souborů.
Na obrázku 4.3 jsou například zobrazeny tři samostatné souborové systémy, každý se svím vlastním kořenovým adresářem. Když budou poslední dva souborové systémy připojeny pod adresář /home a /usr prvního systému souborů, dostaneme jeden adresářový strom, který je vyobrazen na obrázku 4.4.
Souborový systém lze připojit například zadáním následujících příkazů:
$ mount /dev/hda2 /home
$ mount /dev/hda3 /usr
$
Příkaz mount má dva argumenty. Prvním je speciální soubor odpovídající disku nebo diskové oblasti, na které leží připojovaný Souborový systém. Druhým parametrem je adresář, pod nímž bude Souborový systém připojen. Po provedení těchto příkazů vypadá obsah obou připojovaných systémů souborů tak, jako by byl součástí hierarchického stromu adresářů /home a /usr. Říká se, že "/dev/hda2 je připojený na adresář /home" a to samé platí i o adresáři /usr. Když si pak chcete prohlédnout některý ze souborových systémů, procházíte strukturou adresářů, ke kterým jsou připojené, jako by to byly jakékoliv jiné adresáře. Je důležité si uvědomit rozdíl mezi speciálním souborem /dev/hda2 a adresářem /home, ke kterému je systém souborů připojen. Speciální soubor umožňuje přístup k "syrovému" obsahu pevného disku, kdežto prostřednictvím adresáře /home se přistupuje k souborům, které jsou na tomto disku uložené. Adresář, ke kterému je Souborový systém připojený, se nazývá přípojný bod (angl. mount point).
Operační systém Linux podporuje mnoho typů souborových systémů. Příkaz mount se vždy pokusí rozeznat typ připojovaného systému souborů. Lze také použít přepínač .t typ_fs, který přímo specifikuje typ připojovaného souborového systému. Někdy je to potřeba, protože heuristika programu mount nemusí vždy pracovat správně. Chcete-li například připojit disketu systému MS-DOS, zadáte příkaz:
$ mount .t msdos /dev/fd0 /floppy
$
Adresář, ke kterému se Souborový systém připojuje, nemusí být prázdný, ale musí existovat.
Soubory, jež byly původně uloženy v adresáři, ke kterému je připojený nový Souborový systém, budou nepřístupné, a to až do jeho odpojení. (Soubory, které byly v době připojení otevřené, budou nadále přístupné. Soubory, které jsou nalinkované z jiných adresářů, budou přístupné prostřednictvím těchto původních souborů.) Nehrozí přitom žádné nebezpečí poškození těchto souborů a někdy to navíc může být i užitečné. Někteří uživatelé například rádi používají synonyma /tmp a /var/tmp. Proto si dělají symbolický link adresáře /tmp do adresáře /var/tmp. Předtím, než se při zavádění systému připojí Souborový systém /usr, je adresář /var/tmp v kořenovém souborovém systému. Poté, co se připojí systém souborů /usr, bude adresář /var/tmp v kořenovém souborovém systému nepřístupný.
V případě, že by adresář /var/tmp v souborovém systému "root" neexistoval, bylo by použití dočasných souborů před připojením systému souborů /var nemožné.
Jestli nemáte v úmyslu v připojovaném souborovém systému cokoliv zapisovat, zadejte programu mount přepínač .r. Tím se vytvoří připojení pouze pro čtení. Jádro systému pak zabrání každému pokusu o zápis do tohoto souborového systému. Rovněž jádro samotné má zakázáno aktualizovat položku času posledního přístupu v i-uzlech souborů. Připojení systému souborů pouze pro čtení je podmínkou u médií, na která nelze zapisovat, např. u disků CD.ROM.
Pozorný čtenář si již uvědomil drobný logistický problém. Jakým způsobem se připojuje první Souborový systém, tedy kořenový svazek (angl. root filesystem), někdy označovaný jako kořenový Souborový systém (obsahuje kořenový adresář), když zjevně nemůže být připojený na jiný Souborový systém? Odpověď je jednoduchá - je to "kouzlo".
Kořenový Souborový systém se "magicky" připojuje při zavádění systému a lze se spolehnout na to, že bude připojený vždy. Kdyby z nějakých důvodů Souborový systém "root" nebylo možné připojit, systém se vůbec nezavede. Jméno souborového systému, jenž se magicky připojuje jako kořenový, je buď zkompilované v jádře systému, nebo se nastavuje zavaděčem LILO, případně programem rdev. Kořenový svazek se pokaždé obvykle nejdříve připojí pouze pro čtení. Pak inicializační skripty spustí program fsck, který jej zkontroluje. Když se neobjeví žádný problém, kořenový svazek se připojí znovu, a to tak, že na něj bude možno zapisovat. Program fsck se nesmí spouštět na připojeném souborovém systému s možností zápisu, protože jakékoliv změny v souborovém systému, ke kterým by doýlo při kontrole (a opravách chyb v souborovém systému) způsobí potíže. Když je kořenový Souborový systém při kontrole připojený pouze pro čtení, program fsck může bez obav opravovat všechny chyby, protože operace opětovného připojení souborového systému "spláchneio všechna metadata, která má Souborový systém uložená v paměti.
V některých systémech se používají i jiné souborové systémy, které lze automaticky připojit při zavádění systému. Jsou specifikované v souboru /etc/fstab. Podrobnosti týkající se formátu tohoto souboru najdete v manuálové stránce k souboru fstab. Přesné detaily procesu připojování dalších souborových systémů závisí na množství faktorů a je-li potřeba, může je správce systému nastavit. K dalšímu rozšíření znalostí o připojování souborových systémů při zavádění systému lze doporučit závěr kapitoly, jež pojednává o zavádění operačního systému.
Když už není třeba mít Souborový systém připojený, je možno jej odpojit příkazem umount.
Program umount má jediný argument, buďto speciální soubor, nebo bod přístupu. Například odpojení adresářů připojených v předchozím příkladu lze provést příkazy
$ umount /dev/hda2
$ umount /usr
$
Podrobnější instrukce jak používat příkaz umount najdete v manuálové stránce k tomuto programu. Důležitý imperativ, na který je potřeba upozornit - připojenou disketovou jednotku je vždy potřeba odpojit. Nestačí jenom vytáhnout disketu z mechaniky! Když systém používá vyrovnávací paměť, v okamžiku odpojení jednotky nemusí být data ze zásobníku paměti "cacheit zapsaná na disketu! Předčasné vytažení diskety z mechaniky by mohlo způsobit poškození jejího obsahu. Když z diskety pouze čtete, není její poškození moc pravděpodobné, ale když zapisujete - navíc náhodně - důsledky mohou být katastrofální.
Připojování a odpojování souborových systémů vyžaduje oprávnění superuživatele, takže ho může dělat pouze uživatel root. Je tomu tak například proto, že kdyby měl kterýkoliv z uživatelů právo připojit si jednotku pružných disků na libovolný adresář, nebylo by velmi těžké připojit disketu s virem typu trojského koně "přestrojeného" za program /bin/sh, nebo jiný často používaný příkaz. Avšak dost často je potřeba, aby uživatelé mohli s disketami pracovat. Je několik způsobů, jak jim to umožnit:
Sdělit uživatelům heslo superuživatele. To je z hlediska bezpečnosti zjevně špatné, avšak to nejjednodušší řešení. Funguje dobře v případě, že se vůbec není potřeba zabývat zabezpečením systému. To se týká řady osobních systémů - tedy systémů, které nejsou připojené do počítačové sítě.
Používat programy jako je sudo, jenž umožní uživatelům používat příkaz mount. Toto je z hlediska bezpečnosti rovněž špatné řešení, avšak tímto způsobem přímo nepředáváte privilegia superuživatele každému.
Umožnit uživatelům používat balík programů mtools, jenž umožňuje manipulovat se Souborovými systémy MS-DOS bez toho, že by je bylo potřeba připojovat. Řešení funguje dobře pouze v případě, že jsou diskety systému MS-DOS vším, co budou uživatelé systému potřebovat. V ostatních případech je nevhodné.
Zapsat všechny disketové jednotky a pro ně přípustné přípojné body spolu s dalšími vhodnými volbami do seznamu připojovaných systémů v souboru /etc/fstab.
Posledně uvedenou alternativu lze realizovat přidáním níže uvedeného řádku do souboru /etc/fstab:
/dev/fd0 /floppy msdos user,noauto 0 0
Význam jednotlivých položek (zleva doprava): speciální soubor, který se má připojit; adresář, na který se má toto zařízení namontovat (přípojný bod); typ souborového systému; některé další volby; četnost zálohování (používá program dump); posledním parametrem je pořadí kontroly programem fsck (určuje pořadí, ve kterém by měly být souborové systémy prověřovány při startu systému; 0 znamená nekontrolovat).
Přepínač noauto zakáže automatické připojení při startu systému (tj. zakáže připojení příkazem mount -a). Argument user umožní kterémukoliv uživateli připojit si Souborový systém. Z důvodů bezpečnosti zamezí možnosti spouštět programy (jak běžné, tak programy s příznakem setuid) a interpretaci speciálních souborů z připojeného souborového systému.
Pak si každý uživatel může namontovat disketovou jednotku se Souborovým systémem msdos tímto příkazem:
$ mount /floppy
$
Disketu můžete (samozřejmě pokaždé musíte) odpojit odpovídajícím příkazem umount. Chcete-li umožnit přístup k několika různým typům disket, musíte zadat několik přípojných bodů. Nastavení pro každý přípojný bod mohou být různá. Například přístup k disketám s oběma typy souborových systémů - MS-DOS i ext2 - byste umožnili přidáním těchto řádků do souboru /etc/fstab:
/dev/fd0 /dosfloppy msdos user,noauto 0 0
/dev/fd0 /ext2floppy ext2 user,noauto 0 0
U souborových systémů MS-DOS (nejenom na disketách) budete pravděpodobně vyžadovat omezený přístup s využitím parametrů uid, gid a umask. Ty jsou podrobně popsané v manuálové stránce příkazu mount. Následkem neopatrnosti při připojování souborového systému MS-DOS může být totiž to, že kterýkoliv uživatel získá oprávnění číst v připojeném systému souborů kterékoliv soubory, což není moc dobré.
Souborové systémy jsou poměrně složité struktury a tím také mají sklony k chybovosti. Správnost a platnost souborového systému se kontroluje příkazem fsck. Lze jej nastavit tak, aby při kontrole automaticky opravoval méně závažné chyby a varoval uživatele na výskyt chyb, které nelze odstranit. Naštěstí je kód, kterým se implementují souborové systémy, poměrně efektivně odladěný, takže problémy vznikají velmi zřídka a jsou obvykle zapříčiněny výpadkem napájecího napětí, selháním technického vybavení nebo chybou obsluhy, například nesprávným vypnutím systému. Většina systémů je nastavena tak, že spouští program fsck automaticky při zavádění systému, takže jakékoliv chyby jsou detekovány (a většinou i odstraněny) předtím, než systém přechází do běžného pracovního režimu. Používáním poškozeného systému souborů se totiž jeho stav obvykle ještě více zhoršuje. Jsou-li v nepořádku datové struktury souborového systému, práce se systémem je pravděpodobně poškodí ještě víc, důsledkem čeho mohou být ztráty dat většího rozsahu. Jenomže kontrola velkých souborových systémů programu fsck chvíli trvá. Když se ale systém vypíná správně, chyby souborových systémů se vyskytují jenom velmi zřídka. Lze pak využít několika triků, díky kterým se lze kontrole (velkých) souborových systémů vyhnout.
První z nich: existuje-li soubor /etc/fastboot, neprovádí se žádná kontrola.
Druhý: Souborový systém ext2 má ve svém superbloku speciální příznak, jehož hodnota je nastavena podle toho, jestli byl Souborový systém po předchozím připojení odpojen správně, či nikoliv. Podle tohoto příznaku pozná pak program e2fsck (verze příkazu fsck pro Souborový systém ext2), jestli je nutné provádět kontrolu tohoto systému souborů, či nikoliv. V případě, že podle hodnoty příznaku byl daný systém souborů odpojený korektně, kontrola se neprovádí. Předpokládá se, že řádné odpojení systému zároveň znamená, že v souborovém systému nevznikly žádné defekty. To, zda se při proceduře zavádění systému vynechá proces validace systému souborů v případě, že soubor /etc/fastboot existuje, záleží na nastavení spouštěcích skriptů systému. Trik s příznakem souborového systému ext2 ale funguje vždy, když systém souborů kontrolujete programem e2fsck. Kdybyste totiž chtěli programu e2fsck přikázat, aby prověřil i korektně odpojený systém souborů, museli byste tuto podmínku explicitně zadat odpovídajícím přepínačem. (Podrobnosti o tom jak uvádí manuálová stránka programu e2fsck.)
Automatické prověřování správnosti souborových systémů se provádí jenom u systémů souborů, které se připojují automaticky při startu operačního systému. Manuálně lze program fsck použít pro kontrolu jiných souborových systémů, např. na disketách.
Najde-li program fsck neodstranitelné chyby, připravte se na to, že budete potřebovat buď hluboké znalosti obecných principů fungování souborových systémů a konkrétního typu poškozeného souborového systému zvlášť, nebo dobré zálohy. Druhou možnost lze jednoduše (ačkoli někdy dost pracně) zajistit. Nemáte-li potřebné "know.how" sami, mohou první alternativu v některých případech zajistit vaši známí, dobrodinci z diskusních skupin o Linuxu na Internetu, popřípadě jiný zdroj technické podpory. Rádi bychom vám poskytli víc informací týkající se této problematiky, bohužel nám v tom brání nedostatek podrobných znalostí a zkušeností. Jinak užitečný by pro vás mohl být program debugfs, jehož autorem je Theodore T'so.
Program fsck může běžet pouze na odpojených souborových systémech, v žádném případě ne na připojených (s výjimkou kořenového souborového systému připojeného při zavádění systému pouze pro čtení). To proto, že program přistupuje k "syrovému" disku, a tak může modifikovat systém souborů bez toho, že by využíval operační systém. Když se vám podaří operační systém tímto způsobem "zmást", téměř určitě můžete očekávat problémy.
Je vhodné pravidelně kontrolovat výskyt vadných bloků na disku. Dělá se to příkazem badblocks. Jeho výstupem je seznam čísel všech vadných bloků, na které program narazil. Tímto seznamem pak můžete "nakrmit" program fsck, který podle něj provede záznamy do datových struktur souborového systému. Podle informací těchto účetních struktur se řídí operační systém a když pak ukládá na disk data, nepokouší se využívat v seznamu uvedené vadné bloky. v následujícím příkladu je naznačen celý postup.
$ badblocks /dev/fd0H1440 1440 > bad.blocks
$ fsck .t ext2 .l bad.blocks /dev/fd0H1440
Parallelizing fsck version 0.5a (5.Apr.94)
e2fsck 0.5a, 5.Apr.94 for EXT2 FS 0.5, 94/03/10
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Check reference counts.
Pass 5: Checking group summary information.
/dev/fd0H1440: ***** FILE system WAS MODIFIED *****
/dev/fd0H1440: 11/360 files, 63/1440 blocks
$
Je-li v seznamu vadných bloků uveden blok, který je již některým ze souborů využíván, program e2fsck se pokusí tento sektor přemístit na jiné místo disku. Když je blok skutečně vadný a nejde jenom o logickou chybu vzniklou při zápisu, bude obsah souboru s největší pravděpodobností poškozený.
Když se soubor ukládá na disk, nemůže být vždy zapsaný do po sobě jdoucích bloků. Soubor, jenž není uložen do sekvenční řady za sebou jdoucích bloků je fragmentovaný. Trvá pak déle takovýto fragmentovaný soubor načíst, protože čtecí hlava disku se musí při čtení víc pohybovat. Proto je nežádoucí připustit fragmentaci souborů, i když ta není až tak velkým problémem pro systémy s velkou vyrovnávací pamětí. Pomocí paměti "cache" lze totiž načítat data napřed.
Souborový systém ext2 se snaží udržet fragmentaci souborů na minimu. I v případě, že všechny bloky jednotlivých souborů nelze uložit do sektorů, jež jdou po sobě, je ukládá tak, aby byly co nejvíce pohromadě. Systém souborů ext2 navíc vždy efektivně alokuje volné sektory, které jsou nejblíže k zbylým blokům ukládaného souboru. Používáte-li proto systémy souborů ext2, nemusíte se fragmentace obávat. Přesto existuje program, jenž umí defragmentovat tento Souborový systém - viz v bibliografii uvedený odkaz [TV].
Pro systém MS-DOS existuje celá řada defragmentačních programů. Ty přesouvají bloky v souborovém systému tak, aby fragmentaci odstranily. v ostatních souborových systémech se musí defragmentace dělat tak, že se vytvoří záloha souborového systému, který se znovu vytvoří a ze zálohy se obnoví soubory. Doporučení zálohovat Souborový systém před jeho defragmentací se týká všech souborových systémů, protože v průběhu procesu defragmentace může dojít k poškození systému souborů i dalším chybám.
Existují i některé další nástroje užitečné pro správu souborových systémů. Program df ukazuje volný diskový prostor v jednom či několika souborových systémech. Program du ukazuje, kolik diskového prostoru zabírá adresář a všechny soubory v něm uložené. Lze jej s výhodou využít při "honu" na uživatele, kteří zabírají svými (mnohdy zbytečnými) soubory nejvíc místa na disku.
Program sync zapíše všechny neuložené bloky z vyrovnávací paměti (viz podkapitolu 5.6) na disk. Jen zřídkakdy je potřeba zadávat jej ručně, automaticky to totiž dělá démon update. Má to význam především v případě nečekaných událostí, například když jsou procesy update nebo jejich pomocný proces bdflush nečekaně ukončeny, nebo v případě, že musíte ihned vypnout napájení a nemůžete čekat, než se opět spustí program update.
Kromě programu, kterým se tento systém souborů vytváří (mke2fs), a programu pro kontrolu jeho integrity (e2fsck), jež jsou přístupné přímo z příkazové řádky, případně přes program "front end" nezávislý na typu souborového systému, zná Souborový systém ext2 některé další nástroje, jež mohou být užitečné při správě systému.
Program tune2fs umí upravit parametry souborového systému. Uvedeme některé z těch významnijiích:
dumpe2fs 0.5b, 11.Mar.95 for EXT2 FS 0.5a, 94/10/23
Filesystem magic number: 0xEF53
Filesystem state: clean
Errors behavior: Continue
Inode count: 360
Block count: 1440
Reserved block count: 72
Free blocks: 1133
Free inodes: 326
First block: 1
Block size: 1024
Fragment size: 1024
Blocks per group: 8192
Fragments per group: 8192
Inodes per group: 360
Last mount time: Tue Aug 8 01:52:52 1995
Last write time: Tue Aug 8 01:53:28 1995
Mount count: 3
Maximum mount count: 20
Last checked: Tue Aug 8 01:06:31 1995
Check interval: 0
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
Group 0:
Block bitmap at 3, Inode bitmap at 4, Inode table at 5
1133 free blocks, 326 free inodes, 2 directories
Free blocks: 307.1439
Free inodes: 35.360
Více informací najdete v manuálové stránce programu tune2fs.
Program dumpe2fs vypisuje informace o daném souborovém systému typu ext2, většinou z jeho superbloku. Na obrázku 4.5 je příklad výstupu tohoto programu. Některé z těchto informací jsou ryze technické a vyžadují hlubší pochopení problematiky fungování tohoto souborového systému. Většina údajů je ale snadno pochopitelná i pro většinu správců - laiků.
Program debugfs je nástroj pro ladění souborového systému. Umožňuje přímý přístup k strukturám dat souborového systému uloženým na disku, a lze jej proto použít při opravách defektů na disku, které nelze opravit automaticky programem fsck. Lze jej též využít k obnově smazaných souborů. Když ale chcete použít program debugfs, je velmi důležité, abyste skutečně věděli, co děláte. V případě, že zcela neporozumíte některé jeho funkci, se totiž může stát, že všechna svá data zničíte.
Programy dump a restore lze použít při zálohování souborového systému ext2. Jsou to specifické verze tradičních nástrojů pro zálohování používaných v systému Unix, určené speciálně pro systém souborů ext2. Víc informací o zálohování najdete v kapitole 10.
Ne na všech discích nebo diskových oblastech se vytváří souborové systémy. Například disková odkládací oblast (swap) nebude používat žádný Souborový systém. Dalším příkladem jsou diskety, jejichž mechaniky se mnohdy používají pro emulaci páskové jednotky. Program tar nebo jiný archivační nástroj pak zapisuje přímo na "syrový" disk bez souborového systému. Zaváděcí diskety systému Linux rovněž nemají Souborový systém, pouze "syrové" jádro systému.
To, že se na disku (disketě) nevytvoří Souborový systém, má výhodu v tom, že lze využít větší část kapacity disku, protože každý Souborový systém má vždy nějaké účetní režijní náklady. Navíc lze takto dosáhnout větší kompatibility disků s jinými operačními systémy, například soubor s formátem, jenž používá program tar, má stejnou strukturu ve všech operačních systémech, kdežto souborové systémy samotné jsou ve většině operačních systémů různé. Další výhodou je, že disky bez souborových systémů lze v případě potřeby použít velmi rychle (odpadá operace vytváření a validace souborového systému). Zaváděcí diskety Linuxu také nutně nemusí obsahovat Souborový systém, ačkoliv to možné je.
Dalším z důvodů proč používat "syrová" zařízení je možnost vytvořit přesný zrcadlový obraz - kopii disku. Když například disk obsahuje částečně poškozený Souborový systém, je vhodné předtím, než se pokusíte chybu opravit, udělat přesnou kopii poškozeného disku. Pak není problém začít znova v případě, že při neúspěšném pokusu opravit chybu poškodíte systém souborů ještě víc. Jedním ze způsobů, jak zrcadlovou kopii disku udělat, je použít program dd:
$ dd if=/dev/fd0H1440 of=floppy.image
2880+0 records in
2880+0 records out
$ dd if=floppy.image of=/dev/fd0H1440
2880+0 records in
2880+0 records out
$
První příkaz dd uloží přesný obraz diskety do souboru floppy.image, druhý zapíše tento obraz na další disketu. (Samozřejmě se předpokládá, že uživatel před zadáním druhého příkazu diskety v mechanice vyměnil. Jinak by samozřejmě byly tyto příkazy k ničemu.)
Rozdělit disk na oblasti tím nejlepším možným způsobem není vůbec jednoduché. A co je nejhorší - neexistuje univerzálně správný způsob, jak toho dosáhnout. Celý problém totiž komplikuje příliš mnoho různých faktorů.
"Tradiční" variantou je mít (relativně) malý Souborový systém "root", jenž obsahuje adresáře /bin, /etc, /dev, /lib, /tmp, další programy a konfigurační soubory, které jsou potřeba k tomu, aby se systém spustil a běžel. Vše, co je třeba k tomu, aby mohl být systém uveden do chodu, je právě kořenový Souborový systém (na vlastní oblasti nebo na samostatném disku). Důvodem tohoto "tradieního" schématu je fakt, že když je kořenový svazek malý a méně často používaný, je menší pravděpodobnost, že se v případě havárie systému poškodí.
S takovýmto uspořádáním je také jednodušší odstranit případné problémy způsobené havárií systému. V dalším kroku se pak vytvoří samostatné diskové oblasti (nebo použijí další disky) pro stromovou strukturu svazku /usr, domovské adresáře uživatelů (nejčistěji pod adresářem /home) a pro odkládací prostor (swap). Tím, že se vyčlení vlastní disková oblast (disk) domovským adresářům, v nichž jsou uloženy soubory jednotlivých uživatelů, se zjednoduší zálohování, protože programy, které jsou uložené v adresáři /usr, obvykle není potřeba zálohovat. V síťovém prostředí je navíc možné adresář /usr sdílet mezi několika počítači (např. využitím NFS) a tím snížit celkovou potřebu diskového prostoru. Ta by jinak dosahovala několika desítek či stovek megabajtů, násobeno počtem stanic v síti.
Problém několika samostatných diskových oblastí je v tom, že rozdělují celkové množství volného diskového prostoru na mnoho malých částí. v současnosti, kdy jsou disky a (snad) i operační systémy spolehlivější, stále více uživatelů preferuje možnost mít jenom jednu oblast, ve které jsou uložené všechny soubory. Na druhou stranu zálohování (a obnovování) malých diskových oblastí je ale méně pracné.
U malých pevných disků (předpokládá se, že neděláte zrovna něco jako vývoj jádra systému), je obvykle nejlepší mít jenom jednu diskovou oblast. U velkých pevných disků je pro změnu výhodnější rozdělit je na několik větších oblastí, pouze pro případ, že by se stalo něco, s čím jste při instalaci systému nepočítali. (Uvědomte si ale, že pojmy "malý" a "velký" se zde používají v relativním smyslu, jedině vaše konkrétní potřeby diskového prostoru rozhodnou o tom, kde bude ležet jejich hranice.) Máte-li k dispozici několik disků, je vhodné umístnit kořenový Souborový systém (včetně adresáře /usr) na jeden a domovské adresáře uživatelů na druhý disk.
Je dobré připravit se na malé "experimentování" s různými způsoby rozdělení disku na oblasti - kdykoliv, ne pouze při první instalaci systému. Je s tím sice dost práce, protože nezbytnou podmínkou je opakovaná instalace systému poté, co se některý pokus nezdaří. Nicméně je to jediný způsob, jak si ověřit správnost rozdělení disku.
Distribuce Linuxu, kterou budete instalovat, vám obvykle nějakým způsobem sdělí, kolik diskového prostoru je potřeba pro různé konfigurace operačního systému. Programy, které se instalují dodatečně, se budou většinou chovat stejně. Díky tomu si můžete udělat představu o nárocích na diskový prostor a naplánovat si jeho rozdělení. Měli byste se ale připravit i na budoucnost a vyhradit si nějaké místo navíc pro věci, na které si vzpomenete později.
Prostor, který byste měli vyčlenit pro soubory uživatelů systému, závisí na tom, co budou dělat. Většina lidí totiž obvykle spotřebuje tolik diskového prostoru, kolik je jenom možné. Nicméně množství, které jim skutečně stačí, je velmi různé. Někteří uživatelé vystačí s psaním textů a spokojeně přežijí i s několika megabajty. Jiní dělají složitou editaci grafických souborů a budou potřebovat gigabajty volného prostoru.
Mimochodem, když budete při odhadech nároků na diskový prostor srovnávat velikosti souborů v kilobajtech nebo megabajtech a diskový prostor v megabajtech, uvědomte si, že tyto dvě jednotky mohou být různé. Někteří výrobci disků rádi tvrdí, že kilobajt je 1 000 bajtů a megabajt je 1 000 kilobajtů, kdežto zbytek počítačového světa používá pro oba koeficienty číslo 1 024. Proto váš 345MB pevný disk bude mít ve skutečnosti pouze 330 MB.
O přidělování odkládacího prostoru pojednává odstavec 5.5.
Autor manuálu dlouho používal 109MB pevný disk. V současné době má k dispozici pevný disk o velikosti 330 MB. V dalším textu bude vysvětleno, jak a proč byly tyto disky rozděleny na jednotlivé diskové oblasti.
Disk o velikosti 109 MB byl velmi často "přerozdělován" mnoha různými způsoby podle toho, jak se měnily konkrétní potřeby a používané operační systémy. Popíšeme dva typické scénáře. Při prvním z nich byly na jednom disku instalovány operační systémy MS-DOS a Linux. První disková oblast o velikosti asi 20 MB byla vyhrazena pro systém MS-DOS, některý z kompilátorů jazyka C, textový editor, několik dalších utilit a rozpracovaný program. Několik megabajtů volného diskového prostoru zbylo proto, aby nevznikaly pocity klaustrofobie. Odkládacímu prostoru (swap) systému Linux bylo vyhrazeno 10 MB na samostatné diskové oblasti a zbytek, tedy 79 MB, na další diskové oblasti byl vyčleněn pro soubory operačního systému Linux. Rozdělovat takovýto prostor na samostatné oblasti pro souborové systémy "root", /usr a domovské adresáře /home nemá praktický význam.
Když pak nebude třeba systém MS-DOS, lze změnit rozdělení disku tak, že se vyhradí 12 MB pro odkládací prostor Linuxu a zbytek bude opět jako jeden Souborový systém.
Disk o velikosti 330 MB lze rozdělit na několik diskových oblastí následujícím způsobem:
5 MB kořenový Souborový systém
10 MB oblast pro odkládací prostor (swap)
180 MB Souborový systém /usr
120 MB Souborový systém /home
15 MB neobsazená disková oblast
Neobsazenou diskovou oblast lze využívat na různé "experimenty", při nichž je potřeba mít samostatný diskový segment, např. při testování různých distribucí Linuxu, nebo srovnávání rychlosti souborových systémů a podobně. Jinak lze neobsazenou diskovou oblast rovněž využít jako odkládací prostor (hlavně v případě, že máte rádi hodně otevřených oken).
Zvětšení diskového prostoru vyhrazeného pro Linux je jednoduché. Především v případě, že se instalují nové pevné disky (popis instalace disků jde ale nad rámec této knihy). Je-li to nutné, je potřeba disky zformátovat. Pak se podle výše uvedeného postupu vytvoří diskové oblasti a Souborový systém a přidají se odpovídající řádky do souboru /etc/fstab kvůli tomu, aby se nové disky připojovaly automaticky.
Nejlepším způsobem jak ušetřit diskový prostor je vyvarovat se instalování nepotřebných programů. Většina distribucí Linuxu při instalaci nabízí možnost výběru balíků programů, které se mají instalovat. Podle této nabídky byste měli být schopni analyzovat své potřeby a pak pravděpodobně zjistíte, že většinu z nich nebudete potřebovat. Tím se ušetří hodně místa na disku, protože některé z programů a aplikačních balíků jsou dost objemné. I když zjistíte, že budete některou aplikaci nebo i celý balík programů potřebovat, určitě nebudete muset instalovat všechny jejich součásti. Obvykle není potřeba instalovat například "on-line" dokumentaci, stejně jako některé ze souborů Elisp pro verzi GNU programu Emacs, některé z fontů pro X11 či některé knihovny programovacích jazyků.
V případě, že nemůžete některé balíky programů trvale odinstalovat, můžete využít kompresi. Komprimační programy jako gzip nebo zip spakují (a rozbalí) jednotlivé soubory, případně celé skupiny souborů. Systém gzexe transparentně komprimuje a dekomprimuje programy tak, že to uživatel v běžném provozu nepostřehne (nepoužívané programy se komprimují a rozbalí se, až když jsou potřeba). V současné době se testuje systém DouBle, který transparentně komprimuje všechny soubory v souborovém systému. (Systém DouBle pracuje na stejném principu jako program Stacker pro operační systém MS-DOS, který možná znáte.)