Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Journaling-Dateisystem

Ein Journaling-Dateisystem (teilweise lehnübersetzt aus dem dazu ursprünglich englischen journaling file system) ist ein Dateisystem, das alle Änderungen …

Inhalt4 Abschnitte
  1. 1. Grundprinzip und Bedeutung
  2. 2. Risiko mehrteiliger Änderungen
  3. 3. Ablauf des Journalings
  4. 4. Dateisysteme und heutige Verbreitung

Grundprinzip und Bedeutung

Ein Journaling-Dateisystem ist ein Dateisystem, das geplante Änderungen zunächst in einem reservierten Speicherbereich, dem Journal, aufzeichnet. Erst danach werden sie an ihren eigentlichen Stellen gespeichert. Dadurch lässt sich selbst dann ein konsistenter Zustand rekonstruieren, wenn ein Schreibvorgang durch einen Systemabsturz, einen Stromausfall oder einen Neustart abgebrochen wurde.

Bei herkömmlichen Dateisystemen kann nach einem solchen Vorfall eine vollständige Prüfung mit möglicherweise erfolglosen Reparaturversuchen erforderlich sein. Journaling kann diese Prüfung überflüssig machen und das Starten des Systems erheblich beschleunigen. Das ist besonders bei Partitionen über 100 Gigabyte wichtig, deren Überprüfung mehrere Stunden dauern kann.

Man unterscheidet zwei Formen:

  • Metadaten-Journaling schützt die Konsistenz der Dateisystemstrukturen, etwa von Verzeichniseinträgen. Es garantiert nicht die Konsistenz der eigentlichen Dateiinhalte.
  • Full-Journaling bezieht zusätzlich die Dateiinhalte ein und gewährleistet auch deren Konsistenz.

Umgangssprachlich ist mit „Journaling“ häufig nur das Metadaten-Journaling gemeint.

Risiko mehrteiliger Änderungen

Ein Dateisystem ordnet Namen bestimmte Daten zu und verwaltet neben Dateien auch dateiähnliche Objekte, insbesondere Verzeichnisse. Änderungen wie Erstellen, Verschieben, Umbenennen oder Löschen erfordern meist mehrere Schreiboperationen an unterschiedlichen Stellen des Massenspeichers. Beim Verschieben müssen beispielsweise sowohl der bisherige als auch der neue Ordner verändert werden.

Nach der ersten Teiloperation, aber vor dem Abschluss der letzten, ist das Dateisystem vorübergehend inkonsistent: Ein Teil der zusammengehörenden Änderung wurde bereits gespeichert, ein anderer noch nicht. Normalerweise führt erst die vollständige Operation wieder von einem konsistenten Zustand in einen anderen konsistenten Zustand.

Wird der Computer während dieser Zwischenphase neu gestartet, muss das gesamte Dateisystem auf Fehler untersucht werden, bevor es wieder sicher verwendet werden kann. Wird diese Prüfung ausgelassen, können spätere Schreiboperationen schwerwiegende Schäden bis hin zum Totalverlust aller Daten verursachen.

Ablauf des Journalings

Soll eine Datei D aus dem Verzeichnis V1 in das Verzeichnis V2 verschoben werden, muss der Eintrag in V1 entfernt und in V2 hinzugefügt werden. Falls V2 dafür vergrößert werden muss, entstehen weitere Änderungen. Beim Journaling werden diese Schritte zunächst nicht an ihren eigentlichen Speicherorten ausgeführt, sondern im Journal festgehalten, zum Beispiel:

  • Entferne Eintrag D aus Verzeichnis V1.
  • Füge Eintrag D dem Verzeichnis V2 hinzu.

Das bloße Aufzeichnen genügt jedoch nicht, weil auch der Schreibvorgang im Journal unterbrochen werden könnte. Deshalb wird das Journal von Zeit zu Zeit abgeschlossen. Dabei wird vermerkt, wie viele Änderungen vollständig erfasst wurden; eine Prüfsumme dient dazu, die Korrektheit der Daten zu kontrollieren.

Eine Verschiebeoperation mit dem Anlegen der Datei soll am neuen Ort beginnen. Anschließend werden alle Daten kopiert. Erst zum Schluss werden der Verzeichniseintrag am alten Ort gelöscht und der Speicherplatz auf dem Quelldatenträger freigegeben.

Dateisysteme und heutige Verbreitung

Als Journaling noch nicht üblich war, wurden neue Dateisysteme gezielt dafür entworfen oder vorhandene Systeme nachträglich ergänzt. Beispiele sind AdvFS für Tru64 UNIX, BeFS für BeOS, ext3 und spätere Versionen des extended filesystem für Linux, FFS für BSD, HFS+ für Mac OS X beziehungsweise macOS, JFS/JFS2, NTFS für NT-basiertes Windows, ReiserFS ab Version 3, VxFS und XFS. Für FreeBSD stellt gjournal eine vom Dateisystem unabhängige Journaling-Implementation bereit. Die unter BSD verwendeten UFS-Dateisysteme nutzen mit Softupdates eine Technik mit vergleichbarer Zielsetzung.

Bei vielen Dateisystemen der 1990er Jahre, darunter HFS+ und NTFS, ist nur Metadaten-Journaling eingebaut. Selbst bei vollständig auf Journaling ausgelegten Dateisystemen bleibt Daten-Journaling wegen der geringeren Performance meist optional. Bei der Erstellung eines Dateisystems lässt sich teilweise festlegen, ob das Journal auch die Daten erfassen und damit Full-Journaling verwenden soll.

Metadaten-Journaling ist seit etwa 2005 Standard und in verbreiteten freien, kommerziellen und alternativen Betriebssystemen vorhanden. Seit 2020 wird die Bezeichnung „Journaling-Dateisystem“ daher meist weggelassen, weil diese Funktion bei modernen Dateisystemen vorausgesetzt wird. Moderne Beispiele sind APFS für macOS ab 10.13 und iOS ab 10.3, btrfs für Linux sowie über WinBtrfs auch Windows und ReFS für NT-basiertes Windows.

Weiterlesen