File Allocation Table

File Allocation Table

Das File Allocation Table (vom Englischen etwa für „Dateizuordnungstabelle“; Abkürzung FAT, englische Aussprache [fæt]) ist ein von Microsoft entwickeltes Dateisystem.

Inhaltsverzeichnis

Hintergrund

FAT ist die einzige bedeutende Neuerung von QDOS gegenüber CP/M. Zu der Familie der FAT-Dateisysteme gehören:

  • FAT12 wird heute für jede DOS-Diskette verwendet (auch unter Windows). Der Atari ST benutzte ein fast identisches Dateisystem und konnte FAT12-Disketten lesen und beschreiben.
  • FAT16 wird heute meist auf allen Arten von mobilen Datenträgern (außer Disketten) mit einer Größe von bis zu 2, selten bis 4 GiB verwendet.
  • FAT32 wird z. B. in allen Arten von mobilen Speichern von mehr als 2 GiB Kapazität genutzt. Von allen Windows-Versionen ab Windows 95b und neueren DOS-Systemen unterstützt.
  • FATplus ist eine Erweiterung für FAT16 (theoretisch) und FAT32, erhöht die maximale Größe einer Datei von 4 GiB auf 256 GiB (wird derzeit unter anderem von Enhanced DR-DOS und Deskwork unterstützt)[1]
  • exFAT ist ein speziell für Flash-Speicher entwickeltes Dateisystem mit einer theoretischen maximalen Dateigröße von 16 EiB. Unterstützt Rechtevergabe auf Dateisystemebene.

Aufbau

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

Bootsektor reservierte Sektoren FAT Stammverzeichnis Datenbereich

Bootsektor

Der Bootsektor enthält teilweise ausführbaren x86-Maschinencode, der das Betriebssystem laden soll. An anderen Stellen enthält er Informationen über das FAT-Dateisystem.

Offset (hex) Länge (in Byte) 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 003E; NOP.
03 8 OEM-Name (mit Leerzeichen aufgefüllt). MS-DOS ermittelt anhand dessen, welche Struktur die übrigen Daten im Bootsektor haben[2][3]. Ü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 (FAT32) o. 1 (FAT16 abwärts))
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[4][5][6]. Gilt als veraltet und wird ab Windows Server 2003 nicht mehr beachtet.
0xF0 Double sided, 80 Spuren, 18/36 Sektoren pro Spur (1440 KiB- sowie 2880 KiB-3½″-Diskette)
0xF8 Festplatte
0xF9 Double sided, 80 Spuren, 9/15 Sektoren pro Spur (720 KiB-3½″- bzw. 1200 KiB-5¼″-Diskette)
0xFA Single sided, 80 Spuren, 8 Sektoren pro Spur (320 KiB-3½″- bzw. -5¼″-Diskette).
Wird auch für Ramdisks verwendet
0xFB Double sided, 80 Spuren, 8 Sektoren pro Spur (640 KiB-3½″- bzw. -5¼″-Diskette)
0xFC Single sided, 40 Spuren, 9 Sektoren pro Spur (180 KiB-5¼″-Diskette)
0xFD Double sided, 40 Spuren, 9 Sektoren pro Spur (360 KiB-5¼″-Diskette)
Double Sided, 77 Spuren, 26 Sektoren pro Spur (500 KiB-8″-Disketten)
0xFE Single sided, 40 Spuren, 8 Sektoren pro Spur (160 KiB-5¼″-Diskette)
Single Sided, 77 Spuren, 26 Sektoren pro Spur (250 KiB-8″-Disketten)
Double Sided, 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 Double sided, 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 (in Byte) 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
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 Länge (in Byte) 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
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 über den Cluster angeben kann:

  • Der Cluster ist nicht belegt, also frei.
  • Das Medium ist an der Position dieses Clusters beschädigt.
  • Der Cluster ist von einer Datei belegt:
    • Der FAT-Eintrag zum nächsten Cluster der Datei hat die Nummer x, das heißt: der nächste Cluster der Datei ist der Cluster mit der Nummer x − 2.
    • Das ist der letzte Cluster der Datei.

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

