Файловая система с защитой от коррупции

Я разрабатываю систему, которая копирует и записывает файлы в NTFS внутри виртуальной машины. В любой момент ВМ может отключиться (прямое отключение). Отключение питания контролируется извне, поэтому у меня нет возможности его обнаружить. Из-за этого файлы и полные каталоги, которые записываются, теряются. Есть ли способ предотвратить это или мне нужно разработать свою собственную файловую систему? Я должен хранить файлы на локальном диске и не могу отправлять файлы по сети.


person joe-jeff    schedule 21.11.2015    source источник
comment
NTFS легко справляется с этим, она так устроена (но да, вы потеряете незаписанные данные). Хотя разработка собственной файловой системы - не совсем хорошая идея...   -  person Robert Goldwein    schedule 21.11.2015


Ответы (2)


Всегда существует [короткий] период между записью ваших данных (отправкой в ​​API) и моментом записи этих данных на физическое оборудование. Если система выйдет из строя посередине, данные будут потеряны.

В Windows есть настройка для отключения системного кеша записи для определенных дисков. Этот параметр может помочь вам убедиться, что данные, по крайней мере, отправляются на оборудование хоста. Вероятно, это тот ответ, который вы искали.

Написание собственной файловой системы не сильно поможет, потому что в основном кеш записи приводит к потере данных. Однако может существовать и кеш на уровне файловой системы, и я не знаю, влияет ли настройка кеша записи, о которой я упоминал выше, на внутренний кеш файловой системы.

person Eugene Mayevski 'Callback    schedule 21.11.2015

Если вы записываете данные в файл, открытый с включенной сквозной записью, метод возвращается только после того, как данные физически записаны на диск, поэтому вы можете быть уверены, что они были записаны. Обычно вы делаете это, передавая флаг WRITE_THROUGH при открытии файла.

person Mike Marynowski    schedule 06.02.2017