Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

File Allocation Table

Bei Dateisystemen ab 32 GB ist die Standard-Clustergröße 128 KB. Das bedeutet, dass selbst kleine Dateien immer mindestens 128 KB Platz auf dem Dateisystem …

Inhalt6 Abschnitte
  1. 1. Grundidee und Bedeutung
  2. 2. Varianten und Grenzen
  3. 3. Aufbau einer FAT-Partition
  4. 4. Verzeichnisse und Dateinamen
  5. 5. Erweiterungen und abgeleitete Dateisysteme
  6. 6. Besonderheit des Atari ST

Grundidee und Bedeutung

FAT („File Allocation Table“, Dateizuordnungstabelle) ist eine 1977 von Microsoft entwickelte Familie von Dateisystemen. Sie wurde zum Industriestandard und dient bis heute, auch zwischen unterschiedlichen Betriebssystemen, als fast universelles Austauschformat. Proprietäre Nachfolger von Microsoft sind NTFS und exFAT.

Ein FAT-Dateisystem teilt den Datenbereich in Cluster ein. Ein Cluster besteht aus einem oder mehreren Sektoren und ist die kleinste Zuordnungseinheit, die eine Datei belegen kann. Die File Allocation Table hält fest, welche Cluster frei, defekt oder einer Datei zugeordnet sind. Bei einer Datei verweist der Eintrag meist auf den nächsten Cluster; dadurch entsteht eine einfach verkettete Liste. Ein besonderer Wert kennzeichnet den letzten Cluster.

Mehrbytewerte mit 16 oder 32 Bit werden im Little-Endian-Format gespeichert: Das niederwertigste Byte steht zuerst. Üblicherweise gibt es zwei Kopien der FAT. Fällt eine aus oder wird sie beschädigt, kann die zweite Kopie oft bei der Datenwiederherstellung helfen.

Varianten und Grenzen

FAT12, FAT16 und FAT32 sind aufeinander aufbauende Weiterentwicklungen, deren Datenstrukturen vor allem an größere Speicherkapazitäten angepasst wurden. Die Zahl bezeichnet die Bitbreite eines FAT-Eintrags: FAT12 nutzt 12 Bit und höchstens 4.084 Cluster, FAT16 16 Bit und 4.085 bis 65.524 Cluster, FAT32 effektiv 28 nutzbare Bit und 65.525 bis 268.435.444 Cluster.

FAT12 wird auf Datenträgern oder Partitionen bis 16 MiB eingesetzt und ist weiterhin das übliche Dateisystem für FAT-formatierte 3½″-Disketten. Es unterstützt Dateinamen im 8.3-Schema: acht Zeichen für den Namen und drei für die Erweiterung. Cluster sind 512 bis 4.096 Byte groß. Das Stammverzeichnis ist auf 14 Cluster beziehungsweise höchstens 224 Einträge beschränkt. Unterstützt werden die Attribute „Schreibgeschützt“, „Versteckt“, „System“ und „Archiv“.

FAT16 kam 1983 hinzu; FAT16B ermöglichte durch 32-Bit-Angaben für die Sektorzahl Laufwerke bis 2 GiB, später 4 GiB. Unter MS-DOS und Windows 9x ist die Neuanlage mit FDISK auf 2 GiB begrenzt, während Windows NT, FreeDOS und Enhanced DR-DOS FAT16-Partitionen knapp unter 4 GiB bei 64-KiB-Clustern erzeugen und verwalten können. Dateien dürfen normalerweise bis 2 GiB groß sein, unter Windows NT und Enhanced DR-DOS bis 4 GiB. Das Stammverzeichnis hat eine festgelegte Position und Größe.