Bedeutung Wert
FAT12 FAT16 FAT32
Freier Cluster 00016 000016 0000000016
Defekter Cluster FF716 FFF716 0FFFFFF716
letzter Cluster einer Clusterkette FF816…FFF16 FFF816…FFFF16 0FFFFFF816…0FFFFFFF16
sonstiger Cluster einer Clusterkette 00216X ≤ FF616 000216X ≤ FFF616 0000000216X ≤ 0FFFFFF616

Die Lage der belegten Cluster einer Datei können aus den Adressen der zugehörigen FAT-Einträge berechnet werden. Diese 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 (engl. 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/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 Speicherkapazität Anzahl der Verzeichniseinträge Sektoren für Stammverzeichnis
5¼″ DD einseitig 180 KiB 64 4
5¼″ DD beidseitig 320 KiB 64 4
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 448 28
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; siehe 0x16
10 2 Erstelldatum; siehe 0x18
12 2 Datum des letzten Zugriffs; siehe 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.

Versionen

FAT12

Mit der 1980 erschienenen ersten Version von QDOS wurde FAT als Dateisystem eingeführt. 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:

  • 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 oder Dateien). Normalerweise wird der erste Eintrag durch die Bezeichnung des Datenträgers belegt.
  • Unterstützt die Dateiattribute „Schreibgeschützt“, „Versteckt“, „System“ und „Archiv“
  • Es werden keine Berechtigungen für Dateien oder Ordner unterstützt

Lange Dateinamen auf Disketten

Um lange Dateinamen auf FAT12-Disketten einsetzen zu können, nutzt Windows die VFAT-Erweiterung. Mehrere zusätzliche Verzeichniseinträge liegen vor dem eigentlichen Verzeichniseintrag im FAT12-Format zur Speicherung des langen Dateinamens. Ältere Systeme (z. B. MS-DOS) ignorieren diese Verzeichniseinträge, da sie durch eine spezielle Kombination von Attributen markiert sind, u. a. als „Volume“ und „Hidden“.

FAT16

FAT16
Hersteller Microsoft
Vollständige Bezeichnung File Allocation Table
Erstveröffentlichung 1983 ()
Maximalwerte
Größe einer Datei 2 GiB / 4 GiB
Größe des Dateisystems 2 GiB / 4 GiB

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 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“-Boot-Partition, die (automatisch) mit FAT12 erzeugt wurde.

FAT16 hat folgende Merkmale:

  • 65.536 Einträge sind möglich, allerdings nur 512 im Rootverzeichnis.
  • Es können 216 − 12 = 65.524 Cluster angesprochen werden (12 Cluster reserviert FAT16, deshalb nicht 65.536).
  • 8.3-Dateinamensformat
  • Die Partitionsgröße ist unter MS-DOS und Windows 9x (die auf DOS basieren) auf 2 GiB begrenzt. Windows NT, FreeDOS und Enhanced DR-DOS können auch knapp unter 4 GiB große FAT16-Partitionen 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.

VFAT

VFAT (Virtual File Allocation Table) ist eine Erweiterung des FAT-Formats, die ab Windows 95 zum Einsatz kommt. Es kann auf FAT16 und FAT12, seit 1997 auch auf FAT32 angewendet werden.

Als Windows 95 veröffentlicht wurde, hatten die Festplatten in einem PC um die 400 MiB Kapazität. FAT16 verwaltet 216 = 65.536 Cluster. Selbst bei einer Clustergröße von 8.192 Byte sind 512 MiB adressierbar, bei 32.768 Byte Clustergröße sogar 2 GiB. Für damalige Verhältnisse war das ausreichend (Maximalgrößen siehe FAT16).

Dennoch hatten die Designer von Windows 95 das Ziel, die Nutzung von langen Dateinamen zu ermöglichen. 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 ältere Systeme als ungültig ansehen. Während bisher ein Eintrag auf eine Datei verwies, kann jetzt eine Datei mehrere Einträge mit je 32 Byte belegen. Das endgültige Format erlaubt bis zu 255 Zeichen lange Dateinamen (wobei der Name inklusive Speicherpfad bis zu 260 Zeichen enthalten kann) und setzt konsequent auf 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.

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. Gelegentlich wird in der Literatur (insbesondere in WWW-Artikeln) auch fälschlich VFAT mit FAT32 gleichgesetzt.

FAT32

