Linux: ext3 und reiserfs im Detail

Journaling-Modi

ext3 kennt drei verschiedene Verfahren, wie das Journaling durchgeführt wird:

data=ordered: Das ist der Default-Modus. Im Journal werden nur Metadaten gespeichert, also Informationen über Dateien, aber nicht die Inhalte der Dateien. Im Journal werden Dateien erst dann als korrekt (committed) gekennzeichnet, wenn sie vollständig auf der Festplatte gespeichert worden sind.

Nach einem Crash kann das Dateisystem sehr rasch wieder in einen konsistenten Zustand gebracht werden, weil alle unvollständig gespeicherten Dateien anhand des Journals sofort erkannt werden. Es ist aber nicht möglich, unvollständig gespeicherte Dateien wiederherzustellen.

data=writeback: Dieser Modus ähnelt dem ordered-Modus. Der einzige Unterschied besteht darin, dass das Journal und die Dateioperationen nicht immer vollständig synchron sind. ext3 wartet mit den committed-Einträgen im Journal nicht auf den Abschluss der Speicheroperation auf der Festplatte.

Dieser Modus ist etwas schneller als der ordered-Modus. Nach einem Crash ist die Integrität des Dateisystems ebenso wie beim ordered-Modus sichergestellt. Allerdings kann es vorkommen, dass Dateien alte Daten enthalten. Das Ergebnis ist somit dasselbe wie bei einem ext2-System, das nach einem Crash durch fsck repariert wird. Allerdings erfolgt die Korrektur bei ext3 ungleich schneller.

data=journal: Im Gegensatz zu den beiden anderen Modi werden jetzt im Journal auch die tatsächlichen Daten gespeichert. Dadurch müssen alle Änderungen zwei Mal gespeichert werden, zuerst in das Journal und dann in die betroffene Datei. Deswegen ist ext3 in diesem Modus deutlich langsamer. Dafür können nach einem Crash Dateien wiederhergestellt werden, deren Änderungen bereits vollständig in das Journal, aber noch nicht in der Datei eingetragen worden sind.