File Allocation Table

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

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í[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

V roce 1995 vyšlo s Windows 95 další rozšíření 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ž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[editovat | editovat zdroj]

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[1][2] a tyto verze Windows obsahují též vadný nástroj fdisk, který nepracuje správně s oddíly většími, než 64 GB.[3] Opravený nástroj fdisk je k dispozici, avšak neumožňuje vytvářet oddíly větší než 512 GB.[4]

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í.[1][5] Větší existující oddíly však mohou být bez problému naformátovány jinými programy.[6]

FAT+[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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 7 v roce 2009. Systém exFAT se využívá u SDXC karet.

Struktura[editovat | editovat zdroj]

Boot sektor (VBR, spouštěcí záznam svazku)[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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).

Alokační tabulka souborů (FAT)[editovat | editovat zdroj]

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ář[editovat | editovat zdroj]

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.

Algoritmy[editovat | editovat zdroj]

Vytvoření položky v adresáři[editovat | editovat zdroj]

  1. Alokuj volný cluster.
  2. Zapiš první část souboru do toho clusteru.
  3. Pokud neexistuje další část souboru, tak konec.
  4. Alokuj volný cluster.
  5. Zapiš další část souboru do alokovaného clusteru.
  6. Zpět na krok číslo 3.

Smazání položky v adresáři[editovat | editovat zdroj]

  1. Najdi začátek clusteru souboru.
  2. Nastav obsah tohoto clusteru na hodnotu 0xE5.

Prohledávání adresáře - hledání souboru[editovat | editovat zdroj]

  1. Načti další cluster adresáře, pokud neexistuje, tak konec - soubor nebyl nalezen.
  2. Pokud je cluster začátek souboru, porovnej název s názvem souboru (pokud jsou stejné, tak konec - soubor byl nalezen)
  3. Pokud ne, zpět na krok 1

Alokace volného clusteru[editovat | editovat zdroj]

  1. Prohledávej FAT tak dlouho, dokud nenajdeš volný cluster.
  2. Nastav tento cluster jako následující použitelný.

Problémy[editovat | editovat zdroj]

  • 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[editovat | editovat zdroj]

  1. a b Limitations of FAT32 File System [online]. Microsoft Help and Support, 2004-12-16, [cit. 2006-10-14]. Dostupné online.  
  2. http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q184006&
  3. Fdisk Does Not Recognize Full Size of Hard Disks Larger than 64 GB [online]. Microsoft Help and Support, 2007-01-27, [cit. 2007-03-08]. Dostupné online.  
  4. Fdisk.exe Unable to Partition Drives Larger Than 512 Gigabytes
  5. Chen, Raymond (2006). Microsoft TechNet: A Brief and Incomplete History of FAT32. TechNet Magazine July 2006.
  6. Fat32Format – program pro formátování disků s FAT32 za hranici 32 GB limitu

Související články[editovat | editovat zdroj]

Externí odkazy[editovat | editovat zdroj]