FAT32 wurde 1996 mit Windows 95B eingeführt. Ab 2 GiB wird es verwendet; bei 512 MiB bis 2 GiB besteht Wahl zwischen FAT16 und FAT32. Es adressiert bis zu 2^28 = 268.435.456 Cluster. Bei typischen 512-Byte-Sektoren beträgt die maximale Dateisystemgröße 2 TiB, bei 4-KiB-Sektoren 16 TiB. Jede Datei ist jedoch auf 4 GiB − 1 Byte = 4.294.967.295 Byte begrenzt, weil das Feld für ihre Größe nur 4 Byte breit ist. FAT32 wird wegen der breiten Unterstützung etwa für USB-Sticks, mobile Festplatten und SDHC-Karten bis 32 GB genutzt; es ist auch das Dateisystem der EFI-Systempartition. Sein Stammverzeichnis kann wachsen und an einer beliebigen Stelle im Datenbereich liegen.

Unter Windows 2000 und Nachfolgern begrenzt die integrierte Formatierfunktion neu angelegte FAT32-Dateisysteme normalerweise auf 32 GiB, während der Zugriff auf größere, anders erzeugte FAT32-Dateisysteme möglich ist. Beim Kopieren von NTFS auf FAT32 gehen NTFS-Streams und Berechtigungen verloren.

Aufbau einer FAT-Partition

Eine FAT-Partition besteht aus Bootsektor, gegebenenfalls weiteren reservierten Sektoren, einer oder mehreren FAT-Kopien, bei FAT12/FAT16 dem Stammverzeichnis und schließlich dem Datenbereich für Dateien und Ordner. Bei FAT32 kommt ein FS-Informationsbereich hinzu.

Der Bootsektor kann x86-Bootcode enthalten und beschreibt zugleich das Dateisystem. Wichtige Angaben sind Bytes pro Sektor (512, 1024, 2048 oder 4096), Sektoren pro Cluster, die Anzahl reservierter Sektoren, die Zahl der FAT-Kopien – meist 2 –, Gesamtsektoren und die Sektoren pro FAT. Die BIOS-Bootsektorsignatur 55_hex AA_hex an Offset 1FE_hex kennzeichnet einen gültigen Bootsektor. FAT32 hat zusätzliche Angaben, darunter die Zahl der Sektoren pro FAT, den Startcluster des Stammverzeichnisses, den FS-Informationssektor und üblicherweise eine Bootsektorkopie.

Reservierte Sektoren zwischen Bootsektor und erster FAT kann ein Bootmanager oder eine betriebssystemspezifische Erweiterung verwenden. Bei FAT12 und FAT16 folgt die FAT meist unmittelbar auf den Bootsektor; FAT32 enthält gewöhnlich weitere Bootsektor-Erweiterungen und eine Sicherungskopie.

In der FAT bedeutet 000 beziehungsweise 0000 beziehungsweise 00000000 einen freien Cluster. Defekte Cluster sind bei FAT12 FF7, bei FAT16 FFF7 und bei FAT32 0FFFFFF7. Die Werte FF8…FFF, FFF8…FFFF und 0FFFFFF8…0FFFFFFF markieren jeweils das Ende einer Clusterkette.

Verzeichnisse und Dateinamen

Ein Verzeichnis ist eine Tabelle aus Verzeichniseinträgen. Normalerweise entspricht jede Datei oder jedes Unterverzeichnis einem Eintrag; lange Dateinamen benötigen gegebenenfalls mehrere Einträge. Jeder reguläre Eintrag ist 32 Byte lang und enthält unter anderem den Namen im 8.3-Format, Attribute, Zeitangaben, Startcluster und Dateigröße.

Die Attribute sind: Bit 0 Schreibgeschützt, Bit 1 Versteckt, Bit 2 Systemdatei, Bit 3 Volume-Label, Bit 4 Unterverzeichnis und Bit 5 Archiv. Die Zeit der letzten Änderung speichert Stunde, Minute und Sekunden mit einer Auflösung von 2 s; das Datum speichert das Jahr seit 1980, Monat und Tag.