FAT32
Hersteller Microsoft
Vollständige Bezeichnung File Allocation Table
Maximalwerte
Größe einer Datei 4 GiB - 1 Byte
Anzahl aller Dateien 228
Länge des Dateinamens 255 Zeichen
Größe des Dateisystems TiB (mit 32 KiB Clustergröße)
Eigenschaften
Unterstützende Betriebssysteme Microsoft Windows 95B und neuer; viele neuere unixoide Betriebssysteme

FAT32 ist ein von Microsoft entwickeltes Dateisystem, das 1997 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 Bit, wovon 4 Bit reserviert sind, so dass 228 = 268.435.456 Cluster adressiert werden können.

FAT32 kann außerdem mit allen neueren Windows-Versionen ( 95B, 98, 2000, ME, XP, Vista, 7 und Mobile ) 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 (etwa Apple Macintosh) eingesetzt, z. B. auf mobilen Festplatten.

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

Ein Nachteil von FAT32 ist, dass nur Dateien erstellt werden können, die mindestens 1 Byte kleiner als 4 GiB[7] sind.

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 oder Windows 2000 FAT16-Clustergröße maximal 64 KiB).

FAT32 hat folgende Merkmale:

  • Es werden bis zu 228 = 268.435.456 Cluster verwendet.
  • Sofern auch VFAT unterstützt wird, sind lange Dateinamen möglich. FAT32-Treiber können aber auch nur die „kurzen“ Dateinamen ohne VFAT benutzen, das ist insbesondere in DOS-Versionen mit FAT32-Unterstützung der Fall.
  • Das Dateisystem ist auf 8 Tebibyte (243 Byte) begrenzt, was ca. 8,8 Terabyte entspricht. Dies ergibt sich wie folgt: Die Clustergröße ist maximal 215 Byte. Es gibt 228 Adressierungsmöglichkeiten. Also kann maximal ein Bereich von 215 · 228 = 243 Byte adressiert werden.
  • 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.
  • Das Haupt-(Root-)Verzeichnis muss sich nicht an einer bestimmten Position auf dem Datenträger befinden und hat vor allem keine festgelegte Größe; bei den anderen FAT-Varianten wird die maximale Anzahl der Einträge im Hauptverzeichnis bei der Formatierung festgelegt (und kann nachträglich nicht geändert werden).
  • Alte DOS-/Windows-Versionen ( bis einschließlich Windows 95A, Windows NT bis Version 4.0, MS-DOS bis 6.22, PC DOS bis 2000, DR-DOS bis 7.03 ) können nicht darauf zugreifen. Für Windows NT 4.0 steht mittlerweile ein vollwertiger Treiber kostenlos zur Verfügung. Für beliebige DOS-Systeme ab 3.3 kann der von Matthias Paul für DR-DOS entwickelte dynamisch ladbare DRFAT32-Treiber verwendet werden, der FAT32-Laufwerke über das Redirector-Interface als (erweiterte) CD-Extension mit vollem Schreib-/Lesezugriff in das System einbindet.
  • Unter Windows 2000 und Nachfolgern darf der Benutzer mit der eingebauten Funktion „Formatieren“ maximal 32 GiB große FAT32-Dateisysteme neu erstellen. Auch das Kommandozeilen-Programm format.com hat diese Beschränkung. Der Zugriff auf größere FAT32-Dateisysteme, die mit alternativen Werkzeugen erstellt wurden, ist aber immer möglich. Mit zusätzlichen Programmen kann man jedoch auch unter Windows 2000 oder höher Partitionen größer als 32 GiB mit FAT32 erstellen und formatieren.[8] Das Festplatten-Dienstprogramm von Mac OS X 10.4 und neuer sowie das Linux-Programm mkdosfs (in Verbindung mit fdisk) können auf Festplatten, die größer als 32 GiB sind, eine oder mehrere FAT32-Partitionen mit mehr als 32 GiB Kapazität erzeugen.
  • Es gibt mehrere moderne DOS-Systeme, die FAT32 nativ unterstützen: MS-DOS 7.10/8.00, Enhanced DR-DOS, FreeDOS 1.0, OEM PC DOS 7.10 (der Nachfolger von PC DOS 2000) und Datalight ROM-DOS.
  • Das Speichern von Meta-Informationen für Dateien in Extended Attributes ist nicht mehr möglich.

