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, …
Quellen