Деякий час тому було обговорено питання про те, що ext4 потенційно може залишати порожні файли після нечистого відключення, підсумовані в цій статті досить добре . В основному через затримку розподілу записи можуть зберігатися в кеш-пам'яті записи набагато довший час, ніж інтервал фіксації за замовчуванням журналу ext (5 секунд).
Проблеми, здається, були виправлені в патчі, який змушує блокувати розподіл у певних ситуаціях, тим самим примушуючи дані на диск не пізніше 5 секунд за замовчуванням.
Мені цікаво, що відбувається, коли програма перезаписує існуючі частини файлу, не обрізаючи і не додаючи сам файл. Чи буде це змушено також диск протягом 5 секунд?
Це здається іншою ситуацією, ніж додавання до файлу: при додаванні розмір файлу змінюється, що є зміною метаданих; отже, необхідна фіксація журналу протягом 5 секунд, а через дані = впорядковані, дані доведеться записати до цього через проблеми безпеки (інакше частини видалених файлів інших користувачів можуть з’явитися для власника доданого файл).
Щойно перезаписуючи дані файлу, немає жодної причини, чому записування даних повинно відбуватися до початку журналу метаданих, оскільки старі дані належать тому ж користувачу, що і нові. Отже, чи відбувається запис все-таки перед фіксацією чи може затягнутися довше, ніж інтервал здійснення журналу? Якщо так, то як довго?
Оновлення: Я знаю, що все це не має значення, коли ви робите правильно, тобто за допомогою fsync (). (Це було основною причиною всієї дискусії про ext4 та втрату даних - проблема стосувалася лише додатків, які не fsync () ing, або не в потрібні моменти.) Я не пишу власну заявку, я прошу, тому що я не знаю, чи всі мої програми роблять правильно, і я хочу знати приблизний термін для таких "небезпечних" записів. Причина запитання полягає в тому, що мій драйвер графіки регулярно викликає паніку ядра, і я хочу знати, чи потрібно мені турбуватися більше, ніж за останні 5 секунд даних.