File Allocation Table (kurz FAT [], für Dateizuordnungstabelle) bezeichnet eine ursprünglich 1977 von Microsoft entwickelte, weit verbreitete Familie von Dateisystemen, die zum Industriestandard erhoben wurde und bis heute auch über Betriebssystemgrenzen hinweg als fast universelles Austauschformat dient. Wesentliche Erweiterungen wurden auch von Seattle Computer Products, Compaq, Digital Research und Novell eingebracht. Als proprietäre Nachfolger entwickelte Microsoft NTFS und exFAT.

Hintergrund Das FAT-Dateisystem wurde ursprünglich 1977 in einer 8-Bit-Variante von Marc McDonald für Microsofts Standalone Disk BASIC-80 für 8080-Prozessoren entwickelt, 1978 auf einer DEC PDP-10 unter Zuhilfenahme eines 8086-Simulators für Standalone Disk BASIC-86 portiert und 1979 für Microsofts Betriebssystem MDOS/MIDAS adaptiert.

Ebenfalls 1979 wurde Standalone Disk BASIC-86 von Bob O’Rear auf eine von Seattle Computer Products (SCP) entwickelte S-100-Bus-Hardware-Plattform angepasst. Bei dieser Gelegenheit wurde Tim Paterson auf das Dateisystem aufmerksam, das er 1980 als konzeptionelle Grundlage seines 12-Bit-Dateisystems für SCPs Betriebssystem QDOS wählte, welches, umbenannt in 86-DOS, von Microsoft zunächst lizenziert, aufgekauft und daraufhin 1981 die Ausgangsbasis für MS-DOS und PC DOS 1.0 wurde.

Zu der Familie der FAT-Dateisysteme gehören: FAT12 wird für jede DOS-Diskette verwendet (u. a. unter Windows, aber auch z. B. macOS), findet sich aber auch auf SD-Karten geringer Speicherkapazität. Der Atari ST benutzt ein fast identisches Dateisystem und kann FAT12-Disketten lesen und beschreiben. FAT16 wird auf allen Arten von mobilen Datenträgern (außer Disketten) mit einer Größe von bis zu 2, selten bis 4 GiB verwendet. FAT16 findet auch auf Geräten mit SD-Karten der Version 1.0/1.1 mit bis zu 4 GB Speicherkapazität Verwendung, wie beispielsweise ältere Digitalkameras. FAT32 wird z. B. in allen Arten von mobilen Speichern von mehr als 2 GiB Kapazität genutzt. Unter Windows 9x ab Version 95b und einigen späteren DOS-Systemen diente es auf Festplatten als Ersatz für FAT16 und wird auf vielen SDHC-Karten mit Speicherkapazitäten bis zu 32 GB verwendet. FAT32 ist das Dateisystem der EFI-Systempartition (ESP). TFAT (Transaction-safe FAT) ist eine Variante von FAT, die von Microsoft unter Windows CE und Windows Mobile eingesetzt wird. FAT+ (FAT32+/FAT16+) ist eine rückwärtskompatible Erweiterung von FAT32 (und theoretisch auch FAT16B), die die maximale Größe einer Datei von 4 GiB auf 256 GiB erhöht.

An FAT angelehnte Neuentwicklungen: exFAT ist ein speziell für Flash-Speicher entwickeltes Dateisystem mit einer theoretischen maximalen Dateigröße von 16 EiB, das sich konzeptionell entfernt an FAT anlehnt. Es ist bei SDXC-Speicherkarten das im Standard vorgeschriebene Dateisystem. In exFAT ist TexFAT, Transaction-safe exFAT, als Option inkludiert.

Typen Die Varianten von FAT sind aufbauende Weiterentwicklungen, wobei die Datenstrukturen vor allem an die größere Speicherkapazität von Festplatten angepasst wurden. Das 2006 speziell für Flash-Speicher eingeführte exFAT ist hingegen eine Neuentwicklung.

+ ÜberblickEigenschaftFAT12FAT16FAT32exFATBits je Cluster in Zuordnungstabelle12163232Maximale Dateigröße4 GiB (232 B)−1 B4 GiB−1 B4 GiB−1 B16 EiB (264 B)−1 BAnzahl der Clustermax. 4084 (212−12)4085 bis (216−12) bis (228−12)max. (232) FAT12

Mit der 1980 erschienenen ersten Version von QDOS bzw. 86-DOS wurde FAT12 als Dateisystem für 8″- und 5¼″-Disketten eingeführt. Erst ab 86-DOS 0.42 vom Februar 1981 wiesen die internen Ordnungsstrukturen ein Format auf, das dem späteren FAT12-Format in MS-DOS und PC DOS in allen wesentlichen Punkten glich. Aufgrund abweichender logischer Geometrien und der Tatsache, dass der BIOS Parameter Block (BPB) erst mit DOS 2 eingeführt wurde, können jedoch (mit Ausnahme von SCP MS-DOS 1.25) weder MS-DOS noch PC DOS auf Disketten zugreifen, die unter 86-DOS formatiert wurden.

