Я не могу найти простой, прямой ответ о том, какие операции метаданных файловой системы фактически сохраняются в журналах файловой системы ext4 & xfs. Обратите внимание, что я не спрашиваю о том, что POSIX объявляет «атомным». Меня больше волнует, какое подмножество операций атомарной файловой системы эффективно долговечно благодаря работе с включенным журналом без необходимости перегибаться назад и fsync(2)
все время.
Шеф я вполне уверен, считаю:
creat(2)
link(2)
unlink(2)
rename(2)
mkdir(2)
rmdir(2)
Операции, в которых я не совсем уверен:
symlink(2)
Этот symlink(2)
случай вызывает наибольшую тревогу, поскольку, похоже, не существует какого-либо прямого пути fsync(2)
или fdatasync(2)
базовых блоков данных, которые хранят содержимое символической ссылки. Зная, что журнал заботится об этом для меня, было бы облегчением.
источник
Никто. Если вы хотите быть уверены, что изменения сохранятся после сбоя, вы должны fsync, точка. Ведение журнала только гарантирует, что в случае сбоя ни одна из перечисленных вами операций не будет выполнена наполовину .
источник
Вам известно, что журнал ext4 работает по номеру блока, а не по операции, правильно? «Метаданные» могут быть чем-то иным, чем действительные блоки данных для данного inode, независимо от того, какую операцию вы использовали для изменения рассматриваемого блока.
источник
xfstests, кажется, утверждает, что fsync () в каталоге должен сохранять любые символические ссылки, которые он содержит.
Я не проверял это. Возможно, я что-то пропустил.
xfstests используется многими разработчиками файловых систем Linux. Этот тест находится в «общем» каталоге. Это означает, что оно должно применяться ко всем файловым системам Linux. (Или, по крайней мере, все файловые системы блочных устройств. Тест работает с использованием специального виртуального блочного устройства).
https://github.com/kdave/xfstests/blob/master/tests/generic/348
источник