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.