Anfangs wurden keine Unterverzeichnisse verwaltet. Das änderte sich mit MS-DOS Version 2.0 vom März 1983.

FAT12 wird nur auf Datenträgern bzw. Partitionen bis zu einer Größe von 16 MiB eingesetzt; es ist bis heute auf allen FAT-formatierten 3½″-Disketten im Einsatz.

Merkmale:

12-Bit-Clusternummern, mit denen 212 = 4096 Cluster angesprochen werden können. Die Nummerierung der Cluster beginnt auf Disketten bei der Nummer 2. Es werden nur Dateinamen im Schema 8.3 (acht Zeichen für den Dateinamen und drei Zeichen für die Dateinamenserweiterung) unterstützt. Die Clustergröße beträgt 512 Byte bis 4096 Byte. Das Hauptverzeichnis (Root-Directory) der Partition ist auf eine Größe von 14 Clustern beschränkt, dadurch ergibt sich eine maximale Anzahl von 224 Einträgen (Verzeichnisse und/oder Dateien). Normalerweise wird der erste Eintrag durch die Bezeichnung des Datenträgers belegt. Unterstützt werden die Dateiattribute „Schreibgeschützt“, „Versteckt“, „System“ und „Archiv“. Unterstützung für Passwörter und Zugangsberechtigungen für Dateien oder Ordner ist in Microsoft-Betriebssystemen nicht implementiert, ist jedoch optional unter allen Betriebssystemen verfügbar, die die entsprechenden FAT-Erweiterungen von Digital Research und Novell unterstützen.

FAT16

FAT16 ist ein Dateisystem, das 1983 zu FAT12 dazukam. Durch die zunehmende Größe der eingesetzten Festplatten wurde eine Erweiterung des Adressraumes notwendig. Nun waren selbst mit 512-Byte-Clustern zumindest theoretisch insgesamt 32 MiB große Platten verwaltbar.

Die ursprüngliche FAT16-Implementierung verwendete auf partitionierten Medien in der Regel (abhängig vom jeweiligen DOS-OEM) den Partitiontyp 04h und einen noch vergleichsweise kurzen BIOS Parameter Block (BPB) im Bootsektor. Dessen genauer Aufbau und Inhalt hing insbesondere bei DOS 2.x noch stark von der verwendeten DOS-Version ab, er enthielt jedoch in allen Fällen nur einen 16-Bit breiten Eintrag für die Sektorenanzahl, was die Größe von FAT16-Laufwerken auf 32 MiB bis 512 MiB beschränkte (je nach Betriebssystemversion). Mit OS/2 Release 1 wurde ein Enhanced BIOS Parameter Block (EBPB) eingeführt, erkennbar am Signaturbyte 28h (für DOS-BPB-Version 4.0) an Offset +26h. Mit Einführung von DOS 3.31 wurde dieser durch den nochmals erweiterten, heute allgemein für FAT12 und FAT16 verwendeten Extended BIOS Parameter Block (XBPB) mit Signatur 29h (für DOS-BPB-Version 4.1) an Offset +26h ersetzt. EBPB und XBPB zeichnen sich u. a. dadurch aus, dass der Eintrag für die Zahl der Sektoren auf 32-Bit Breite wuchs, womit erstmals FAT16-Laufwerke mit bis zu 2 GiB, später 4 GiB, möglich wurden, auch wenn die damaligen Betriebssysteme davon noch keinen Gebrauch machen konnten. Diese größere Variante von FAT16 wurde in Entwicklerkreisen „BigDOS“ genannt, daher stammt auch ihr offizieller Name FAT16B. Da ältere Betriebssysteme mit diesem neuen Typ nicht arbeiten konnten, wurde für die Verwendung auf partitionierten Medien auch ein neuer Partitionstyp (06h) dafür definiert. Die alte FAT16-Variante wird zwar nach wie vor unterstützt, findet aber (bis auf die forcierte Erzeugung von sehr kleinen FAT16-Partitionen mit dem Partitionstyp 04h) in der Praxis keine Verwendung mehr, da spätestens seit DOS 5 bei der Erzeugung von FAT12- und FAT16-Partitionen gleichermaßen nur noch Bootsektoren mit XBPB geschrieben werden, um einige neue Betriebssystemfunktionen optimal zu unterstützen. Die Tatsache, dass es eigentlich zwei FAT16-Typen gibt, ist in der Allgemeinheit nicht mehr präsent, mehr noch, da FAT12 fast nur noch für Disketten verwendet wird, wird heute FAT oft fälschlicherweise nur mit FAT16 (und das auch nur in der beschriebenen FAT16B-Variante) gleichgesetzt, obwohl darunter eigentlich mehrere FAT12- und FAT16-Typen zu verstehen wären. Allerdings benötigt das Server-Betriebssystem Novell-NetWare bis zur Version 4.0 noch eine bis zu 16 MiB große „DOS“-Bootpartition, die (automatisch) mit FAT12 erzeugt wurde.