Zum Lesen einer Datei wird ihr Verzeichniseintrag gesucht. Er liefert den Startcluster; die weiteren Cluster werden über die FAT verfolgt, bis ein Endwert erreicht wird. Ein Unterverzeichnis wird wie eine Datei angelegt, aber im übergeordneten Verzeichnis als Unterverzeichnis markiert. Da seine Cluster über die FAT verkettet werden, kann es wachsen.

Bei FAT12 und FAT16 liegt das Stammverzeichnis direkt nach der FAT und seine Größe wird beim Formatieren festgelegt. Bei FAT32 hat es keine feste Größe. Als typisches FAT12-Beispiel hat eine 1.440-KiB-Diskette 2.880 Sektoren zu je 512 Byte, zwei FATs mit je 9 Sektoren, 224 Einträge im Stammverzeichnis und Cluster von einem Sektor.

Erweiterungen und abgeleitete Dateisysteme

VFAT erweitert FAT12, FAT16 und FAT32 um LFN („long filenames“), also lange Dateinamen. Zur Kompatibilität wird zusätzlich ein verkürztes 8.3-Alias wie xxxxxx~1.xxx gespeichert. Der eigentliche Name liegt in mehreren verketteten Zusatz-Verzeichniseinträgen. Ältere Systeme ignorieren diese wegen ihrer als ungültig angesehenen Attributkombination und verwenden das kurze Alias. VFAT erlaubt Namen bis 255 Zeichen; Name einschließlich Pfad darf bis 260 Zeichen enthalten. Als Zeichensatz dient Unicode in UCS-2. VFAT wird von Windows 95 und höher, Windows NT 3.5 und höher sowie Linux unterstützt.

UMSDOS legte in frühen Linux-Distributionen eine Unix-kompatible Schicht über FAT16. In Dateien namens --linux-.--- speicherte sie Benutzerrechte und lange Namen. Sie wurde mit Linux 2.6.11 aus dem Kernel entfernt. UVFAT verband dagegen VFAT für lange Namen mit dem UMSDOS-Mechanismus für Benutzerrechte, wurde aber früh eingestellt.

TFAT („Transaction-safe FAT“) schützt vor Dateisystemschäden, etwa bei Stromausfall während eines Schreibvorgangs. FAT1 enthält die aktuellen Zuordnungen, FAT0 den zuletzt konsistenten Stand. Erst nach erfolgreicher Transaktion wird FAT1 nach FAT0 kopiert; im Fehlerfall kann FAT0 nach FAT1 kopiert und die unvollständige Änderung rückgängig gemacht werden. Bei 512-Byte-Sektoren liegt das rechnerische Partitionslimit bei 2 TiB. TFAT wird vor allem für Mobilgeräte mit Windows Mobile ab 6.5 und Windows CE ab 6.0 unterstützt.

FAT+ erweitert FAT32, theoretisch auch FAT16B, rückwärtskompatibel auf Dateien bis 256 GiB − 1 Byte. Die Unterstützung ist selten. Systeme ohne FAT+-Unterstützung können bei Dateien über 4 GiB Kompatibilitätsprobleme haben.

exFAT ist eine 2006 mit Windows CE 6.0 eingeführte Neuentwicklung für Flash-Speicher, nicht einfach eine aufbauende FAT12/16/32-Variante. Es soll die 4-GiB-Dateigrenze von FAT32 vermeiden, wenn NTFS schwer implementierbar ist. Es verwendet eine Bit-Karte für freie Cluster; nur Cluster fragmentierter Dateien werden in der Fragmenttabelle vermerkt. exFAT unterstützt ACL, also erweiterte Zugriffsrechte, und mit TexFAT auch Transaktionen. Für SDXC-Karten ist es vorgeschrieben. Die im Artikel genannten Angaben zur theoretischen Maximaldateigröße widersprechen sich: Die Übersicht nennt 16 EiB − 1 Byte, die exFAT-Beschreibung 64 ZiB; empfohlen werden dort maximal 512 TB, entsprechend der maximalen Partitionsgröße. Ab 32 GB beträgt die Standard-Clustergröße 128 KB, wodurch auch kleine Dateien mindestens 128 KB belegen. Windows Vista ab Service Pack 1, Windows 7 und neuere Windows-Versionen, Mac OS X 10.6.5 sowie Linux ab Kernel 5.4 unterstützen exFAT.

