Angenommen, Sie berühren nur einen Block, dann wird entweder dieser Block überschrieben oder es werden keine Blöcke überschrieben.
Die erste Situation ist bei einer großen Mehrheit der heute weit verbreiteten Dateisysteme sowie bei fast allen historischen Dateisystemen der Fall. Beispiele sind NTFS, FAT, ext4, XFS, HFS, HFS + und UFS. Im Wesentlichen ist dies die einfachste Option, und alle Nachteile sind bekannt und ziemlich trivial zu verstehen.
Die zweite Situation ist, was einige neuere Dateisysteme tun. Dies gilt insbesondere für BTRFS, ZFS, NILFS2, F2FS und ich glaube, ReFS und APFS (und das ehrwürdige Archivierungsdateisystem Fossil von Plan 9 von Bell Labs, das meiner Meinung nach das erste gewesen sein könnte). Ihre Arbeitsweise ist etwas anders. Anstatt den vorhandenen Block direkt zu überschreiben, schreiben sie in einen neuen, derzeit nicht verwendeten, und aktualisieren dann die Metadaten der Datei, sodass sie stattdessen auf diese neue Kopie zeigen, und geben die alte frei. Dies ist etwas komplizierter, stellt jedoch sicher, dass das Schreiben entweder geschieht oder nicht, statt die Möglichkeit zu belassen, dass es möglicherweise nur teilweise abgeschlossen ist.
Sobald Sie jedoch nur mit diesem einen Block arbeiten, wird es kompliziert. Je nach System verfügen Sie möglicherweise nicht über neue Blockzuordnungen für das Schreiben. Möglicherweise haben Sie auch neue Blöcke aufgrund des Anwendungsverhaltens anstelle des Dateisystems zugewiesen. Auf vielen UNIX-ähnlichen Systemen schreibt eine Anwendung häufig die geänderte Version einer Datei aus, die in eine temporäre Datei aktualisiert wird, und ersetzt dann die alte durch Umbenennen der temporären Datei, da dadurch sichergestellt wird, dass das Update entweder geschieht oder nicht t