Я разрабатываю систему, которая копирует и записывает файлы в NTFS внутри виртуальной машины. В любой момент ВМ может отключиться (прямое отключение). Отключение питания контролируется извне, поэтому у меня нет возможности его обнаружить. Из-за этого файлы и полные каталоги, которые записываются, теряются. Есть ли способ предотвратить это или мне нужно разработать свою собственную файловую систему? Я должен хранить файлы на локальном диске и не могу отправлять файлы по сети.
Файловая система с защитой от коррупции
Ответы (2)
Всегда существует [короткий] период между записью ваших данных (отправкой в API) и моментом записи этих данных на физическое оборудование. Если система выйдет из строя посередине, данные будут потеряны.
В Windows есть настройка для отключения системного кеша записи для определенных дисков. Этот параметр может помочь вам убедиться, что данные, по крайней мере, отправляются на оборудование хоста. Вероятно, это тот ответ, который вы искали.
Написание собственной файловой системы не сильно поможет, потому что в основном кеш записи приводит к потере данных. Однако может существовать и кеш на уровне файловой системы, и я не знаю, влияет ли настройка кеша записи, о которой я упоминал выше, на внутренний кеш файловой системы.
Если вы записываете данные в файл, открытый с включенной сквозной записью, метод возвращается только после того, как данные физически записаны на диск, поэтому вы можете быть уверены, что они были записаны. Обычно вы делаете это, передавая флаг WRITE_THROUGH при открытии файла.