Nie mogę znaleźć prostej, prostej odpowiedzi na temat tego, które operacje metadanych systemu plików są rzeczywiście utrwalane w dziennikach systemu plików ext4 & xfs. Zauważ, że nie pytam o to, co POSIX deklaruje jako „atomowy”. Bardziej martwię się tym, który podzbiór operacji atomowego systemu plików jest faktycznie trwały dzięki temu, że działa z włączonym dziennikiem bez konieczności ciągłego pochylania się do tyłu i przez fsync(2)
cały czas.
Operacje, których jestem pewien, liczą się:
creat(2)
link(2)
unlink(2)
rename(2)
mkdir(2)
rmdir(2)
Operacje, których nie jestem całkowicie pewien:
symlink(2)
symlink(2)
Przypadek jest najbardziej niepokojące, ponieważ nie wydaje się być każdy prosty sposób fsync(2)
lub fdatasync(2)
bazowe Bloki danych, które przechowują zawartość dowiązania symbolicznego. Świadomość, że dziennik się tym zajmuje, byłaby dla mnie ulgą.
źródło
Żaden. Jeśli chcesz mieć pewność, że zmiany utrzymują się po awarii, musisz fsync, kropka. Kronikowanie gwarantuje tylko, że w przypadku awarii żadna z wymienionych operacji nie zostanie wykonana w połowie .
źródło
Wiesz, że dziennik ext4 działa według numeru bloku, a nie operacji, prawda? „Metadane” to cokolwiek innego niż rzeczywiste bloki danych dla danego i-węzła, niezależnie od tego, jakiej operacji użyto do zmodyfikowania danego bloku.
źródło
Wygląda na to, że xfstests twierdzi, że fsync () w katalogu powinien zachować wszelkie zawarte w nim dowiązania symboliczne.
Nie zweryfikowałem tego. Możliwe, że coś przeoczyłem.
xfstests jest używany przez wielu programistów systemów plików Linux. Ten test znajduje się w katalogu „ogólnym”. Oznacza to, że powinien mieć zastosowanie do wszystkich systemów plików Linux. (Lub przynajmniej wszystkie systemy plików urządzeń blokowych. Test działa przy użyciu specjalnego wirtualnego urządzenia blokowego).
https://github.com/kdave/xfstests/blob/master/tests/generic/348
źródło