Приложение вызывает fsync(), ядро говорит «записано», СУБД коммитит транзакцию клиенту — а через секунду пропадает питание, и после перезагрузки этой транзакции в данных нет. Формально всё было сделано правильно: и приложение, и файловая система, и ядро отработали по спецификации. Проблема в одном звене цепи, которое приложение вообще не видит, — в кеше записи самого диска или RAID-контроллера, который может подтвердить запись раньше, чем данные реально легли на энергонезависимый носитель.
Подробнее →