FAT32-Dateisystem
Vortrag von Thiemo Kreuz, II99, vorgetragen in Görlitz im Januar 2001.
Hardware
- Mehrere rotierende, magnetische Scheiben.
- Einteilung in Köpfe (englisch Heads), Zylinder, Sektoren und Spuren (Tracks).

- Ein Sektor beinhaltet immer 512 Byte Daten (und ein paar Steuerdaten).
- Gesamtzahl der Sektoren = Köpfe × Zylinder × Sektoren (bei Festplatten im „Normal“-Modus identisch mit den physikalischen Werten, im LBA-Modus wird bereits intern umgerechnet).
- Eventuelle Partitionierung eines physikalischen in mehrere logische Laufwerke.
- MBR (Master Boot Record) regelt unter anderem diese Partitionierung.
- FAT32 ist durch den Partitionstyp 0Bhex (oder 0Chex) erkennbar.
Geschichte
- FAT12 wurde 1977 für Microsofts „Disk Basic“-Interpreter entwickelt, danach Einsatz in DOS 1.
- FAT16 entwickelt für DOS 2, keine Cluster und somit max. 32 MB.
- Mit MS-DOS 4.0 erweitert, max. 128 MB.
- Später um die Cluster-Abstraktion erweitert, somit max. 2 GB.
Cluster
- Zusammenfassen von 4 bis 64 Sektoren zu Clustern.
- Weniger ist ungünstig, weil die FAT dann zu groß wird (schlechter cachebar).
- Mehr ist nicht möglich, weil ein Cluster dann 10000hex groß wäre (Konflikt mit 16-Bit-Registern).
| Clustergröße | Partitionsgröße bei FAT16 | Partitionsgröße bei FAT32 |
|---|---|---|
| 2 KB | weniger als 128 MB | — |
| 4 KB | weniger als 256 MB | weniger als 8 GB |
| 8 KB | weniger als 512 MB | weniger als 16 GB |
| 16 KB | weniger als 1 GB | weniger als 32 GB |
| 32 KB | weniger als 2 GB | 32 GB bis 2 Terabyte |
Grundlagen
- FAT = File Allocation Table (Dateizuordnungstabelle).
- Nach dem Bootsektor folgen zwei FAT-Kopien sowie das Hauptverzeichnis.
- Regelt Dateiname, Eigenschaften der Datei, Position auf der Festplatte.
- Grundidee: Auffinden des ersten Clusters einer Datei über die Nummer im Verzeichniseintrag, dann als Verkettung über die Folgeclusternummern in der FAT.

- Auf Disketten heute noch FAT12, max. 212 = 4096 Cluster (eine 1,4-MB-Diskette hat 2880 Cluster).
- Der Standard für Festplatten war jahrelang FAT16, max. 2 GB.
- Seit „Windows 95 OEM Service Release 2“ (Windows 95b) FAT32, erweitert durch VFAT zur Unterstützung langer Dateinamen (LFN).
- Eigentlich sind es nur 28 Bit, weil vier noch reserviert sind (ansonsten wären 128 TB möglich).
Die File Allocation Table
- Ist im Grunde nichts weiter als eine Liste mit genausovielen Werten, wie es Cluster gibt.
- Die „32“ bedeutet nichts anderes, als dass die Werte in der FAT je 32 Bit breit sind. Damit sind 232 = 4.294.967.295 Cluster addressierbar.
| Bedeutung der FAT-Werte | Wert bei FAT12 | Wert bei FAT16 | Wert bei FAT32 | Unbenutzter Cluster | 0 |
|---|---|---|---|
| Folgeclusternummer | 1 bis Clusteranzahl | ||
| Reservierter Cluster | FF0hex bis FF6hex | FFF0hex bis FFF6hex | FFFFFFF0hex bis FFFFFFF6hex |
| Defekter Cluster | FF7hex | FFF7hex | FFFFFFF7hex |
| EOF (End of File) | FF8hex bis FFFhex | FFF8hex bis FFFFhex | FFFFFFF8hex bis FFFFFFFFhex |
Die Verzeichniseinträge
- Fast identisch zu FAT12/16.
- Hinzugekommen sind zwei weitere Zeitangaben.
- Erweiterung der Startclusternummer von 16 auf 32 Bit.
| Offset | Verzeichniseintrag bei FAT12/16 | Verzeichniseintrag bei FAT32 mit VFAT |
|---|---|---|
| 0 | Dateiname (1–8 Zeichen, aufgefüllt mit Leerzeichen) | |
| 8 | Erweiterung (0–3 Zeichen) | |
| 11 | Attribute (Read-only, Hidden, System, Volume Label, Directory, Archive) | |
| 12 | Reserviert | Reserviert |
| 14 | Erzeugungsdatum (gerundet auf 2 s) | |
| 18 | Datum des letzten Zugriffs (ohne Uhrzeit) | |
| 20 | Höherwertiger Teil der ersten Clusternummer | |
| 22 | Speicherdatum (gerundet auf 2 s) | |
| 26 | Erste Clusternummer | Niederwertiger Teil der ersten Clusternummer |
| 28 | Dateigröße (max. 2 GB) | |
- Besonderheit: Cluster-Verschnitt ist der Grund, warum die Dateigröße gesondert abgelegt werden muss.
- Besonderheit: Ungültige Datums- und Zeitwerte wurden manchmal von Viren genutzt.
Long File Name Support (LFN)
- Auch FAT32 bietet keinen Raum für lange Dateinamen!
- Kodierung der Verzeichniseinträge völlig identisch zu FAT12/16.
- Kurzer Dateiname (SFN, 8.3 Zeichen) wird normal eingetragen.
- Langer Dateiname (max. 255 Zeichen) wird auf maximal 20 Pseudo-Verzeichniseinträge verteilt (Maskierung mittels Attributen R, S, H und V).
- Diese auf alle FAT-Versionen anwendbare Kodierung langer Dateinamen wird VFAT (Virtual File Allocation Table) genannt.
- Besonderheit: Groß/Kleinschreibung wird angezeigt, bei der Arbeit mit Dateien jedoch generell ignoriert.
Löschen von Dateien
- Verschieben in den Papierkorb ist nicht gleich Löschen.
- Beim Löschen wird lediglich das erste Zeichen des kurzen Dateinamens mit dem Zeichen „σ“ (E5hex) überschrieben und alle zur Datei gehörenden FAT-Einträge auf 0 zurückgesetzt.
- Wiederherstellung ist möglich (Undel/Undelete, Unerase), bei fragmentierten Dateien unter Umständen nur manuell.
Weitere Unterschiede
- Das Stammverzeichnis kann im Gegensatz zu FAT16 verschoben werden und beliebig groß sein.
- Die FAT-Kopie wird tatsächlich zur Fehlerkorrektur genutzt.
- Bootsektor auf 2 Sektoren erweitert, enthält kritische Daten doppelt.
Kompatibilität
- Bisher nutzbar von Windows 95b, 98, ME, 2000 und allen nachfolgenden Versionen.
- Unterstüzt von Linux und BeOS.
- Volle Integration in Windows (z. B. Format, FDisk, …).
- Systemnahe Werkzeuge wie z. B. die Norton Utilities funktionieren nicht mehr.
- Konverter FAT16 to FAT32, FAT32 to FAT16, FAT32 to NTFS, …