Некоторое время назад была некоторая дискуссия о том, что ext4 может оставить пустые файлы после нечистого размонтирования, что довольно хорошо описано в этой статье. В основном из-за отложенного размещения записи могут храниться в кэше записи гораздо дольше, чем интервал фиксации по умолчанию для журнала ext (5 секунд).
Похоже, что проблемы были исправлены в патче, который принудительно распределяет блоки в определенных ситуациях, тем самым вынуждая данные переноситься на диск максимум через 5 секунд по умолчанию.
Мне интересно, что происходит, когда приложение перезаписывает существующие части файла без усечения или добавления самого файла. Будет ли это записано на диск в течение 5 секунд?
Это похоже на ситуацию, отличную от добавления к файлу: при добавлении размер файла изменяется, что является изменением метаданных; следовательно, фиксация журнала будет необходима в течение 5 секунд, и из-за данных = заказанные данные должны будут быть записаны до этого из-за соображений безопасности (в противном случае части удаленных файлов других пользователей могут отображаться для владельца добавленной файл).
При простой перезаписи данных файла нет причин, по которым запись данных должна происходить до фиксации журнала метаданных, поскольку старые данные принадлежат тому же пользователю, что и новые. Так происходит ли запись перед фиксацией в любом случае, или она может быть отложена дольше интервала фиксации журнала? Если да, то как долго?
Обновление: я знаю, что все это не имеет значения, когда вы делаете правильные вещи, то есть используете fsync(). (Это было основной причиной всех дискуссий о ext4 и потере данных - проблема касалась только приложений, не работающих с fsync() или не в нужные моменты.) Я не пишу свое собственное приложение, я спрашиваю, потому что я не знаю, все ли мои приложения работают правильно, и я хочу знать приблизительный срок для таких "опасных" записей. Причина для того, чтобы спросить, заключается в том, что мой графический драйвер регулярно вызывает панику в ядре, и я хочу знать, нужно ли мне беспокоиться о том, что запись данных занимает более 5 секунд.