Ich kann keine einfache, eindeutige Antwort darauf finden, welche Dateisystem-Metadatenoperationen tatsächlich in den ext4 & xfs-Dateisystem-Journalen beibehalten werden. Beachten Sie, dass ich nicht nach dem frage, was POSIX als "atomar" deklariert. Ich bin mehr besorgt darüber, welche Teilmenge der atomaren Dateisystemoperationen effektiv dauerhaft ist, da sie mit einem aktivierten Journal ausgeführt werden, ohne sich fsync(2)
ständig nach hinten beugen zu müssen .
Operationen Ich bin mir ziemlich sicher, zählen:
creat(2)
link(2)
unlink(2)
rename(2)
mkdir(2)
rmdir(2)
Operationen Ich bin mir nicht ganz sicher:
symlink(2)
Der symlink(2)
Fall ist am problematischsten, da es keinen einfachen Weg zu fsync(2)
oder fdatasync(2)
den zugrunde liegenden Datenblöcken zu geben scheint, in denen der Inhalt eines Symlinks gespeichert ist. Zu wissen, dass das Tagebuch sich für mich darum kümmert, wäre eine Erleichterung.
quelle
Keiner. Wenn Sie sicherstellen möchten, dass die Änderungen nach einem Absturz bestehen bleiben, müssen Sie fsync, period. Das Journaling garantiert nur, dass im Falle eines Absturzes keine der von Ihnen aufgelisteten Vorgänge zur Hälfte ausgeführt wird.
quelle
Sie wissen, dass das ext4-Journal nach Blocknummer und nicht nach Betrieb arbeitet, richtig? "Metadaten" sind alles andere als die tatsächlichen Datenblöcke für den angegebenen Inode, unabhängig davon, mit welcher Operation Sie den betreffenden Block geändert haben.
quelle
xfstests scheint zu behaupten, dass fsync () in einem Verzeichnis alle darin enthaltenen Symlinks beibehalten sollte.
Ich habe dies nicht überprüft. Möglicherweise habe ich etwas verpasst.
xfstests wird von vielen Entwicklern von Linux-Dateisystemen verwendet. Dieser Test befindet sich im "generischen" Verzeichnis. Dies bedeutet, dass es für alle Linux-Dateisysteme gelten sollte. (Oder zumindest alle Dateisysteme für Blockgeräte. Der Test funktioniert mit einem speziellen virtuellen Blockgerät.)
https://github.com/kdave/xfstests/blob/master/tests/generic/348
quelle