Wie Dateisysteme funktionieren

Windows, Linux oder Mac-OS: Alles, was am Computer geschieht, setzt eine irgendwo gespeicherte Datei voraus. Anhand des Dateisystems NTFS skizzieren wir, wie Betriebssysteme die Dateien verwalten.
Den meisten Platz auf Ihrer Festplatte belegen Benutzer- und Programmdateien. Diese Daten können Sie sich im Windows-Explorer oder über Anwendungsdialoge anzeigen lassen. Auf gewünschte Dateien greifen Sie über die Ordner- und Dateinamen zu. Doch was geschieht unter der Motorhaube des Betriebssystems, wenn Sie ein Verzeichnis öffnen oder eine Datei laden? Zur Klarstellung: In diesem Beitrag geht es um die Logik des Dateisystems, nicht um die Arbeitsweise von Festplatten.

Master File Table und Cluster

Die Tatsache, dass sich Dateien über Namen, Extensionen oder Datumsangaben aufrufen oder filtern lassen, ist ein scheinbar selbstverständlicher Systemservice. Intern erfordert das aber einigen Verwaltungsaufwand, denn das zugrundeliegende Dateisystem hat mit Namen nichts am Hut: Es verwaltet die Dateien anhand durchnummerierter Zuordnungseinheiten – Blöcke oder Cluster. Die Einteilung einer Festplattenpartition in solche Cluster erfolgt bei der Formatierung, wobei ein einzelner Cluster in der Regel die Größe von vier Kilobyte erhält. Kleinere oder größere Cluster sind optional möglich. Ebenfalls bei der Formatierung wird ein Verwaltungsregister erstellt, das künftig alle Dateien und Ordner aufnimmt. Unter Windows NT (XP, Vista, 7, 8) ist dies die versteckte Datei $MFT im Root-Verzeichnis, die Master File Tabelle. Diese Mutter aller weiteren Dateien erhält vorab ein Achtel des kompletten Speicherplatzes reserviert.

Für den Benutzer stellen sich die Daten als hierarchisch strukturiert dar. Tatsächlich handelt es sich um einen Byte-Chaos, das nur durch das Master File Table und durch Zeiger auf die passenden Cluster geordnet wird. Programm, Text, Bild – alles liegt in kunterbuntem Nebeneinander auf der Platte, oft auch in Bruchstücken (Fragmenten). Nicht einmal zwischen Ordner und Datei besteht ein fundamentaler Unterschied: Ein Ordner ist wie eine Datei auch nur ein Datensatz in der MFT, lediglich mit dem Attribut „Ordner“. Und das Ordnerattribut bedeutet nur, dass der Inhalt in der MFT (oder in zusätzlichen Clustern) lediglich aus weiteren Dateinamen besteht. Selbst der Partitionsname (Label) ist ein MFT-Datensatz und somit eine Datei.
Wenn möglich, schreibt das Dateisystem den kompletten Inhalt einer Datei oder eines Ordners direkt in das Master File Table. Da ein Datensatz in der MFT aber typischerweise nur ein KB (1024 Bytes) umfasst, gelingt dies nur bei sehr kleinen Dateien (< ca. 800 Bytes) und nur bei Ordnern mit sehr wenigen Untereinträgen. In den meisten Fällen muss der Dateiinhalt außerhalb der MFT in freien Festplatten-Clustern abgelegt werden. Der Datensatz der MFT enthält aber in jedem Fall an Byte-definierter Stelle den Dateinamen und weitere Eigenschaften wie das Erstelldatum, die Dateirechte, das Schreibschutzattribut oder das Attribut „Verschlüsselt“.

Suche nach Dateien und Ordnern

Nehmen wir an, Sie klicken im Explorer auf eine Datei Rechnung_034-2014.docx auf. Woher weiß das System, dass es den Inhalt dieser Datei etwa aus den Clustern 12057, 12058 und 12116 zu laden hat? Und woher weiß das System, welche Dateinamen es anzeigen soll, wenn Sie im Explorer auf „Dokumente“ klicken?
Anhand der kompletten Pfadangabe beginnt die Suche immer auf der obersten Ebene in der MFT. Dort findet sich der Eintrag für den ersten Ordnernamen im Pfad, in dessen Inhalt geht die Suche dann weiter zum nächsten Unterordner gemäß Pfadangabe bis hinunter zur gesuchten Datei.
Das Ansteuern von Cluster außerhalb der MFT verläuft relativ simpel anhand eines Cluster-Zeigers wie ihn die nachfolgende Abbildung skizziert:

Clustersuche

Zunächst steht die Anzahl der Cluster des gesuchten Clusterblocks. Es kann sich um einen einzigen Cluster oder um Tausende handeln. Danach erscheint in hexadezimaler Darstellung die Nummer des ersten Clusters in diesem Block. Wenn die Datei unfragmentiert ist, also der komplette Inhalt in einer zusammenhängenden Clusterfolge abgelegt ist, genügt es, den Startcluster anzuspringen und ab dort die angegebene Anzahl von Cluster einzulesen. Bei fragmentierten Dateien folgt im MFT-Datensatz ein weiterer, analoger Eintrag, wieder mit Clusteranzahl und dem nächsten Startcluster. Zur Terminierung aller Cluster-Angaben steht in der MFT am Ende immer ein „00“. Sind für eine große Ordner oder für große fragmentierte Dateien viele Clusterblöcke notwendig, reicht ein MFT-Datensatz (mit 1 KB) für diese Infos nicht mehr aus: Dann wird ein Hauptdatensatz als solcher markiert, und der Rest der Infos in weitere Datensätze geschrieben.
Für jede neue Datei und jeden Ordner muss die MFT um einen Datensatz erweitert werden. Wenn nicht mehr benötigte, löschmarkierte Datensätze vorhanden sind, werden zunächst diese Datensätze neu überschrieben. Trotzdem wächst die MFT beständig, denn Löschaktionen machen zwar Platz für neue Einträge, verkleinern aber nicht mehr den Umfang der MFT.

Cluster
spezialtoos wie hier Sysinternal’s Diskview können die Clusterblöcke einzelner Dateien detailliert anzeigen.

Checkdisk und Forensik

Kommt es nach Stromausfällen oder Abstürzen zu Fehlern in der Master-Dateitabelle, sind die betroffenen Daten meist irreparabel geschädigt. Mehrere Verbesserungen gegenüber älteren Dateisystemen verringern die Gefahr solcher Datenverluste: So führen NTFS oder Ext4 ein Journal über alle Schreibvorgänge, die eine Rückkehr zum letzten konsistenten Zustand erlauben. Das jüngere Transactional NTFS (seit Windows Vista) puffert zusammengehörige Schreibvorgänge, bis sichergestellt ist, dass die komplette Aktion erfolgreich zu Ende geführt werden kann.
Wenn ein System trotzdem Inkonsistenzen feststellt und Checkdisk-Reparaturen durchführt, ist danach zwar die Dateitabelle wieder in Ordnung, die eingesammelten Fragmente in Clustergröße sind aber in der Regel wertlos. Es erfordert die Kenntnis und Geduld eines IT-Forensikers, aus den Byte-Mustern von Clustern binäre Dateitypen zu erkennen und die passenden Fragmente in der richtigen Reihenfolge wieder zusammenzusetzen.

Praktische Hinweise zu Dateisystemen

Dateisysteme wie NTFS, Ext4 oder FAT32 unterscheiden sich deutlich. Mit der Wahl eines Dateisystems wird die Mehrzahl der PC-Nutzer aber nur selten konfrontiert. Selbst externe USB-Festplatten sind heute meist schon vorformatiert. Trotzdem lohnt es, wesentliche Vor- und Nachteile zu kennen:
NTFS für Windows: Aufgrund der Anforderungen eines Multiuser-Systems mit Rechteverwaltung erlaubt neueres Windows für die Systempartition nur noch das angestammte Dateisystem NTFS. Auf anderen Partitionen wird NTFS bei der Formatierung vorgeschlagen.
Ext4 für Linux: Linux-Systeme legen – aus ähnlichen Gründen wie Windows NTFS – ihr angestammtes Ext4 (Ext2, Ext3) als Dateisystem nahe. Eine andere Wahl ist zwar möglich, aber nicht zu empfehlen.
FAT32 für Datenaustausch: Bei der Formatierung externer USB-Datenträger kann das alte und einfache FAT32 als kleinster gemeinsamer Nenner erste Wahl sein. FAT32 kennt keine Rechteverwaltung, und jedes Windows, Linux, Mac OS liest und beschreibt FAT32-Datenträger problemlos. Die maximale Dateigröße beträgt vier GB.
exFAT: Unter jüngerem Windows lassen sich externe Datenträger mit exFAT formatieren, das unter anderem das Dateigrößenlimit von FAT32 aufhebt. exFAT-Volumes sind mittlerweile für alle Nicht-Windows-Systeme lesbar, wobei etwa unter Linux nur ein kleines Tool nachinstalliert werden muss.