Какие операции с метаданными файловой системы фактически регистрируются в ext4 & xfs?

Я не могу найти простой, прямой ответ о том, какие операции метаданных в файловой системе фактически сохраняются в журналах файловой системы 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) базовым блокам данных, которые хранят содержимое символической ссылки. Знать, что журнал позаботится об этом для меня, было бы облегчением.

По соображениям производительности ext4 по умолчанию только записывает метаданные файловой системы через журнал.

Я считаю, что XFS также регистрирует все транзакции метаданных, если вы не изменили файловую систему.

Вы знаете, что журнал ext4 работает по номеру блока, а не по работе, правильно? «Метаданные» были бы чем-то иным, чем фактические блоки данных для данного inode, независимо от того, какую операцию вы использовали для изменения рассматриваемого блока.

Меня больше беспокоит то, что подмножество операций с атомной файловой системой эффективно долговечно благодаря запуску с включенным журналом без необходимости перегибаться назад и fsync (2) все время.

Никто. Если вы хотите быть уверенным, что изменения сохраняются после сбоя, вы должны fsync, period. Журналирование гарантирует только то, что в случае сбоя ни одна из перечисленных вами операций не будет выполнена наполовину .