Abhilfe für dieses Problem schaffen Dateisysteme mit Journaling wie JFS (Journaling File System) von IBM oder das GEOM-Modul Gjournal unter FreeBSD. Dabei werden sämtliche Änderungen am Dateisystem in einem Journal protokolliert. Im Falle eines Falles wird dieses Journal abgearbeitet und so das Dateisystem wieder in einen konsistenten Zustand versetzt. Diese Methode hat aber den Nachteil, dass das Journal Plattenplatz benötigt. Doch was ist, wenn bei Stromausfall das Journal nicht mehr geschrieben werden kann?
ZFS verwendet die Transaktionsmethode des Copy on Write (COW). Abbildung 3 zeigt, wie diese Methode funktioniert. Wie bei allen modernen Dateisystemen liegen die Daten in einer baumartigen Struktur vor (1). Die Wurzel bildet der Super-Node, die Daten sind in den Blöcken gespeichert. Im nächsten Schritt (2) werden die Blöcke kopiert, in denen Daten verändert werden sollen. Die Originalblöcke bleiben dabei erhalten. Sobald diese Transaktion erfolgreich abgeschlossen ist, werden die Nodes kopiert und deren Pointer zeigen gegebenenfalls auf die neuen Blöcke. Da auch dies wieder eine Transaktion darstellt, wird nur nach einem erfolgreichen Abschluss der nächste und letzte Schritt durchgeführt: Der Super-Node wird neu geschrieben. Auch dies ist wieder durch eine Transaktion abgesichert.
Wie man anhand der beschriebenen Schritte schnell erkennen kann, bleibt bei einem Stromausfall das Dateisystem in einem konsistenten Zustand. Da nur mit Kopien der Nodes und Blöcke gearbeitet wird, bleiben im schlimmsten Fall die Originale erhalten, während die Kopien verloren sind.
Die Transaktionsmethode Copy on Write bietet außerdem auf einfache Art und Weise Snapshots: Die Originalblöcke werden einfach nicht freigegeben. So erhält man die Möglichkeit, jederzeit zum vorherigen Stand der Datei zurückzukehren. Kostengünstiger können Snapshots nicht sein. Außerdem benötigen sie im Gegensatz zur klassischen Methode der Snapshots kaum Systemresourcen.