exFAT

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 wird dort eingesetzt, wo NTFS nur schwer oder gar nicht implementierbar ist. Windows Vista unterstützt exFAT ab Service Pack 1.[9] Für Windows XP ab SP2 hat Microsoft ein Update[10] bereitgestellt, das unter KB955704[11] beschrieben wurde.

Die Vorteile gegenüber vorherigen Versionen sind:

  • Maximale Dateigröße von 64 ZiB[12], empfohlene maximale Dateigröße 512 TB.
  • Ein Cluster darf maximal 32 MiB groß sein (theoretisch jedoch bis zu 2255 Bytes).
  • Es wurde eine Tabelle eingeführt, welche die freien Cluster indiziert.
  • Das Dateisystem unterstützt ACL.
  • Es werden auch Transaktionen unterstützt.

Nachteile:

  • Die exFAT-Unterstützung bei anderen Betriebssystemen als Windows ist bisher noch nicht überall vorhanden, da Microsoft die Spezifikationen nicht offengelegt hat, sondern nur Lizenznehmern zur Verfügung stellt.[13] Inzwischen hat das Unternehmen Tuxera, das auch einen Open-Source-NTFS-Treiber mitentwickelt hat, mit Microsoft eine Lizenzübereinkunft getroffen und wird infolgedessen einen exFAT-Treiber für Linux entwickeln.[14] Daneben gibt es noch einen unter der GPLv3 lizenzierten Treiber für Linux.[15] Es ist allerdings anzumerken, dass immer mehr Betriebssysteme eine Unterstützung für dieses Dateisystem zur Verfügung stellen. So ist bei Mac OS X ab Version 10.6.5 die Unterstützung von exFAT vorhanden.[16]
  • Aufgrund der nicht offengelegten Interna und der erheblichen Unterschiede zu klassischen FAT-Dateisystemen ist für viele aktuelle Betriebssysteme auch im Rahmen von Treiberaktualisierungen nicht mit einer Unterstützung von exFAT zu rechnen. Eine nachträgliche Unterstützung für ältere Systeme wie Windows 9x oder modernere DOS-Abkömmlinge ist praktisch ausgeschlossen, obwohl diese Systeme ansonsten durchaus mit Speichermedien dieser Größe umgehen könnten.
  • Im Rahmen der Spezifikationen für die zukünftigen Memory-Stick-XC- und SD-XC-Flashspeicher-Kartentypen wird die Verwendung des exFAT-Dateisystems vorgeschrieben, so dass die Verwendung von Geräten mit solchen Speicherkartentypen die Verwendung von Windows XP, Windows Vista, Windows 7 oder Mac OS X erfordert. Die bisherigen SDHC- und Memory-Stick-PRO-HG-Duo-Standards stoßen bei 32 GiB an ihre jeweiligen Systemgrenzen. Die Alternative Compact Flash erlaubt Speicherkapazitäten bis 128 GiB; auch im Nachfolgestandard wurde bisher (Stand 2009) kein bestimmtes Dateisystem forciert, wenn auch die Verwendung von FAT16 (bis 2 GiB) bzw. FAT32 hohe Austauschbarkeit garantiert.

Erweiterungen

In den frühen 1990er Jahren wurde von vielen Linux-Distributionen die UMSDOS-Erweiterung für FAT16 eingesetzt, um Linux zu installieren, ohne die Festplatte neu partitionieren und formatieren zu müssen. UMSDOS fügt zu einem FAT16-Dateisystem einen darüberliegenden UNIX-kompatiblen Layer hinzu. Er verwaltet Dateien, die den Namen --linux-.--- tragen. In Linux 2.6.11 wurde UMSDOS aus dem Kernel entfernt. Es wird nicht mehr weiterentwickelt.

Beispiele

Beispiel DOS- bzw. Windows-Diskette mit FAT12 File Allocation Table

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

Weblinks

