Journaling ist ein Verfahren von Dateisystemen, Änderungen an den Metadaten zunächst in einem Journal (Protokoll) festzuhalten, bevor sie auf die eigentlichen Dateisystem-Strukturen angewendet werden. Stirbt das System mitten in einer Schreiboperation ab (Stromausfall, Kernel-Crash), lässt sich der konsistente Zustand nach dem Neustart in Sekunden wiederherstellen, statt das gesamte Dateisystem zu durchsuchen.
Wie ein Journal funktioniert
Das Journal ist ein zirkulärer Protokollbereich (Write-ahead Log):
- Die Transaktion (z. B. neue Inode-Einträge, Block-Zuordnungen) wird ins Journal geschrieben.
- Nach dem Commit-Block gelten die Änderungen als festgeschrieben.
- Erst danach werden sie in die Dateisystem-Strukturen übertragen.
- Nach einem Absturz spielt der Kernel das Journal zurück (Replay) — fertige Transaktionen werden wiederholt, unfertige verworfen.
Journaling-Modi bei ext4
- writeback: nur Metadaten werden protokolliert — am schnellsten, aber Dateiinhalte können nach einem Absturz älter sein als die Metadaten.
- ordered (Standard): Metadaten werden journaliert, die zugehörigen Datenblöcke vor dem Commit auf die Platte geschrieben.
- data=journal: auch die Dateiinhalte laufen durch das Journal — maximale Sicherheit, doppeltes Schreiben, langsam.
Verbreitung
Journaling führte ext3 2001 in die ext-Reihe ein (auf Basis des Journaling Block Device, JBD); ext4 nutzt die Weiterentwicklung JBD2. Auch NTFS, XFS und viele andere Dateisysteme journalieren ihre Metadaten. Der Journal-Bereich wird im Superblock des Dateisystems referenziert. Moderne Copy-on-Write-Dateisysteme wie Btrfs oder ZFS ersetzen das Journal durch atomare Aktualisierung ganzer Strukturen.