Comments 7
У вас "немного странные" представления о работе ФС, потому как сценарий "При попытке записи буфера в файл, вставляется заполненный нулями буфер такого же размера" является невозможным.
Видимо, вы разбираетесь в теме? Можете написать, какие сценарии бывают, какие являются наиболее вероятными, а какие менее?
Есть несколько сценариев базовых интересных:
При записи произошла ошибка но часть данных записалась а часть нет (усложненный кейс - вторая половина данных записалась а первая нет)
При сбросе буферов (при синке) произошла ошибка и часть кэша синкнулась а часть нет (усложненный случай - данные записанные позже чиркнули б а записанные раньше нет, бросив ошибку синка)
Ошибки чтения неинтересны
Спасибо за фидбэк! Да я понимаю, забыл подчеркнуть, что пример игрушечный. К сожалению интересных результатов с более серьезными экспериментами пока не нашел, поэтому показал этот.
Вообще возможен. Бывают ситуации когда контроллер диска багнутый или просто начинает врать что сделал fsync, хотя данные не записались (а потом машина рестартует и все теряется). Ну и конечно диск может побиться и возвращать любой мусор.
По идее серьезные распределенные базы должны быть готовы к такому сценарию и, например, реплицировать данные из памяти, а не с диска
А прикольная статья, мне понравилась. Люблю всякие такие эксперименты, попробую поиграться дома. Спасибо!
Эмуляция сбоев ФС. Ломаем PostgreSQL