Einzelnachweise

  1. Udo Kuhnt, Luchezar Georgiev, Jeremy Davis: FAT+ Draft release, Rev. 2. Abgerufen am 24. März 2007.
  2. Matthias Paul: Need DOS 6.22 (Not OEM). In: alt.msdos.programmer. 20. Februar 2002, abgerufen am 14. Oktober 2006.
  3. Wally Bass: Cluster Size. In: comp.os.msdos.programmer. 14. Februar 1994, abgerufen am 14. Oktober 2006.
  4. http://heim.ifi.uio.no/~stanisls/helppc/media_descriptor_byte.html Aufbau Media Descriptor Byte
  5. http://en.wikipedia.org/wiki/Table_of_8-inch_floppy_formats 8″-Diskettenformate
  6. http://support.microsoft.com/default.aspx?scid=kb;EN-US;q140060 Microsoft Knowledge Base: Media Descriptor Byte
  7. 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)“
  8. PCFreunde.de Tutorial: Festplatten unter Windows mit FAT32 partitionieren
  9. Brandon LeBlanc: Vista SP1 Whitepaper. Microsoft, 28. August 2007, abgerufen am 28. August 2007.
  10. Update für Windows XP (KB955704). Microsoft, 29. Januar 2009, abgerufen am 29. Januar 2009.
  11. Beschreibung des ExFAT-Dateisystemtreiber. Microsoft, 27. Februar 2009, abgerufen am 6. März 2009.
  12. Beschreibung des ExFAT-Dateisystemtreiber. Microsoft, 27. Februar 2009, abgerufen am 11. März 2010.
  13. Microsoft Intellectual Property Licensing – exFAT File System Licensing Program. Abgerufen am 30. August 2009 (englisch).
  14. Tuxera, the NTFS-3G File System Provider, Signs Intellectual Property Agreement with Microsoft. 26. August 2009, abgerufen am 30. August 2009 (englisch).
  15. exFAT fs and Linux. 29. Januar 2009, abgerufen am 30. August 2009 (englisch).
  16. Apple macht viele Macs für Microsofts Dateisystem exFAT fit. Abgerufen am 11. November 2010 (deutsch).

Wikimedia Foundation.

Игры ⚽ Нужно решить контрольную?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • File allocation table — Pour les articles homonymes, voir FAT. FAT, acronyme anglais de file allocation table (table d allocation de fichiers), est un système de fichiers conçu par Bill Gates et Marc McDonald pour le Microsoft Disk BASIC, puis réutilisé dans QDOS dont c …   Wikipédia en Français

  • File Allocation Table — FAT (от англ. File Allocation Table «таблица размещения файлов») архитектура файловой системы, сейчас широко используемая в картах памяти фотоаппаратов и других устройств. Разработана Биллом Гейтсом и Марком МакДональдом в 1977 году[1].… …   Википедия

  • file allocation table — (FAT) area of a disk on which the location of each file is recorded …   English contemporary dictionary

  • File Allocation Table —   [Abk. FAT], Dateizuordnungstabelle …   Universal-Lexikon

  • File Allocation Table — For other uses, see Fat (disambiguation). FAT Developer Microsoft Full Name File Allocation Table FAT12 (12‑bit version) FAT16/FAT16B (16‑bit versions) FAT32 (32‑bit version with 28 bits used) Introduced …   Wikipedia

  • File Allocation Table — Pour les articles homonymes, voir FAT. FAT, acronyme anglais de file allocation table (table d allocation de fichiers), est un système de fichiers conçu par Bill Gates et Marc McDonald pour le Microsoft Disk BASIC, puis réutilisé dans QDOS dont c …   Wikipédia en Français

  • file allocation table — noun the part of a floppy disk or hard disk where information is stored about the location of each piece of information on the disk (and about the location of unusable areas of the disk) • Hypernyms: ↑table, ↑tabular array * * * file allocation… …   Useful english dictionary

  • file allocation table — FAT failų išdėstymo sistema statusas T sritis informatika apibrėžtis ↑Failų išdėstymo sistema, visą informaciją apie diske esančius failus laikanti fiksuoto dydžio lentelėje. Yra trys sistemos variantai: FAT12, FAT16, FAT32. Skaičius rodo, kiek… …   Enciklopedinis kompiuterijos žodynas

  • file allocation table —    Abbreviated FAT, pronounced [fat]. A table, maintained by the operating systems, that lists all the blocks of disk space available on a disk.    The FAT includes the location of each block, as well as whether it is in use, available for use,… …   Dictionary of networking

  • file allocation table — noun A table used internally by the operating system to keep track of the structure of a disk and where files are stored on it. Syn: FAT …   Wiktionary

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”