Přeskočit na obsah

File Allocation Table

Z Wikipedie, otevřené encyklopedie

FAT je zkratka anglického názvu File Allocation Table. Jedná se o tabulku obsahující informace o obsazení disku v souborovém systému vytvořeným pro DOS. Zároveň se tak označuje zmíněný souborový systém.

Rozšíření

FAT je jednoduchý souborový systém, proto je podporován prakticky všemi operačními systémy. Určitě ho podporují MS-DOS, FreeDOS, OS/2, Linux, FreeBSD a BeOS. Kvůli jednoduchosti a rozšíření je velmi často používán na výměnných médiích, jako je disketa (zde se používá verze FAT12), USB flash disk nebo IOMEGA ZIP disk (pozor, na CD se nepoužívá).

Historie

Souborový systém FAT byl vytvořen v srpnu 1980 s první verzí QDOSu, předchůdce MS-DOSu. První verze neuměla podadresáře a používala 12 bitů pro adresaci sektoru (což omezovalo velikost disku na 2 MiB).

V roce 1983 Microsoft vydal další verzi s podporou podadresářů a používající 16 bitů na adresaci clusteru. Cluster mohl být tvořen jedním nebo více sektory (pouze mocniny dvou), maximálně ovšem 64 (velikost 32 KiB). Při jednosektorovém clusteru tak byla maximální možná velikost logického disku 32 MiB, při maximálním 2 GiB (Dodatečné rozšírení u Windows NT/2000/XP a EDR-DOSu: 64 KiB velikost clusteru, logického disku až 4 GiB). Tato verze se obvykle nazývá FAT16 s tím, že verzi s 12 bity (ovšem s doplněnou podporou podadresářů) se říká FAT12.

V roce 1995 vyšlo s Windows 95 další rozšírení pro FAT12 a FAT16, nazývané VFAT. Novinkou byla podpora dlouhých jmen souborů (delších než původních 8 znaků jména a 3 znaky přípony). Požadováného efektu bylo dosaženo tak, že každý soubor s dlouhým názvem obsahuje v seznamu adresářových položek (v seznamu souborů v adresáři) více záznamů umístěných bezprosředně za sebou, přičemž až poslední záznam je standardním záznamem typu FAT. Předchozí záznamy mají příznaky souboru nastavené tak, aby byly staršími operačními systémy ignorovány (proto tyto zobrazují (větsinou) pouze krátký název souboru 8+3 uložený v posledním záznamu).

V roce 1997 vyšla verze nazývaná FAT32. Novinkou bylo použití 32 bitové adresy clusteru. To zvyšuje limit velikosti logického disku na 2 TiB. Praktické limity (okolo 32 GiB nebo 128 GiB) jsou způsobeny „externími“ přičinami jako BIOSem nebo chybou ve scandisku [1]. Mezi hlavní omezení FAT32 patří maximální velikost souboru 4 GiB, což činí tento souborový systém nevhodný pro ukládání DVD obrazů (DVD image).

V roce 2006 bylo nezávislými programátory publikováno kompatibilni rozšíření FAT+ (FATplus), zvyšující maximální velikost souboru ze 4 GiB na 256 GiB. Je implementováno v systému Enhanced-DR-DOS, plánuje se i pro FreeDOS.

V roce 2007 Microsoft oznámil vynález exFAT, nový souborový systém jednodušší než NTFS a podobný FAT, ale nekompatibilní s ním.

Struktura

Boot sektor (VBR, spouštěcí záznam svazku)

První sektor logické oblasti disku (označované také jako diskový oddíl, logický oddíl, svazek nebo partition) obsahující souborový systém FAT se skládá ze dvou částí: blok parametrů disku a spouštěcí kód svazku.

Drobné upozornění: Boot sektor není totéž co Master boot record (hlavní spouštěcí záznam), který je úplně prvním sektorem na fyzickém disku a obsahuje tabulku rozdělení disku (Partition table) a hlavní spouštěcí kód. Nicméně boot sektor i master boot record jsou oblíbeným místem počítačových virů, neboť kód uložený v těchto sektorech bývá vykonán dříve než samotný operační systém.

Blok parametrů disku

Obsahuje specifické informace o svazku jako např. verze, počet sektorů na cluster, počet rezervovaných sektorů před první FAT, počet FAT, počet sektorů kořenového adresáře, celkový počet sektorů na disku, počet sektorů v jedné FAT, název svazku (volume label).

Spouštěcí kód svazku

Program, který zahájí proces spouštění operačního systému (u systémů MS-DOS a Windows 9x načte soubor IO.SYS a předá mu řízení).

Alokační tabulka souborů (FAT)

Tato tabulka popisuje přiřazení každého clusteru v oddílu (1 záznam odpovídá 1 clusteru). Obvykle existují 2 kopie (obě jsou uloženy bezprostředně za sebou) – ta druhá je použita v momentě, kdy první se stane nečitelnou.

Přiřazení clusteru může nabývat různých specifických hodnot jako např. volný (0x0000), vadný (0xFFFE), cluster indikující konec souboru (0xFFFF), nebo obsahuje číslo následujícího clusteru souboru.

Kořenový adresář

V původní verzi obsahoval jednoduchou databázi obsahující veškeré informace o všech souborech, které jsou známé operačnímu systému, v příslušném oddílu. Se zavedením podadresářů (tedy dalších adresářů kromě tohoto) se stal kořenem stromové hiearchie adresářů: záznam o podadresáři v něm uložený neobsahuje žádné informace o souborech uložených v tomto podadresáři (ani součet velikostí), pouze informace o podadresáři. Pokud bychom tedy chtěli pracovat s databází souborů, museli bychom přečíst všechny adresáře (pro běžnou práci se svazkem to ovšem není nutné).

U FAT12 a FAT16 byla jeho velikost stanovena napevno při vytváření souborového systému, od verze FAT32 může být uložen kdekoliv a jeho velikost může libovolně narůstat.

Problémy

  • Fragmentace
  • Ztracené clustery (pokud jsou ve FAT tabulce clustery označené jako používané avšak k žádnému souboru nejsou přiřazeny)
  • Překřížené soubory (pokud ve FAT tabulce jsou pro 2 nebo více souborů vyhrazeny clustery se stejným číslem)
  • Poškozená FAT (pokud je souboru přiřazen blok několika clusterů, avšak ukazatel v některém z těchto clusterů ukazuje za konec disku nebo partice)

Související články

Externi odkazy