Saya tidak dapat menemukan jawaban sederhana dan langsung tentang operasi metadata filesystem mana yang benar-benar bertahan pada jurnal filesystem ext4 & xfs. Perhatikan bahwa saya tidak menanyakan tentang apa yang POSIX nyatakan sebagai "atomik". Saya lebih khawatir tentang apa bagian dari operasi sistem file atom yang secara efektif tahan lama berdasarkan berjalan dengan jurnal diaktifkan tanpa harus membungkuk ke belakang dan fsync(2)
sepanjang waktu.
Operasi Saya menghitung cukup pasti:
creat(2)
link(2)
unlink(2)
rename(2)
mkdir(2)
rmdir(2)
Operasi Saya tidak sepenuhnya yakin tentang:
symlink(2)
The symlink(2)
kasus yang paling meresahkan, karena ada tampaknya tidak akan ada cara mudah untuk fsync(2)
atau fdatasync(2)
yang datablocks mendasari yang menyimpan isi dari sebuah symlink. Mengetahui bahwa jurnal mengurus ini untuk saya akan melegakan.
sumber
Tidak ada Jika Anda ingin memastikan bahwa perubahan tetap ada setelah crash, Anda harus fsync, titik. Penjurnalan hanya menjamin bahwa jika terjadi kerusakan, tidak satu pun dari operasi yang Anda daftarkan akan setengah selesai.
sumber
Anda tahu bahwa jurnal ext4 beroperasi dengan nomor blok dan bukan operasi, benar? "Metadata" akan menjadi apa pun selain blok data aktual untuk inode yang diberikan, terlepas dari operasi apa yang Anda gunakan untuk memodifikasi blok yang dimaksud.
sumber
xfstests tampaknya mengklaim bahwa fsync () pada direktori harus tetap menggunakan symlink yang ada di dalamnya.
Saya belum memverifikasi ini. Mungkin saja saya melewatkan sesuatu.
xfstests digunakan oleh banyak pengembang sistem file Linux. Tes ini ada di direktori "generik". Ini berarti harus berlaku untuk semua sistem file Linux. (Atau setidaknya, semua sistem file blok perangkat. Tes ini bekerja dengan menggunakan perangkat blok virtual khusus).
https://github.com/kdave/xfstests/blob/master/tests/generic/348
sumber