Besonderheit des Atari ST

Der Atari ST verwendet für Disketten eine FAT12-Variante und kann daher unter MS-DOS formatierte und beschriebene Disketten lesen und schreiben. Frühere Atari-formatierte Disketten waren unter MS-DOS zunächst nicht nutzbar; spätere GEMDOS-Versionen behoben diese Inkompatibilitäten.

Abweichungen betreffen vor allem den Bootsektor: Das OEM-Label beginnt an Offset 2 statt 3 und ist sechs statt acht Byte lang; weitere Bytes werden für eine Seriennummer verwendet. Ein ungewöhnliches OEM-Label kann unter Microsoft-Systemen dazu führen, dass ein Medium nicht lesbar erscheint oder Schreibversuche Datenstrukturen beschädigen. Außerdem war das Media-ID-Byte ursprünglich teils falsch gesetzt. Bei bootfähigen Atari-Disketten muss die Summe aller 16-Bit-Big-Endian-Worte des Bootsektors 1234_16 ergeben. Atari GEMDOS unterstützt Clustergrößen nur bis 4 KB.

Weiterlesen

Microsoft Windows Microsoft Windows (englische Aussprache [ˈmaɪ.kɹoʊ.sɒft ˈwɪn.doʊz]) bzw. Windows ist eine Reihe proprietärer grafischer Betriebssystemfamilien von Microsoft … Flash-Speicher Flash-Speicher sind digitale Speicherbausteine für eine nichtflüchtige Speicherung ohne Erhaltungs-Energieverbrauch. Die genaue Bezeichnung dieses … Festplatte Unter einer Festplatte versteht man einen Bestandteil der Hardware, der der dauerhaften Speicherung digitaler Daten dient, was auf der Ebene der … Adressierung (Rechnerarchitektur) Adressierung ist in der Programmierung das Festlegen, auf welche Operanden (z. B. Datenfelder) sich ein Maschinenbefehl bezieht. Die Operanden können auf … Partition (Datenträger) Als Partition (lateinisch partitio ‚(Ein)teilung') werden die zusammenhängenden, aufeinanderfolgenden Datenblöcke eines Teils eines Volumes bezeichnet. Unicode [ ˈjuːnikoːt]) legt fest, wie Schrift elektronisch gespeichert werden kann, z. B. auf einem Computer oder Telefon. Der durch den Standard festgelegte … Festplattenlaufwerk Ein Festplattenlaufwerk (englisch hard disk drive, Abkürzung HDD), früher auch Festplatten-Speichersystem oder Festplatten-System, oft auch als Festplatte … Filesystem in Userspace FUSE (Filesystem in Userspace) ist ein Kernel-Modul für Unix-Systeme, das es ermöglicht, Dateisystem-Treiber aus dem Kernel-Mode in den User-Mode zu … Master Boot Record Der Master Boot Record (kurz MBR) enthält ein Startprogramm für BIOS-basierte Computer (IBM-PC-kompatible Computer) und eine Partitionstabelle. Datenstruktur In der Informatik und Softwaretechnik ist eine Datenstruktur ein Objekt, welches zur Speicherung und Organisation von Daten dient. Es handelt sich um eine … Opcode Ein spezielles Programm, der Assembler, erzeugt Maschinencode, indem es im Wesentlichen die Mnemonics durch ihre jeweiligen Opcodes ersetzt. Die meisten … Access Control List Eine ACL legt fest, in welchem Umfang einzelne Benutzer und Systemprozesse Zugriff auf bestimmte Objekte (wie Dienste, Dateien, Registrier-Einträge usw.) haben.