File Allocation Table

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. Používá se pro nalezení souboru (allocation), který je zapsaný na disku.

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 navržen a naprogramován Marcem McDonaldem v roce 1977 na základě série diskuzí s Billem Gatesem jako 8bitový pro předchůdce Standalone Disk BASIC-80. V srpnu 1980 Tim Paterson začlenil FAT do operačního systému 86-DOS (QDOS), přičemž rozšířil záznam ve FAT na 12 bitů a prodloužil názvy souborů z 6+3 na 8+3, čímž vznikl formát FAT12. Protože bylo pro adresy clusterů k dispozici 12 bitů, byl omezen počet clusterů na 4096, což omezovalo celkovou kapacitu na 16 MB. V roce 1981 se 86-DOS přerodil na MS-DOS a IBM PC DOS.

FAT16 
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 KB). Při jednosektorovém clusteru tak byla maximální možná velikost logického disku 32 MB, při maximálním 2 GB (Dodatečné rozšíření u Windows NT/2000/XP a EDR-DOSu: 64 KB velikost clusteru, logického disku až 4 GB). 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.

VFAT 
V roce 1995 vyšlo s Windows 95 další rozšíření pro FAT12 a FAT16, nazývané VFAT (z anglického Virtual File Allocation Table). Novinkou byla podpora dlouhých jmen souborů (delších než původních 8 znaků jména a 3 znaky přípony). Požadované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 bezprostř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ětšinou) pouze krátký název souboru 8+3 uložený v posledním záznamu).

FAT32 
V roce 1997 vyšla verze nazývaná FAT32. Přináší 32bitové adresy clusterů, kde číslo alokační jednotky využívá 28 bitů. Tím se zvyšuje limit velikosti diskového oddílu na 8 TiB pro 32 kiB cluster (228×32 kiB) a velikost souborů na 4 GB (přesně 232−1 bajtů), takže není vhodný pro ukládání velkých souborů, jako jsou obrazy DVD, velké soubory s videem a podobně.

Limitem jsou však i další omezení, která je nutno vzít v úvahu. Systém DOS využívá pro čtení disku BIOS, takže jejich limitem je adresace CHS s hranicí 32 GB (uplatňuje se v prostředí DOSu nebo při startu Windows 95 a 98). Omezení LBA adresace je až do specifikace ATA 66 omezeno hranicí 128 GB (tj. možností komunikace přes starší verzi IDE rozhraní s PATA kabelem). Vadný nástroj scandisk ve Windows 95 a 98 nepracuje s oddíly většími než 128 GB a tyto verze Windows obsahují též vadný nástroj fdisk, který nepracuje správně s oddíly většími, než 64 GB. Opravený nástroj fdisk je k dispozici, avšak neumožňuje vytvářet oddíly větší než 512 GB.

Nativní podpora pro 32bitové systémy je obsažena ve Windows 2000 a novějších (včetně Windows XP), které tak umožňují číst a zapisovat na libovolně velký oddíl s FAT32. Záměrně však obsahují nástroj, který umožňuje naformátovat pouze oddíl s maximální velikostí 32 GB (stejný limit uplatňuje také instalační program), protože Microsoft považuje tak velké souborové systémy FAT za pomalé a neefektivní.<ref name="TechNet on FAT32">Chen, Raymond (2006).  Microsoft TechNet: A Brief and Incomplete History of FAT32. TechNet Magazine July 2006.</ref> Větší existující oddíly však mohou být bez problému naformátovány jinými programy.

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

 exFAT 

V roce 2007 Microsoft uvedl patentovanou exFAT. Nový souborový systém jednodušší než NTFS a podobný FAT, ale nebyl zcela kompatibilní. Podpora nastoupila s Windows Vista po vydání SP1 v roce 2007. Systém exFAT se využívá u SDXC karet.

 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 
Blok parametrů disku obsahuje 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).

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 se první 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é hierarchie 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 oddílu)

Reference

Související články 
 ExFAT
 Master boot record
 Diskový oddíl
 Souborový systém
 DOS , FreeDOS
 Cluster
 HPFS, NTFS – modernější souborové systémy (používané v OS/2 resp. Windows NT), na jejichž vývoji se také podílel Microsoft

Externí odkazy 
 FAT32 specifikace od Microsoftu
 FATplus

Souborové systémy