- FAT16
-
Das File Allocation Table (FAT [fæt]; auf Deutsch etwa „Dateizuordnungstabelle“) ist ein von Microsoft entwickeltes Dateisystem.
Inhaltsverzeichnis
Hintergrund
FAT ist die einzige bedeutende Neuerung von QDOS gegenüber CP/M. Nach langen Rechtsstreitigkeiten und einem zweijährigen Patentierungsverfahren wurde am 10. Januar 2006 das Patent und die damit verbundene enorme Marktmacht für FAT (FAT12, -16, -32 etc.) der Herstellerfirma Microsoft zugesprochen. Das deutsche Bundespatentgericht erklärte eines der beiden diesen Schutz begründenden Patente, bzgl. eines gemeinsamen Speicherbereiches für lange und kurze Dateinamen – DE 69429378 bzw. EP 0618540 – jedoch durch ein Urteil vom 26. Oktober 2006 – Akz. 2 Ni 2/05 (EU) – als für Deutschland nichtig.[1] Das inhaltlich äquivalente US Patent dazu (US 5,758,352) besteht nach momentanem Stand (März 2009) noch weiter bis zum 5. September 2016, gilt aber nur innerhalb der USA.
Zu der Familie der FAT-Dateisysteme gehören:
- FAT12 – wird heute für jede DOS-Diskette verwendet (auch unter Windows)
- FAT16 – wird heute meist auf allen Arten von mobilen Datenträgern (außer Disketten) mit einer Größe von bis zu 2 GB verwendet.
- FAT32 – wird z. B. in allen Arten von mobilen Speichern von mehr als 2 GB Kapazität genutzt. Von neueren DOS-Systemen unterstützt. Microsoft Windows 2000 und neuere Windows-Versionen bis Windows Vista unterstützen FAT32 ebenfalls.
- FATplus – Erweiterung für FAT16 (theoretisch) und FAT32, erhöht die maximale Größe einer Datei von 4 GB auf 256 GB (Wird derzeit unter anderem von Enhanced DR-DOS und Deskwork unterstützt)[2]
- (VFAT)
- exFAT – (Extended File Allocation Table) ist ein Dateisystem, welches speziell für Flash-Speicher entwickelt wurde. Maximale Dateigröße 16 Exabyte. Unterstützt Rechtevergabe auf Dateisystemebene.
Aufbau
Ein FAT-Dateisystem gliedert sich in fünf Bereiche:
Bereiche auf einem FAT-Dateisystem Bootsektor reservierte Sektoren FAT Stammverzeichnis Datenbereich Bootsektor
Der Bootsektor enthält einerseits ausführbaren x86-Maschinencode, der das Betriebssystem laden soll. An bestimmten Stellen enthält er jedoch Informationen über das FAT-Dateisystem.
Offset (hex) Länge (in Bytes) 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[3][4]. Übliche Werte sind IBM 3.3
(mit zwei Leerzeichen zwischen „IBM“ und „3.3“) undMSDOS5.0
. Im Prinzip ist der Name frei definierbar, Formatierungsprogramme verwenden häufig ihre eigene Namen.0B 2 Bytes 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 (FAT 32) o. 1 (FAT 16 abwärts)) 11 2 Maximale Anzahl an Verzeichniseinträgen im Stammverzeichnis (Ungenutzt bei FAT 32 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 FAT 32 stets ungenutzt. 15 1 Media Descriptor Byte[5][6][7]. Gilt als veraltet und wird ab Windows Server 2003 nicht mehr beachtet. 0xF0 Double sided, 80 Spuren, 18/36 Sektoren pro Spur (1440 KByte- sowie 2880 KByte-3½″-Diskette) 0xF8 Festplatte 0xF9 Double sided, 80 Spuren, 9/15 Sektoren pro Spur (720 KByte-3½″- bzw. 1200 KByte-5¼″-Diskette) 0xFA Single sided, 80 Spuren, 8 Sektoren pro Spur (320 KByte-3½″- bzw. -5¼″-Diskette).
Wird auch für Ramdisks verwendet0xFB Double sided, 80 Spuren, 8 Sektoren pro Spur (640 KByte-3½″- bzw. -5¼″-Diskette) 0xFC Single sided, 40 Spuren, 9 Sektoren pro Spur (180 KByte-5¼″-Diskette) 0xFD Double sided, 40 Spuren, 9 Sektoren pro Spur (360 KByte-5¼″-Diskette)
Double Sided, 77 Spuren, 26 Sektoren pro Spur (500 KByte-8″-Disketten)0xFE Single sided, 40 Spuren, 8 Sektoren pro Spur (160 KByte-5¼″-Diskette)
Single Sided, 77 Spuren, 26 Sektoren pro Spur (250 KByte-8″-Disketten)
Double Sided, 77 Spuren, 8 Sektoren pro Spur (1200 KByte-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 KByte-5¼″-Diskette) 16 2 Anzahl der Sektoren pro FAT. (Bei FAT 32 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 dies 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 FAT 12 und FAT 16 folgt diese Datenstruktur:
Offset (hex) Länge (in Bytes) 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. FAT 32 benutzt eine davon abweichende Struktur ab Offset 24hex:
Offset Länge (in Bytes) 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 FAT-12- oder FAT-16-Dateisystemen existieren – außer dem Bootsektor – keine weiteren reservierten Sektoren. Die FAT folgt somit direkt im Anschluss an den Bootsektor. FAT-32-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,
- der Cluster ist frei,
- das Medium ist an der Position dieses Clusters beschädigt.
- Der Cluster ist von einer Datei belegt,
- der nächste Cluster der Datei ist der Cluster mit der Nummer (X − 2),
- dies ist der letzte Cluster der Datei.
Die Größe (in Bit) und der Wertebereich der Tabelleneinträge unterscheiden sich zw. FAT 12, FAT 16 und FAT 32 wie folgt:
Bedeutung Wert FAT 12 FAT 16 FAT 32 Freier Cluster 00016 000016 0000000016 Defekter Cluster FF716 FFF716 0FFFFFF716 letzter Cluster einer Clusterkette FF816…FFF16 FFF816…FFFF16 0FFFFFF816…0FFFFFFF16 sonstiger Cluster einer Clusterkette 002 < X < FF616 002 < X < FFF616 002 < X < 0FFFFFF616 Die belegten Cluster einer Datei bilden eine verkettete Liste, die Clusterkette genannt wird.
Wegen ihrer grundlegenden Bedeutung für das Dateisystem existieren in der Regel zwei Kopien der FAT, um bei Datenverlust noch immer eine funktionsfähige andere FAT zu haben. Mit diversen Programmen ist 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 über die weiteren Kopien möglich ist.
Stammverzeichnis
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 FAT 12 und FAT 16 direkt der FAT und hat eine feste Größe, und damit die 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 FAT 32 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 nur ein minimales Stammverzeichnis, das nur ein 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 KByte 64 4 5¼″ DD beidseitig 320 KByte 64 4 5¼″ DD beidseitig 360 KByte 112 7 5¼″ HD beidseitig 1200 KByte 224 14 3½″ DD beidseitig 720 KByte 112 7 3½″ HD beidseitig 1440 KByte 224 14 3½″ ED beidseitig 2880 KByte 448 28 Festplatten variabel 512 32 Datenbereich
Ein Verzeichniseintrag besteht aus 32 Bytes.
Offset (hex) Länge (in Bytes) 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 0F16 (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 Zugriffsdatums; siehe 0x18 14 2 Bei FAT32 die oberen beiden Bytes des Clusters 16 2 Zeit (5 / 6 / 5 Bits für Stunde / Minute / Sekunden)
Die Auflösung der Sekunden beträgt 2 s (0..29)18 2 Datum (7 / 4 / 5 Bits für Jahr / Monat / Tag)
Jahr: Jahr seit 1980; z. B. für 2007 = 271A 2 (Offset des Start-Clusters) + 2 1C 4 Dateigröße in Bytes 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 durch einen FAT-Tabelleneintrag mit dem Wert FFFFFFh.
Versionen
FAT12
Mit der 1980 erschienenen ersten Version von QDOS wurde FAT als Dateisystem eingeführt. Anfangs wurden keine Unterverzeichnisse verwaltet. Dies änderte sich mit MS-DOS Version 2.0.
FAT12 wird nur auf Datenträgern bzw. Partitionen bis zu einer Größe von 16 MB 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, hierdurch 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 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-MB-große Platten verwaltbar.
Da FAT12 fast nur noch für Disketten verwendet wird, ist es fast in Vergessenheit geraten. Allgemein wird heute deshalb oft auch das FAT16 nur als FAT bezeichnet. Allerdings benötigt das Server-Betriebssystem Novell-Netware bis zur Version 4.0 nur eine bis zu 16 MB große „DOS“-Boot-Partition, die also (automatisch) mit FAT12 erzeugt wird.
Es hat die folgenden 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 GB begrenzt. Windows NT und Enhanced DR-DOS können allerdings knapp unter 4 GB große FAT16-Partitionen erzeugen und verwalten. (Clustergröße 64 KByte)
- Die Cluster sind je nach Partitionsgröße zwischen 512 Byte und maximal 32 KByte groß.
- Dateien dürfen bis 2 GB groß werden, unter Windows NT und Enhanced DR-DOS 4 GB.
- 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 MB Kapazität. FAT16 verwaltet 216 = 65.536 Cluster. Selbst bei einer Clustergröße von 8.192 Byte sind 512 MB adressierbar, bei 32.768 Byte Clustergröße sogar 2 GB. Dies war für damalige Verhältnisse ausreichend (Maximalgrößen siehe FAT16).
Dennoch hatten die Designer von Windows 95 das Ziel, die Nutzung von langen Dateinamen zu ermöglichen. Durch einen Trick im Layout des Dateisystems wird dies 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. 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 (allerdings inklusive Speicherpfad) 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 B Anzahl aller Dateien 228 Länge des Dateinamens 255 Zeichen Größe des Dateisystems 8 TiB (mit 2 KiB Sektorgröße) Eigenschaften Unterstützende Betriebssysteme Microsoft Windows 95b und neuer; viele neuere unixoide Betriebssystem FAT32 ist ein von Microsoft entwickeltes Dateisystem, das seit 1997 die Vorgängerversion FAT16 ergänzt. Partitionen kleiner als 512 MB werden nach wie vor mit FAT16 erzeugt, von 512 MB bis 2 GB hat man die Wahl, ab 2 GB wird FAT32 benutzt.
Es wurde 1997 mit Windows 95b (auch 4.00.950b bezeichnet) eingeführt. Die Adressierung arbeitet mit 32 Bit, wovon 4 Bit reserviert sind, sodass 228 = 268.435.456 Cluster adressiert werden können.
FAT32 kann außerdem mit allen neueren Windows-Versionen (98, 2000, ME, XP, Vista und Mobile) sowie – anders als NTFS – problemlos auch mit FreeDOS und Enhanced DR-DOS verwendet werden. Da Windows von Haus aus nur eine sehr begrenzte Anzahl von Dateisystemen unterstützt, wird FAT32 trotz seiner Beschränkungen gern zum Datenaustausch mit anderen Systemen wie beispielsweise Linux oder Mac OS X eingesetzt. Mittlerweile wird NTFS auch unter Linux unterstützt, sodass die Verwendung von FAT32 aufgrund seiner Begrenzung auf 4 GB bei großen Dateien[8] eher nachteilig ist. Beim Kopieren größerer Datenmengen auf FAT32-Laufwerke ist zu beobachten, dass der Schreibvorgang für viele kleine Dateien deutlich mehr Zeit benötigt, als für wenige große Dateien mit dem gleichen Gesamtvolumen. Beim Konkurrenzformat NTFS scheint dieser Effekt deutlich geringer zu sein.
Da bis zu einer Partitionsgröße von 8 GB ein Cluster nur 4 KByte 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 KByte belegt (unter Windows NT oder Windows 2000 FAT16-Clustergröße maximal 64 KByte).
FAT32 hat die folgenden Merkmale:
- Es werden bis zu 228 = 268.435.456 Cluster verwendet.
- Da VFAT unterstützt wird, sind lange Dateinamen (bis 255 Zeichen) möglich.
- Die Dateinamen sind in Unicode kodiert.
- Das Dateisystem ist auf 8 TB begrenzt (Clustergröße ist maximal 215. Es gibt 228 Adressierungsmöglichkeiten ⇒ 215 · 228 = 243 was 8192 GB oder ~8 TB entspricht.)
- Die Cluster sind je nach Partitionsgröße zwischen 512 Byte und maximal 32 KByte groß.
- Dateien dürfen max. bis zu 4 GB − 1 Byte (= 4 × 230 Byte − 1 Byte = 4.294.967.295 Bytes) groß werden (dies ist die heute vermutlich bedeutendste Einschränkung).
- Es können maximal 228 Dateien abgelegt werden (genauer: Da jede Datei mindestens einen Cluster belegt, beschränkt die Anzahl der Cluster die Anzahl der 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 95 A und 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.
- Unter Windows 2000 und Nachfolgern darf der Benutzer mit der eingebauten Funktion „Formatieren“ maximal 32 GB 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. Auch das Festplatten-Dienstprogramm von Mac OS X 10.4 und neuer kann auf Festplatten, die größer als 32 GB sind, eine oder mehrere übergroße FAT32-Partitionen erzeugen.
- Es gibt mehrere moderne DOS-Systeme, die FAT32 unterstützen: MS-DOS 7.10/8.0, Enhanced DR-DOS, FreeDOS 1.0 und Datalight ROM-DOS.
exFAT
exFAT (Extended File Allocation Table) ist ein Dateisystem, welches speziell für Flash-Speicher entwickelt wurde. 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, welches unter KB955704[11] beschrieben wurde.
Die Vorteile gegenüber vorherigen Versionen sind:
- Maximale Dateigröße von 264 Bytes (16 Exabyte).
- Ein Cluster darf maximal 32 MB groß sein (theoretisch jedoch bis zu 2255 Bytes).
- Es wurde eine Tabelle eingeführt, welche die freien Cluster indiziert.
- Das Dateisystem unterstützt ACLs, allerdings wird diese Eigenschaft noch von keinem Betriebssystem unterstützt.
- Es werden auch Transaktionen unterstützt.
- Es gibt einen ersten Treiber für Linux, der allerdings nur Lesevorgänge unterstützt.[12]
Erweiterungen
In den frühen Neunziger-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 ein darüber-liegenden UNIX-kompatiblen Layer hinzu. Es ermöglicht dies mit Dateien, die den Namen --linux-.--- tragen. In Linux 2.6.11 wurde UMSDOS aus dem Kernel entfernt. Es wird nicht mehr weiter entwickelt.
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 (s. o.) 13h–14h 40h0Bh=2880 2880 (=0B40h) Sektoren (zu je 512 Bytes, s. o.), also 1440 KB = 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 also hiermit 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… Erster 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… Zweiter FAT. Er enthält dasselbe:
F0 FF FF 03 40 00 05 60 00 FF 8F 00 09 A0 00 0B2600h–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
- Microsoft: Einschränkungen des FAT32-Dateisystems
- Microsoft: FAT32-Specification
- Datenmassen im Griff (Heise c’t 3/2005)
- Informationen über FAT32plus auf [2] und [3]
- DESKWORK: Einführung in Datenbanken und Dateisysteme (inkl. FAT32plus)
- Microsoft: Working with filesystems (Englisch)
- Tool zum Erstellen von FAT32-Partitionen > 32 GB (getestet bis 2 TB)
- Extended FAT File System (Englisch)
Einzelnachweise
- ↑ Urteil des 2. Senates des Bundespatentgerichtes vom 26. Oktober 2006 – Akz. 2 Ni 2/05 (EU) im Volltext auf der Website des Gerichtes ([1]; 87kb; pdf).
- ↑ Udo Kuhnt, Luchezar Georgiev, Jeremy Davis: FAT+ Draft release, Rev. 2. Abgerufen am 24. März 2007.
- ↑ Matthias Paul: Need DOS 6.22 (Not OEM). In: alt.msdos.programmer. 20. Februar 2002. Abgerufen am 14. Oktober 2006.
- ↑ Wally Bass: Cluster Size. In: comp.os.msdos.programmer. 14. Februar 1994. Abgerufen am 14. Oktober 2006.
- ↑ http://heim.ifi.uio.no/~stanisls/helppc/media_descriptor_byte.html Aufbau Media Descriptor Byte
- ↑ http://en.wikipedia.org/wiki/Table_of_8-inch_floppy_formats 8″-Diskettenformate
- ↑ http://support.microsoft.com/default.aspx?scid=kb;EN-US;q140060 Microsoft Knowledge Base: Media Descriptor Byte
- ↑ Microsoft:Beschränkungen des FAT32-Dateisystems (in Windows XP)
- ↑ Brandon LeBlanc: Vista SP1 Whitepaper. Microsoft, 28. August 2007. Abgerufen am 28. August 2007.
- ↑ Update für Windows XP (KB955704). Microsoft, 29. Januar 2009. Abgerufen am 29. Januar 2009.
- ↑ Beschreibung des ExFAT-Dateisystemtreiber. Microsoft, 27. Februar 2009. Abgerufen am 06. März 2009.
- ↑ http://userweb.kernel.org/~hirofumi/exfat/
Wikimedia Foundation.