Erfolgt der Zugriff über Logical Block Addressing (LBA), wird eine FAT16-Partition auch als FAT16X bezeichnet.

FAT16 hat folgende Merkmale: Rund 65.000 Datei-Einträge sind maximal möglich,Je nach Quelle sind es entweder maximal 65.536 oder 65.460 Dateien, die mit FAT16 maximal möglich sind:

davon üblicherweise 512 im Stammverzeichnis (obwohl dies variabel ist, ist 512 de facto der einzige anzutreffende Wert). Maximal 512 Einträge pro Unterverzeichnis, bei Verwendung von LFN entsprechend weniger. Es können 216 − 12 = 65.524 Cluster angesprochen werden (12 Cluster reserviert FAT16, deshalb nicht 65.536). 8.3-Dateinamensformat; LFN möglich. Die Partitionsgröße ist unter MS-DOS und Windows 9x (die auf DOS basieren) bei der Neuanlage unter FDISK auf 2 GiB begrenzt, bei der Anlage mit Fremdprogrammen können sie knapp unter 4 GiB verwalten. Windows NT, FreeDOS und Enhanced DR-DOS können FAT16-Partitionen mit der maximalen Größe erzeugen und verwalten (Clustergröße 64 KiB). Die Cluster sind je nach Partitionsgröße zwischen 512 Byte und maximal 32 KiB (Windows NT und Enhanced DR-DOS maximal 64 KiB) groß. Dateien dürfen bis 2 GiB groß werden, unter Windows NT und Enhanced DR-DOS 4 GiB. Das Haupt-(Root-)Verzeichnis muss sich an einer bestimmten Position auf dem Datenträger befinden. Seine Größe wird bei Erstellung des Dateisystems festgelegt, d. h., es kann nicht wachsen.

Eine Weiterentwicklung erfolgte mit FAT32.

FAT32

FAT32 ist ein von Microsoft entwickeltes Dateisystem, das im Sommer 1996 mit Windows 95B eingeführt wurde und die Vorgängerversion FAT16 ergänzt.

Partitionen kleiner als 512 MiB werden nach wie vor mit FAT16 erzeugt, von 512 MiB bis 2 GiB hat man die Wahl, ab 2 GiB wird FAT32 benutzt. Die Adressierung arbeitet mit 32 Bits, wovon 4 Bits reserviert sind, so dass 228 = 268.435.456 Cluster adressiert werden können.

FAT32 kann außerdem mit allen Windows-Versionen seit Windows 95B sowie – anders als NTFS – problemlos auch mit FreeDOS und Enhanced DR-DOS verwendet werden. Da Windows je nach Version von Haus aus nur wenige Dateisysteme unterstützt, wird FAT32 trotz seiner Beschränkungen zum Datenaustausch sowohl mit anderen Windows-Systemen als auch mit Nicht-Windows-Systemen (z. B. macOS, Linux) eingesetzt, z. B. auf USB-Speichersticks und mobilen Festplatten.

Spielekonsolen wie beispielsweise die PlayStation 3 oder digitale Satellitenreceiver setzen bei extern angeschlossenen Festplatten häufig FAT32 als Dateisystem voraus.

Ein Nachteil eines standardkonformen FAT32-Dateisystems ist, dass nur Dateien erstellt werden können, die kleiner als 4 GiB sind. (Mit FAT32+ kann das Limit auf 256 GiB angehoben werden.)

Da bis zu einer Partitionsgröße von 8 GiB ein Cluster nur 4 KiB groß ist (bei der Standardformatierung), werden diese „kleinen und alten“ Platten verhältnismäßig besser ausgenutzt als mit FAT16, wo ein Cluster bis zu 32 KiB belegt (unter Windows NT wie beispielsweise Windows 2000 FAT16-Clustergröße maximal 64 KiB).

Erfolgt der Zugriff über Logical Block Addressing (LBA), wird eine FAT32-Partition auch als FAT32X bezeichnet.

FAT32 hat folgende Merkmale: Es werden bis zu 228 = 268.435.456 Cluster verwendet. Die maximale Dateisystemgröße hängt von der Sektorengröße des verwendeten Mediums ab. Bei Festplatten, die typischerweise 512 Bytes Sektorengröße haben, beträgt die maximale Größe 2 Tebibyte; bei Datenträgern, die 4 KiB Sektorengröße verwenden, beträgt die maximale Größe 16 Tebibyte. Die Größe ist primär durch das vier Bytes große Gesamtsektoranzahl-Feld (Offset 20h) im Bootsektor begrenzt. Die Cluster sind je nach Partitionsgröße zwischen 512 Byte und maximal 32 KiB groß. Dateien dürfen max. bis zu 4 GiB − 1 Byte (= 4.294.967.295 Byte) groß werden. Diese Grenze ist eine Folge des nur 4 Byte breiten Feldes für die Dateigröße in der Directory-Tabelle. Es können maximal 228 Dateien abgelegt werden; da jede Datei mindestens einen Cluster belegt, beschränkt die maximale Anzahl der Cluster die maximale Anzahl Dateien.