File Allocation Table


File Allocation Table (kurz FAT [fæt], englisch 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.

Inhaltsverzeichnis

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:

Typen


FAT12

Mit der 1980 erschienenen ersten Version von QDOS bzw. 86-DOS wurde FAT12 als Dateisystem für 8,0″- und 5,25″-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 unter 86-DOS formatierte Medien zugreifen.

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

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,5″-Disketten im Einsatz.

Merkmale:

FAT16

FAT16
Hersteller Microsoft
Vollständige Bezeichnung File Allocation Table
Erstveröffentlichung 1984 (MS-DOS 3.0)
Maximalwerte
Größe einer Datei 2 GiB (NT: 4 GiB)
Größe des Dateisystems 2 GiB (NT: 4 GiB)
Eigenschaften
Datumsangaben einer Datei Änderung
Datumsbereich 1. Januar 1980 bis 31. Dezember 2107
Dateiattribute schreibgeschützt, versteckt, System-Datei, Archiv
Unterstützende Betriebssysteme auf zahlreichen Systemen implementiert

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:

Eine Weiterentwicklung erfolgte mit FAT32.

FAT32

FAT32
Hersteller Microsoft
Vollständige Bezeichnung File Allocation Table
Erstveröffentlichung 1996 (Windows 95B)
Maximalwerte
Größe einer Datei 4 GiB minus 1 Byte
Anzahl aller Dateien 268.435.456 (228)
Größe des Dateisystems TiB (bei typischen 512 Bytes Sektorgröße),

16 TiB bei 4 KiB Sektorgröße

Eigenschaften
Datumsbereich 1. Januar 1980 bis 31. Dezember 2107
Zeitstempel-Auflösung 2 s[4]
Dateiattribute schreibgeschützt, versteckt, System-Datei, Archiv
Unterstützende Betriebssysteme neben Windows 9x auch Windows NT ab 2000; auf zahlreichen Systemen implementiert

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.[5] Mit der rückwärtskompatiblen Erweiterung FAT32+ sind zwar auch Dateien bis zu 256 GiB[1] möglich, diese Erweiterung wird aber nur von wenigen Systemen unterstützt.

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:

Praxis-Limitierungen:

Da auch in aktuellen Windows-Installationen FAT32 und NTFS koexistieren können, ist zu beachten, dass bei der Übertragung von Dateien von NTFS auf FAT32 sowohl NTFS-Streams als auch die Berechtigungen verloren gehen, was je nach Anwendungszweck sinnvoll oder störend sein kann.

Erweiterungen


VFAT

VFAT (Virtual File Allocation Table) ist eine Erweiterung des FAT-Formats zur Verwendung langer Dateinamen, die auf FAT12, FAT16 und (seit dessen Einführung im Jahr 1996) auch auf FAT32 angewendet werden kann. Gelegentlich wird im Sprachgebrauch auch fälschlich VFAT mit FAT32 gleichgesetzt.

Die Designer von Windows 95 hatten das Ziel, die Nutzung von langen Dateinamen zu ermöglichen, obwohl die auf MS-DOS aufbauenden Versionen das unter der NT-Serie dafür vorgesehene Nachfolge-Dateisystem NTFS nicht unterstützen. Das wird durch einen Trick im Layout des Dateisystems erreicht. Die Datei wird wie bisher als 8.3-Dateiname gespeichert, bei längeren Namen wird jedoch ein Alias in der Form xxxxxx~1.xxx verwendet, wobei die Nummer hochgezählt wird. Der lange Name wird dann über mehrere Verzeichniseinträge verteilt, die eine Kombination von Datei-Attributen aufweisen, die ältere Systeme als ungültig ansehen und daher ignorieren.

Allerdings kann es durch die Verwendung des „Volume“-Attributes dazu kommen, dass ältere MS-DOS (vor 7.1) im dir-Befehl solche Einträge irrtümlich als Volumenamen interpretieren, vor allem, wenn der tatsächliche Volumename im Verzeichnis nicht an erster Stelle steht oder ganz fehlt.

Das endgültige Format erlaubt bis zu 255 Zeichen lange Dateinamen (wobei der Name inklusive Speicherpfad bis zu 260 Zeichen enthalten kann) und nutzt Unicode als Zeichensatz mit der Kodierung UCS-2.

In bisher von Microsoft-Systemen nicht genutzten Bereichen des Eintrages mit dem 8.3-Dateinamen werden nun auch das Erstelldatum und das Datum des letzten Zugriffes gespeichert.

Unterstützung in Betriebssystemen

Windows for Workgroups 3.11 unterstützt VFAT optional, jedoch nur für Festplatten und ohne die Möglichkeit langer Dateinamen.

VFAT wird in Windows 95 und höher und in Windows NT 3.5 und höher unterstützt.

Unter Linux wird die VFAT-Erweiterung vollständig unterstützt.

UMSDOS

In den frühen 1990er Jahren wurde von vielen Linux-Distributionen die UMSDOS-Erweiterung für FAT16 eingesetzt, um Linux zu installieren, ohne das Festplattenlaufwerk neu partitionieren und formatieren zu müssen. UMSDOS fügt zu einem FAT-Dateisystem eine darüberliegende Unix-kompatible Schicht hinzu. Diese verwaltet Dateien, die den Namen --linux-.--- tragen. Darin werden Benutzerrechte und auch lange Dateinamen gespeichert.

In Linux 2.6.11 wurde UMSDOS aus dem Kernel entfernt, da es nicht mehr weiterentwickelt wird. Es gibt als Ersatz ein POSIX-Overlay-Dateisystem, das FUSE verwendet und über einem normalen FAT-Dateisystem „eingeblendet“ werden kann.

UVFAT

UVFAT existierte nur für eine kurze Zeit und hat die VFAT-Erweiterung zur Speicherung langer Dateinamen genutzt, während der UMSDOS-Mechanismus für die unter allen FAT-Versionen fehlenden Benutzerrechte verwendet wurde. So waren unter Linux angelegte lange Dateinamen auch unter modernen Windows-Versionen lesbar und umgekehrt. Die Entwicklung wurde bereits vor derjenigen der UMSDOS-Erweiterung wieder eingestellt.

Derivate


Es gibt folgende Derivate:

exFAT

Überblick
Eigenschaft FAT12 FAT16 FAT32 exFAT
Bits je Cluster in Zuordnungstabelle 12 16 32 32
Maximale Dateigröße 4 GiB (232 Bytes)-1 B* 4 GiB-1 B 4 GiB-1 B 16 EiB (264 Bytes)-1 B
Anzahl der Cluster Maximal 4084 (212-12) 4085 bis 65.524 (216-12) 65.525 bis 268.435.444 (228-12) Maximal 4.294.967.296 (232)
* Durch Volumengröße begrenzt

exFAT (Extended File Allocation Table) ist ein speziell für Flash-Speicher entwickeltes Dateisystem. Eingeführt wurde es 2006 mit Windows CE 6.0. exFAT soll dort eingesetzt werden, wo NTFS nur schwer oder gar nicht implementierbar ist und zugleich die Beschränkungen von FAT32 – insbesondere maximale Dateigröße von 4 GiB – vermieden werden sollen. Windows 7, Windows 8 und Windows 10 unterstützen exFAT nativ, Windows Vista erst ab Service Pack 1.[9] Für Windows XP ab SP2 hat Microsoft ein Aktualisierungspaket.[10] Auf Apple-Computern wird exFAT ab Mac OS X Snow Leopard, Version 10.6.5, vollständig unterstützt.[11] Am 27. August 2019 veröffentlichte Microsoft die Spezifikationen für exFAT und erklärte, eine Implementation von exFAT im Linux-Kernel zu unterstützen und die Patente daran über das Open Invention Network freizugeben.[12] exFAT wird vom Linux-Kernel ab Version 5.4 direkt unterstützt,[13] in Kernel 5.7 wurde der Treiber durch einen besseren ersetzt.[14] Zuvor gab es bereits einen proprietären Linux-Treiber des Unternehmens Tuxera[15] sowie einen von der Firma Samsung unter der GPLv3 lizenzierten Treiber für FUSE.[16][17][18]

Im Rahmen der Spezifikationen für die Memory-Stick-XC- und SDXC-Flashspeicher-Kartentypen wird die Verwendung von exFAT vorgeschrieben; die Speicherkarten können zwar prinzipiell auch mit einem anderen Dateisystem formatiert werden, sind dann aber nicht Standardkonform und daher nicht in jedem Gerät (wie z. B. Digitalkamera) verwendbar.

Die Vorteile gegenüber vorherigen Versionen sind:

Nachteile:

TFAT

TFAT (Transaction-safe File Allocation Table) bietet insbesondere für mobile Geräte mit fest eingebautem Flash-Speicher Schutz vor Beschädigungen des Dateisystems, zum Beispiel wenn während einer Schreiboperation die Stromversorgung des Gerätes ausfällt.

Dafür wird die FAT doppelt geführt: einmal als FAT1 mit den aktuellen Dateizuordnungen und einmal als FAT0 mit dem letzten als konsistent bekannten Stand des Dateisystems. FAT0 wird erst nach erfolgreichem Abschluss einer Transaktion aktualisiert, indem FAT1 nach FAT0 kopiert wird. Eine Transaktion ist beispielsweise das Anlegen einer neuen Datei.

Während des Ablaufs einer Transaktion werden Änderungen am Dateisystem in neu angelegten Clustern gespeichert und FAT1 wird entsprechend angepasst. So kann im Fehlerfall eine unvollständig ausgeführte Transaktion durch Kopieren von FAT0 nach FAT1 rückgängig gemacht und das Dateisystem auf den Stand von vor Beginn der Transaktion zurückversetzt werden.

Das rechnerische Limit für TFAT-Partitionen liegt bei einer Sektorgröße von 512 Byte bei 2 TiB.

TFAT ist zwar explizit für nicht entfernbaren Speicher gedacht, kann jedoch auch mit Wechselspeichermedien verwendet werden. Allerdings kann es zu Problemen kommen, wenn ein TFAT-Medium in einem anderen Gerät ohne Unterstützung für TFAT verwendet wird. Es ist dann zwar prinzipiell möglich auf das Medium zuzugreifen, aber weil es dabei wie ein normales FAT-Medium behandelt wird, erfolgen Schreibvorgänge nicht transaktionssicher. Auch können aufgrund von Unterschieden in den Datenstrukturen mit TFAT erstellte Verzeichnisse nicht von FAT-Systemen gelöscht werden.

TFAT wird üblicherweise nicht von Desktopsystemen unterstützt. Unterstützt wird es von Microsoft für Mobilgeräte seit Windows Mobile 6.5 und Windows CE ab Version 6.0.[22]

Aufbau


Ein FAT-Dateisystem gliedert sich in fünf Bereiche:

Überblick über die Struktur innerhalb einer FAT-Partition
Inhalt Bootsektor FS Informations Bereich

(nur FAT32)

Ggf. weitere reservierte Bereiche File Allocation Table (FAT) Nummer 1 File Allocation Table Nummer 2 (& ggf. weitere) Root-Verzeichnis (nur FAT12/FAT16) Datenbereich (für Dateien und Ordnerstrukturen) ... (bis zum Ende der Partition)
Größe in Sektoren (Anzahl an reservierten Sektoren) (Anzahl von FATs) * (Sektoren pro FAT) (Anzahl an Root Verzeichnissen *32) / (Bytes pro Sektor) (Anzahl von Clustern) * (Sektoren pro Cluster)

Alle Mehrbyte-Werte (16/32 Bit) sind im Little Endian gespeichert, d. h. niederwertigste Bytes zuerst.

Bootsektor

Der Bootsektor kann x86-Maschinencode (Bootloader) enthalten, der das Betriebssystem laden soll. An anderen Stellen enthält er Informationen über das FAT-Dateisystem.

Offset
(hex)
Länge
(dec)
Inhalt
00 3 x86-Maschinencode. In der Regel eine Sprunganweisung zum Boot-Code, um die Datenbytes im Bootsektor zu überspringen.
Beispiel: EB 3C 90; für x86-Prozessoren hat dieser Code die folgenden Anweisungen: JMP SHORT 003C; NOP.
03 8 OEM-Name (mit Leerzeichen aufgefüllt). MS-DOS ermittelt anhand dessen, welche Struktur die übrigen Daten im Bootsektor haben[23][24]. Übliche Werte sind IBM  3.3 (mit zwei Leerzeichen zwischen „IBM“ und „3.3“) und MSDOS5.0. Im Prinzip ist der Name frei definierbar, Formatierungsprogramme verwenden häufig ihre eigenen Namen.
0B 2 Byte pro Sektor (Gültige Werte sind: 512, 1024, 2048 und 4096. In der Regel ist der Wert 512.)
0D 1 Sektoren pro Cluster (Zweierpotenz zwischen 1 und 64, ggf. auch 128)
0E 2 Anzahl reservierter Sektoren (inkl. Bootsektor, also stets mind. 1)
10 1 Anzahl der FAT-Kopien (in der Regel: 2)
11 2 Maximale Anzahl an Verzeichniseinträgen im Stammverzeichnis (Ungenutzt bei FAT32 und stets 0000hex)
13 2 Gesamtsektoranzahl des Mediums max. 65535, bei größeren Medien ist dieser Wert 0, und der eigentliche Wert steht als 4-Byte-Wert an Offset 20hex. Bei FAT32 stets ungenutzt.
15 1 Media Descriptor Byte[25]. Gilt als veraltet und wird ab Windows Server 2003 nicht mehr beachtet.
0xF0 Beidseitig, 80 Spuren, 18/36 Sektoren pro Spur (1440 KiB- sowie 2880 KiB-3½″-Diskette)
0xF8 Festplatte
0xF9 Beidseitig, 80 Spuren, 9/15 Sektoren pro Spur (720 KiB-3½″- bzw. 1200 KiB-5¼″-Diskette)
0xFA Einseitig, 80 Spuren, 8 Sektoren pro Spur (320 KiB-3½″- bzw. -5¼″-Diskette).
Wird auch für Ramdisks verwendet
0xFB Beidseitig, 80 Spuren, 8 Sektoren pro Spur (640 KiB-3½″- bzw. -5¼″-Diskette)
0xFC Einseitig, 40 Spuren, 9 Sektoren pro Spur (180 KiB-5¼″-Diskette)
0xFD Beidseitig, 40 Spuren, 9 Sektoren pro Spur (360 KiB-5¼″-Diskette)
Beidseitig, 77 Spuren, 26 Sektoren pro Spur (500 KiB-8″-Disketten)
0xFE Einseitig, 40 Spuren, 8 Sektoren pro Spur (160 KiB-5¼″-Diskette)
Einseitig, 77 Spuren, 26 Sektoren pro Spur (250 KiB-8″-Disketten)
Beidseitig, 77 Spuren, 8 Sektoren pro Spur (1200 KiB-8″-Disketten)
Die beiden 8″-Disketten-Formate wurden darin unterschieden, ob Lesezugriffe auf die Seite 2 erfolgreich sind.
0xFF Beidseitig, 40 Spuren, 8 Sektoren pro Spur (320 KiB-5¼″-Diskette)
16 2 Anzahl der Sektoren pro FAT. (Bei FAT32 ungenutzt und stets 0000hex, siehe Offset 24hex.)
18 2 Sektoren pro Spur
1A 2 Anzahl der Seiten bzw. Schreib-Lese-Köpfe
1C 4 Anzahl der „versteckten“ Sektoren vor dem Bootsektor. Bei Festplatten ist das die Anzahl der Sektoren zwischen Master Boot Record und dem Bootsektor der Partition. Bei nicht partitionierten Medien (ohne MBR) stets 0.
20 4 Gesamtsektoranzahl, falls größer als 65535

Anschließend unterscheiden sich die Daten je nach FAT-Variante. Bei FAT12 und FAT16 folgt diese Datenstruktur:

Offset
(hex)
Länge
(dec)
Inhalt
24 1 Physische BIOS-Laufwerksnummer (00hex bei Disketten, 80hex, 81hex, … bei Festplatten). Ist nur für Bootlaufwerke relevant, da diese Nummer beim Booten für BIOS-Aufrufe zum Zugriff auf das Medium benutzt wird.
25 1 Reserviert. Dieses Byte wird oft benutzt, um ein möglicherweise beschädigtes Dateisystem zu markieren.
26 1 Erweiterte Bootsignatur
27 4 Dateisystem-ID (Seriennummer). Wird beim Anlegen des Dateisystems erzeugt und dient der Unterscheidung verschiedener Medien (z. B. bei Wechselmedien)
2B 11 Name des Dateisystems (durch Leerzeichen aufgefüllt). Veraltet. Wurde durch einen speziellen Verzeichniseintrag im Stammverzeichnis abgelöst
36 8 FAT-Variante, mit Leerzeichen aufgefüllt, z. B. FAT12   , FAT16   .
3E 448 x86-Maschinencode des Bootloaders
1FE 2 BIOS-Bootsektorsignatur. Enthält die beiden Werte 55hex AAhex, anhand derer das BIOS beim Booten einen gültigen Bootsektor erkennt.

FAT32 benutzt eine davon abweichende Struktur ab Offset 24hex:

Offset
(hex)
Länge
(dec)
Inhalt
24 4 Anzahl der Sektoren pro FAT
28 2 FAT Flags
2A 2 FAT-32-Version. Bei Microsoft stets 0000hex. (optional 0001hex für FATplus)
2C 4 Clusternummer, an der das Stammverzeichnis beginnt. Meistens 2
30 2 Sektornummer des „FS Information Sector“ (In der Regel 1)
32 2 Sektornummer der Bootsektorkopie (in der Regel: 6; Microsoft empfiehlt, keinen anderen Wert zu benutzen.)
34 12 reserviert für spätere Erweiterungen, derzeit stets 0
40 1 Physische BIOS-Laufwerksnummer
41 1 Reserviert. Dieses Byte wird oft benutzt, um ein möglicherweise beschädigtes Dateisystem zu markieren.
42 1 Erweiterte Bootsignatur
43 4 Dateisystem-ID (Seriennummer)
47 11 Name des Dateisystems (ungenutzt)
52 8 FAT-Version. Stets FAT32   
5A 420 x86-Maschinencode des Bootloaders
1FE 2 BIOS-Bootsektorsignatur. Enthält die beiden Werte 55hex AAhex, anhand derer das BIOS beim Booten einen gültigen Bootsektor erkennt.

Reservierte Sektoren

Zwischen Bootsektor und der ersten FAT können Sektoren reserviert werden, die vom Dateisystem nicht benutzt werden. Dieser Bereich kann von einem Bootmanager oder für betriebssystemspezifische Erweiterungen genutzt werden. Auf den meisten FAT12- oder FAT16-Dateisystemen existieren – außer dem Bootsektor – keine weiteren reservierten Sektoren. Die FAT folgt somit direkt im Anschluss an den Bootsektor. FAT32-Dateisysteme enthalten in der Regel noch einige Erweiterungen zum Bootsektor sowie eine komplette Sicherungskopie des Bootsektors und der Erweiterungen.

FAT

Die FAT ist eine Art Tabelle fester Größe, in der über die belegten und freien Cluster eines FAT-Dateisystems Buch geführt wird. Ein Cluster ist die aus einem oder mehreren Sektoren bestehende Zuordnungseinheit, die von einer Datei belegt werden kann. Der Datenbereich ist in eine feste Anzahl von Clustern eingeteilt. Zu jedem dieser Cluster existiert ein Eintrag in der FAT, der Folgendes angeben kann:

Die Größe (in Bit) und der Wertebereich der Tabelleneinträge unterscheiden sich zw. FAT12, FAT16 und FAT32 wie folgt:

Bedeutung Wert (hex)
FAT12 FAT16 FAT32
freier Cluster 000 0000 00000000
defekter Cluster FF7 FFF7 0FFFFFF7
letzter Cluster einer Clusterkette FF8…FFF FFF8…FFFF 0FFFFFF8…0FFFFFFF
sonstiger Cluster einer Clusterkette 002…FF6 0002…FFF6 00000002…0FFFFFF6

Die Lage der belegten Cluster einer Datei können aus den Adressen der zugehörigen FAT-Einträge berechnet werden. Die FAT-Einträge bilden eine einfach verkettete Liste.

Wegen ihrer grundlegenden Bedeutung für das Dateisystem existieren in der Regel zwei Kopien der FAT, um bei Datenverlust noch immer eine funktionsfähige zweite FAT zu haben. Mit diversen Programmen ist so eine Datenwiederherstellung in vielen Fällen möglich.

Auf Installationsdisketten oder mit Spezialprogrammen formatierten Medien findet man manchmal keine zweite FAT, wodurch der verfügbare Speicherplatz etwas größer wird. Theoretisch ist es auch möglich, ein Dateisystem mit mehr als zwei FAT-Kopien zu formatieren. Diese Dateisysteme können zwar in der Regel von jedem Betriebssystem gelesen werden, jedoch wird die dritte (und jede weitere FAT-Kopie) bei Schreibzugriffen meist nicht aktualisiert, so dass bei Beschädigung der ersten beiden FATs oft keine Reparatur unter Zuhilfenahme der weiteren Kopien möglich ist.

Stammverzeichnis und Unterverzeichnisse

Das Stammverzeichnis (englisch root directory), auch Wurzelverzeichnis oder Hauptverzeichnis genannt, ist eine Tabelle von Verzeichniseinträgen. Jede Datei oder Unterverzeichnis wird in der Regel durch je einen Verzeichniseintrag repräsentiert. Die bei Windows 95 eingeführte Erweiterung um „lange Dateinamen“ benutzt jedoch ggf. mehrere Verzeichniseinträge pro Datei bzw. Verzeichnis, um die langen Dateinamen unterzubringen.

Das Stammverzeichnis folgt bei FAT12 und FAT16 direkt der FAT und hat eine feste Größe und damit eine Maximalanzahl an Verzeichniseinträgen. Diese wird beim Formatieren des Dateisystems festgelegt und kann später – außer mit Spezialsoftware – nicht mehr geändert werden.

Bei FAT32 hat das Stammverzeichnis eine variable Größe und kann an einer beliebigen Position des Datenbereichs beginnen.

Je nach Medientyp gibt es unterschiedliche Vorgabegrößen für das Stammverzeichnis. Mit speziellen Formatierungsprogrammen lässt sich jedoch die Größe des Stammverzeichnisses frei wählen. So besitzen beispielsweise Installationsdisketten, die nur sehr wenige Archivdateien enthalten, oft ein minimales Stammverzeichnis, das nur einen Sektor groß ist und somit nur Platz für 16 Verzeichniseinträge bietet.

Medientyp Speicher-
kapazität
Anzahl der
Verzeichniseinträge
Sektoren für
Stammverzeichnis
8″ SD einseitig 250 KiB 68
8″ SD beidseitig 500 KiB 68
8″ DD beidseitig 1200 KiB 192
5¼″ DD einseitig 160 KiB 64 4
5¼″ DD einseitig 180 KiB 64 4
5¼″ DD beidseitig 320 KiB 112 7
5¼″ DD beidseitig 360 KiB 112 7
5¼″ HD beidseitig 1200 KiB 224 14
3½″ DD beidseitig 720 KiB 112 7
3½″ HD beidseitig 1440 KiB 224 14
3½″ ED beidseitig 2880 KiB 240 15
Festplatten variabel 512 32

Ein Verzeichniseintrag besteht aus 32 Bytes.

Offset (hex) Länge (in Byte) Inhalt
00 8 Dateiname ohne Erweiterung
Die nicht genutzten Bytes werden mit Leerzeichen aufgefüllt.
08 3 Erweiterung
Die nicht genutzten Bytes werden mit Leerzeichen aufgefüllt.
0B 1 Dateiattribute.
Bit 0: Schreibgeschützt; Bit 1: Versteckt; Bit 2: Systemdatei; Bit 3: Volume-Label; Bit 4: Unterverzeichnis; Bit 5: Archiv; Bit 6–7: ungenutzt
Die zusätzlichen Pseudo-Verzeichniseinträge für VFAT (siehe weiter unten) haben das Attribut 0x0F (Schreibgeschützt, Versteckt, Systemdatei, Volume-Label)
0C 1 reserviert
0D 1 Erstellzeitpunkt in 10ms. Von 0 bis 199
0E 2 Erstellzeitpunkt (Format wie Zeit der letzten Änderung bei Offset 0x16)
10 2 Erstelldatum (Format wie Datum der letzten Änderung bei Offset 0x18)
12 2 Datum des letzten Zugriffs (Format wie Datum der letzten Änderung bei Offset 0x18)
14 2 Bei FAT32 die oberen beiden Bytes des Clusters
16 2 Zeit der letzten Änderung
(5 / 6 / 5 Bits für Stunde / Minute / Sekunden)
Die Auflösung der Sekunden beträgt 2 s (0..29)
18 2 Datum der letzten Änderung
(7 / 4 / 5 Bits für Jahr / Monat / Tag)
Jahr: Jahr seit 1980; z. B. für 2007 = 27
1A 2 (Offset des Start-Clusters) + 2
1C 4 Dateigröße in Byte

Zusammenspiel: Soll nun eine Datei gelesen werden, wird der zugehörige Verzeichniseintrag herausgesucht. Neben den Attributen kann hier nun der Startcluster selektiert werden. Die weiteren Cluster werden dann über die FAT herausgesucht. Am Ende terminiert die Weitersuche jener FAT-Tabelleneintrag, welcher den Wert FFFFFFh enthält.

Ein Unterverzeichnis wird als normale Datei angelegt, außer dass der Eintrag im übergeordneten Verzeichnis mit dem entsprechenden Bit markiert ist. Der Aufbau der Einträge ist mit jenen des Hauptverzeichnisses identisch. Da die Cluster der Unterverzeichnisse über die FAT verknüpft werden, können sie beliebig wachsen und haben keine Begrenzung in der Zahl der verwaltbaren Dateien.

Abweichungen


Dateisystem des Atari ST

Der Atari ST benutzt für Disketten eine Variante des FAT12-Dateisystems und kann daher unter MS-DOS formatierte und beschriebene Disketten lesen und schreiben. Ursprünglich konnten auf dem Atari formatierte Disketten nicht unter MS-DOS benutzt werden, wohl aber unter MS-DOS formatierte und danach auf dem Atari beschriebene Disketten. Diese Inkompatibilitäten wurden in späteren GEMDOS-Versionen behoben. Die Unterschiede der Atari-Implementierung im einzelnen:[26]

Beispiele


DOS- bzw. Windows-Diskette mit FAT12

Offset Wert Bedeutung
000h–1FFh Bootsektor
0Bh–0Ch 00h02h=512 512 (=200h) Bytes pro Sektor, das höherwertige Byte steht hinten, also 0+2×256
0Dh 01h=1 1 Sektor pro Cluster (ein Eintrag im FAT bezieht sich jeweils auf einen Cluster)
0Eh–0Fh 01h00h=1 1 reservierter Sektor, also hier nur der Bootsektor (Lage 000h bis 1FFh)
10h 02h=2 2 File Allocation Tables sind vorhanden (normal)
11h–12h E0h00h=224 maximal 224 (=00E0h) Verzeichniseinträge im Stammverzeichnis, das Stammverzeichnis belegt 14 Sektoren
13h–14h 40h0Bh=2880 2880 (=0B40h) Sektoren (zu je 512 Bytes, s. o.), also 1440 KiB = 1440 · 210 = 1474560 Byte
15h F0h 3,5-Zoll-Diskette, doppelseitig, 18 bzw. 36 Sektoren (in diesem Fall 18 Sektoren, siehe Wert unter 18h)
16h–17h 09h00h=9 9 Sektoren pro FAT. Die beiden FATs liegen direkt nach dem Bootsektor (Sektor 0, dem einzigen reservierten Sektor) folglich auf den Sektoren 1–9 (200h bis 13FFh) und 10–18 (1400h bis 25FFh)
18h–19h 12h00h=18 18 Sektoren pro Spur (die Anzahl der Spuren ergibt sich aus der Gesamtsektorenanzahl 2880, verteilt auf zwei Seiten (s. u.), dividiert durch 18 Sektoren pro Spur hier also zu 80 Spuren)
1Ah–1Bh 02h00h=2 zwei Seiten bzw. Schreib-Lese-Köpfe: Die Geometrie ergibt sich damit also zu: 2 Seiten (heads) × 80 Spuren (tracks) pro Seite × 18 Sektoren (sectors) pro Spur × 512 Bytes pro Sektor.
1Ch–1Fh 00h00h00h00h=0 kein versteckter Sektor vor dem Bootsektor
24h 00h=0 Physische Laufwerksnummer (0h bei Disketten)
36h–3Dh 46h41h 46h 41h 54h 31h 32h =„FAT12“ (kann, muss aber nicht dort eingetragen sein)
1FEh–1FFh 55hAAh Signatur des Bootsektors, muss dort stehen, damit er als gültig anerkannt wird
200h–13FFh F0hFFh Erste FAT. Als Beispiel sind hier die ersten Bytes aufgeführt:
F0 FF FF 03 40 00 05 60 00 FF 8F 00 09 A0 00 0B
Jeweils 3 Bytes beziehen sich auf 2 Cluster. Die Halbbytes ab cd ef stehen für die 12-Bit Zahlen dab efc. Die ersten beiden Einträge sind Pseudoeinträge, die eigentliche Nummerierung beginnt mit 2. Die Bytefolge im Beispiel entspricht also der Liste FF0 FFF 003 004 005 006 FFF 008 009 00A 00B. Cluster 2 wird über 3, 4, 5, 6 fortgesetzt und endet in Cluster 6 (Eintrag FFF = −1) Cluster 7 wird in 8, 9, A, B fortgesetzt.
1400h–25FFh F0hFFh Zweite FAT. Sie enthält dasselbe:
F0 FF FF 03 40 00 05 60 00 FF 8F 00 09 A0 00 0B
2600h–41FFh […] Stammverzeichnis (root directory): Es belegt 14 Sektoren (s. o.) und enthält Einträge, die auch im Hexdump lesbar sind (in kurzem 8.3 und evtl. langem Format).
4200h–45FFh […] Datenbereich: Datencluster Nr. 2 und 3 der Diskette. (Jeder Datencluster ist hier einen Sektor groß, wie unter 0Dh festgelegt.)
4600h–49FFh […] Datencluster 4 und 5 der Diskette.

Siehe auch


Weblinks


Einzelnachweise


  1. a b Udo Kuhnt, Luchezar Georgiev, Jeremy Davis: FAT+ Draft release, Rev. 2. Abgerufen am 24. März 2007.
  2. Je nach Quelle sind es entweder maximal 65.536 oder 65.460 Dateien, die mit FAT16 maximal möglich sind:
    • Resource Kit – Working with File Systems. In: Windows XP Documentation. Microsoft, 11. September 2009, abgerufen am 23. März 2021 (englisch): „Table 13-7 FAT16 Size Limits … Files per volume: Approximately 65,536 (216 files)“
    • Jarret W. Buse: File Allocation Table (FAT). (Forum-Posting) linux.org, 21. August 2013, abgerufen am 23. März 2021 (englisch): „TYPE [–] Max File Size [–] Max Number of Files … [TYPE:] FAT16 [Max File Size:] 2 GB [Max Number of Files:] 65,460“
  3. Peter Gallagher: Things I've learnt...: The FAT16 File System (with SD cards). (Blog) 14. März 2011, abgerufen am 23. März 2021 (englisch): „…for SD Cards using FAT16, the maximum Root Directory Entries and Bytes Per Sector are invariably 512.“
  4. Jürgen Rathlev:Personal Backup Version 6, Abschnitt: Einstellungen für den Dateivergleich / Zeitstempelvergleich , personal-backup.rathlev-home.de, abgerufen am 29. Januar 2021.
  5. Beschränkungen des FAT32-Dateisystems in Windows XP. In: Hilfe und Support. Microsoft Deutschland GmbH, 24. Mai 2011, abgerufen am 18. Oktober 2011: „Auf einer FAT32-Partition können keine Dateien erstellt werden, die größer als (2^32)-1 Byte sind (d. h. ein Byte weniger als 4 GB)“
  6. PCFreunde.de Tutorial: „Festplatten unter Windows mit FAT32 partitionieren“ 4. Februar 2010, im Webarchiv vom 12. April 2018 , abgerufen am 28. Oktober 2020.
  7. Computerbild Tipp-Center: „Festplatte auf FAT32 formatieren: So funktioniert es“ 19. August 2018 , abgerufen am 28. Oktober 2020.
  8. Microsoft Extensible Firmware Initiative – FAT32 File System Specification (2000) - Seite 34
  9. Brandon LeBlanc: Vista SP1 Whitepaper. Microsoft, 28. August 2007, archiviert vom Original am 12. September 2008; abgerufen am 22. Februar 2012.
  10. Update für Windows XP (KB955704). (Nicht mehr online verfügbar.) Microsoft, 26. Januar 2009, archiviert vom Original am 7. Januar 2011; abgerufen am 22. Februar 2012.
  11. Apple macht viele Macs für Microsofts Dateisystem exFAT fit. Abgerufen am 11. November 2010.
  12. exFAT in the Linux kernel? Yes! In: microsoft.com. Open Source Blog, 2019, abgerufen am 29. August 2019 (amerikanisches Englisch).
  13. a b Linux 5.4 freigegeben: exFAT-Support und Einschränkungen für Root. In: heise.de. 26. November 2019, abgerufen am 28. April 2020.
  14. Jonathan Corbet: 5.7 Merge window part 2. In: LWN.net. 13. April 2020, abgerufen am 17. August 2020.
  15. Tuxera, the NTFS-3G File System Provider, Signs Intellectual Property Agreement with Microsoft. 26. August 2009, archiviert vom Original am 18. Februar 2011; abgerufen am 22. November 2015 (englisch).
  16. exFAT fs and Linux. 29. Januar 2009, abgerufen am 30. August 2009 (englisch).
  17. exFAT für Linux veröffentlicht stabiles Release. 20. Januar 2013, abgerufen am 20. Januar 2013.
  18. Samsung veröffentlicht exFAT-Treiber unter GPL , heise open, 16. August 2013
  19. Beschreibung des ExFAT-Dateisystemtreiber. Microsoft, 29. September 2009, abgerufen am 22. Februar 2012.
  20. https://events.static.linuxfound.org/images/stories/pdf/lceu11_munegowda_s.pdf
  21. Standard-Clustergröße für NFTS, FAT und exFAT. In: support.microsoft.com. 30. November 2018, abgerufen am 28. April 2020.
  22. TFAT Overview auf MSDN (3. April 2014)
  23. Matthias Paul: Need DOS 6.22 (Not OEM). In: alt.msdos.programmer. 20. Februar 2002, abgerufen am 14. Oktober 2006.
  24. Wally Bass: Cluster Size. In: comp.os.msdos.programmer. 14. Februar 1994, abgerufen am 14. Oktober 2006.
  25. Floppy Disk is Not Accessible, Not Formatted, or Not Recognized by Windows. In: support.microsoft.com. Abgerufen am 22. Februar 2015 (englisch).
  26. Christoph Pfisterer: disktype Documentation, Kapitel 3.3.: ATARI ST









Kategorien: Dateisystem | Dateiverwaltung | DOS-Betriebssystemkomponente | Linux-Betriebssystemkomponente | OS/2-Betriebssystemkomponente | Windows-Betriebssystemkomponente




Stand der Informationen: 01.05.2021 08:43:39 CEST

Quelle: Wikipedia (Autoren [Versionsgeschichte])    Lizenz: CC-BY-SA-3.0

Veränderungen: Alle Bilder und die meisten Designelemente, die mit ihnen in Verbindung stehen, wurden entfernt. Icons wurden teilweise durch FontAwesome-Icons ersetzt. Einige Vorlagen wurden entfernt (wie „Lesenswerter Artikel“, „Exzellenter Artikel“) oder umgeschrieben. CSS-Klassen wurden zum Großteil entfernt oder vereinheitlicht.
Wikipedia spezifische Links, die nicht zu Artikeln oder Kategorien führen (wie „Redlink“, „Bearbeiten-Links“, „Portal-Links“) wurden entfernt. Alle externen Links haben ein zusätzliches FontAwesome Icon erhalten. Neben weiteren kleinen Designanpassungen wurden Media-Container, Karten, Navigationsboxen, gesprochene Versionen & Geo-Mikroformate entfernt.

Wichtiger Hinweis Da die gegebenen Inhalte zum angegebenen Zeitpunkt maschinell von Wikipedia übernommen wurden, war und ist eine manuelle Überprüfung nicht möglich. Somit garantiert LinkFang.org nicht die Richtigkeit und Aktualität der übernommenen Inhalte. Sollten die Informationen mittlerweile fehlerhaft sein oder Fehler in der Darstellung vorliegen, bitten wir Sie darum uns per zu kontaktieren: E-Mail.
Beachten Sie auch : Impressum & Datenschutzerklärung.