Гарантия согласованности файловой системы в отношении последовательной записи
Моя программа (только 1 процесс и 1 поток) последовательно записывает n последовательных фрагментов данных в файл на жестком диске (обычный тип жесткого диска), используя обычный старый системный вызов записи. Это как какой-то лог-файл только для добавления.
После сбоя системы (сбой питания, а не сбой жесткого диска) я прочитал и проверил, что чанки [i] (0
Безопасно ли для меня предположить, что все другие фрагменты также полностью записаны? Или существует (или много) фрагментов [j] (0
1 ответ
Да, записи, которые кажутся последовательными (для вас), могут быть переупорядочены перед записью на диск, главным образом потому, что порядок, видимый вашим кодом (или даже ОС), может не соответствовать непосредственно расположению на диске.
Хотя на IDE-дисках (когда-то) использовалась адресация, основанная на указании дорожки, заголовка и сектора, в которых будет храниться часть данных, они уже давно преобразованы в систему, в которой имеется только несколько секторов, и до диск, чтобы расположить их в порядке, который имеет смысл. Обычно он выполняет довольно хорошую работу, но в некоторых случаях (особенно, если сектор вышел из строя и был заменен запасным сектором), может иметь смысл писать сектора не по порядку.