Souborové systémy FAT16 /32x

Martin ZEMAN: Primárním souborovým systémem Windows 95, 98 a Windows Me je FAT (případně jeho modernější varianta FAT32). Není to žádný zázrak, spíše dinosaurus, ale přesto ho lze alespoň trochu přizpůsobit konkrétním potřebám a způsobům používání.
Tento článek Vám nejen osvětlí základy tohoto rozšířeného souborového systému a zároveň Vám ukáže, kde je případně možno hledat rezervy...

Kapitoly článku:


Základní adresovatelnou jednotkou pevného disku je tzv. sektor - je to elementární jednotka diskové kapacity o velikosti 512 bajtů. Celá kapacita disku je dnes tvořena množinou "lineárně" po sobě jdoucích sektorů (LBA - Logical Block Addressing), přestože jsou fyzicky organizovány trojrozměrně podle schématu plotna-stopa-sektor.

Poznámka: toto původní adresování se však dnes již nepoužívá, neboť omezuje kapacitu disku. Navíc dnešní disky nepoužívají stejný (konstantní) počet sektorů na stopu - ten je různý podle poloměru stopy atd.

Sektory jsou základní jednotkou na které pak staví každý souborový systém používaný na platformě PC.

Sektory jsou podle potřeby dále slučovány do větších jednotek zvaných cluster. Cluster (přímý překlad - shluk) může být tvořen různým počtem sektorů - dle 2n, kde n=0..5. Vzniklé clustery mohou tedy dosahovat například těchto velikostí: 512B, 1kB, 2kB, 4kB, .. 32kB...

Nejdříve byl... FAT16

Jak již z názvu vyplývá (FAT = File Alocation Table), informace o umístění (čili alokaci) souborů jsou u tohoto souborového systému uloženy ve zvláštní tabulce. Tato tabulka je prakticky "obrazem" či spíše indexem rozmístění dat.
Tabulka FAT16 je pak schopna pojmout až 216 = 65556 16 bitových záznamů - každý záznam ukazuje na určitý cluster. Jejich význam částečně uvádí následující přehled:

FAT kód Význam
0000h volný cluster
0002h-FFEFh použitý cluster, číslo udává následující cluster souboru
FFF0h-FFF6h reservovaný cluster
FFF7h špatný cluster
FFF8h-FFFF použitý cluster, poslední v souboru

FAT16 funguje následovně:

Pokud je z hlavní struktury vybrán soubor, je nejdříve zjištěn jeho počáteční cluster (ten je na datové ploše disku) a pak následně i celková velikost souboru. Pak je přečten první cluster a následně je zjištěna informace, na kterém dalším clusteru se nacházejí navazující data (pokud nejsou umístěné v řadě za sebou mluvíme o fragmentaci souboru). Tak to pokračuje dál, až do posledního relevantního clusteru.
Pokud chceme smazat nějaký soubor, nemusíme mazat v datové část - stačí provést úpravy v tabulce FAT.

Joro: Z tabulkou FAT jsou spojené i některé specifické chyby jako překřížené soubory (dva či více souborů se "hlásí" ke stejnému clusteru)... z praktického provozování FATu (a nejenom jeho) pak plynou také i další přirozené neduhy jako je například časem narůstající fragmentace souborů na disku atd...

Je třeba pamatovat na to, že vlastní data se čtou z celé plochy disku, ale informace o "souřadnicích" cílového clusterů z FAT tabulky na počátku disku. To je z principu velmi neefektivní, neboť hlavička disku musí po přečtení každého clusteru přejet na počátek, na FAT tabulku, aby systém věděl kde má pokračovat...

Cachování FAT tabulky v paměti...

Pro zrychlení tohoto procesu se používá cachování FAT tabulky v hlavní paměti. Pod systémem DOS se o to staral program SMARTDRV.EXE (každý kdo kopíroval 200-400 souborů bez Smartdrivu ví, že se jedná o velmi dlouhý a "hlučný" proces), pod W9x je tento princip již součásti systému, dokonce zde můžeme nastavit i množství paměti pro cachování.

Velikost diskového oddílu FAT je historicky omezena 216 clusterů. Velikost clusteru je od 0,5kB do 32 kB. Diskový oddíl FAT16 může mít tedy maximální velikost nejvýše 2 GB. U velkých disků disků se toto omezení řeší vytvořením více diskových diskových oddílů.

počet clusterů

sektorů na cluster

velikost clusteru

max. velikost
diskového oddílu
216 1 512 B 32 MB
216 2 1 kB 64 MB
216 4 2 kB 128 MB
216 8 4 kB  256 MB
216 16 8 kB 512MB
216 32 16 kB 1 GB
216 64 32 kB 2 GB

Je dobré si povšimnout, že se stoupající velikostí disku roste i minimální velikost spotřebovaná k uložení i velmi malého souboru. Např. i soubor o velikosti 10 bajtů zabere na 2 GB disku 32 kB skutečného místa (této neefektivně využité kapacitě se říká slack).

Jak funguje FAT32

Systém souborů FAT32 přináší kromě zvýšení počtu alokačních záznamů na 232 = 4G (nepoužívá se celý možný rozsah) a neomezenému počtu kořenových záznamů, ještě tu výhodu, že narozdíl od FAT16 používá dvě tabulky FAT (hlavní a záložní). Systém souborů je pak lépe zabezpečen proti nekonzistenci.

Joro: Existuje ještě jedno rozšíření FAT32, skrývá se trochu pod povrchem a je nazvané FAT32x (eXtension). Je to soubor extenzí umožňující zacházet s disky o kapacitě větší než 8.4GB. Původní specifikace daná konvencí CHS - Cylindetr/Head/Sector, omezovala kapacitu stanovením limitů na adresovatelné maximum 1024 cylindrů, 255 hlaviček a 63 sektorů (Pozor: toto adresovaní dodnes používá jak Win 3x tak i DOS). Zmíněná extenze FATu32 slouží k tomu, aby byl celý disk plně adresovatelný lineární metodou LBA.

Poznámka: Pamatujete si na otázku "Chcete zapnout správu velkých disků?", kterou Vám klade po startu každý novější FDISK? Vězte tedy, že se jedná právě o zavedení oněch extenzí umožňujících využít všechny dostupné gigabajty vašeho disku...

Zvýšení počtu alokačních záznamu umožňuje používat velké disky vcelku (neplatí limit 2GB na jednu partition), a to navíc při menší velikosti clusterů, což přispívá k lepšímu využití diskové kapacity.

Výchozí velikost clusterů v závislosti na velikost oddílu u FAT32

velikost disk. oddílu výchozí velikost clusteru
do 8 GB 4 kB
do 16 MB 8 kB
nad 16 GB * 16 kB

* toto mám ověřeno u disků do 30 GB (větší jsem v pařátech neměl)

Tip: Málokdo ví, že velikost clusteru lze určit již při formátování oddílu např.: format c: /z:16
Právě parametr /z: určuje počet sektorů na cluster a musí být mocninou při základu 2^n.

Určitě si přečtěte

Články odjinud