Які операції з метаданими файлової системи насправді передаються в ext4 & xfs?


9

Я не можу знайти просту, просту відповідь про те, які операції з метаданими файлової системи насправді зберігаються в журналах файлової системи 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)лежать в основі БлокіДанних , які зберігають вміст лінк. Знання того, що журнал піклується про це, для мене було б полегшенням.

Відповіді:


1

З міркувань продуктивності ext4 за замовчуванням записує лише метадані файлової системи через журнал.

Я вважаю, що XFS також реєструє всі транзакції метаданих, якщо ви не переробили файлову систему.


Так, але що таке "метадані" конкретно? Блоки каталогу: обов'язково. Самі вузоли: так. Символьні посилання з ціллю, достатньо маленькою, щоб вписатись у саму вкладку: напевно? Символьні посилання, де мета перекидається на допоміжні блоки: ??????

Посилання допоможе
asdmin

1

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

Жоден. Якщо ви хочете бути впевнені, що зміни зберігаються після збою, вам слід синхронізувати, періодично. Журнал гарантує лише те, що в разі аварії жодна з перелічених вами операцій не буде наполовину виконана.


Я знаю, що якщо я небайдужий, я мушу файли та каталоги, щоб знати напевно, чи потрапили блоки в спінінг іржі, але я не знайшов методу, який би міг знайти, щоб я міг синхронізувати блоки, які повертають символьну посилання, якщо вона випливає з вузол. Тоді мій єдиний прийом - покластися на журнал або більше ніколи не використовувати символьні посилання для будь-якого значення.
rboyer

@naelyn, fsync () змиє всі блоки, пов'язані з файлом, включаючи нешвидке символьне посилання.
psusi

1
як я відкрию відповідний дескриптор файлів для використання у fsync, який би змивав блоки нешвидкого символьного посилання?
rboyer

@naelyn, о, так ... можливо, потрібно буде запитати про цей список у списку розсилки linux-fsdevel ... із твердими посиланнями. Я вважаю, що ви відкриваєте та синхронізуєте каталог, що містить його, можливо, символьні посилання працюють однаково?
psusi

0

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


0

xfstests з'являється стверджувати , що Fsync () в директорії повинні зберігатися будь-які символічні посилання , які він містить.

Я цього не підтвердив. Можливо, я щось пропустив.

xfstests використовується багатьма розробниками файлових систем Linux. Цей тест знаходиться у каталозі "generic". Це означає, що він повинен застосовуватися до всіх файлових систем Linux. (Або, принаймні, всі файлові системи блокових пристроїв. Тест працює за допомогою спеціального віртуального блочного пристрою).

https://github.com/kdave/xfstests/blob/master/tests/generic/348

# Test creating a symlink, fsync its parent directory, power fail and mount
# again the filesystem. After these steps the symlink should exist and its
# content must match what we specified when we created it (must not be empty
# or point to something else).
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.