Отключение «Включить кэширование записи на устройстве» не оказывает никакого эффекта ни на SSD, ни на HDD.

Отключение «Включить кэширование записи на устройстве» не оказывает никакого эффекта ни на SSD, ни на HDD.

Мы тестируем, как поведет себя наша система (в настоящее время работающая на Windows 7 Embedded), если питание будет отключено без предупреждения. Наш ПК намеренно не работает от ИБП.

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

Когда мы снова включили питание, изменения в файле НЕ были сохранены.

При дальнейшем исследовании мы заметили, что на нашем твердотельном накопителе Crucial MX200 установлен флажок «Включить кэширование записи на устройстве».

Послеснятие отметкипри этой настройке мы повторили наши тесты, предположив, что данные, записываемые на диск, будут записываться немедленно, а не кэшироваться.

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

Обновление - мы протестировали это поведение с использованием 2 разных марок SSD и HDD, и поведение одинаковое. Похоже, что кэширование записи никогда не отключается...

Есть ли что-то еще, что мы упускаем?

решение1

Убедившись, что проблема не связана с какой-то конкретной маркой или типом накопителя, мы заподозрили, что проблема в поведении Windows, в нашем случае — Windows 7.

После дополнительных поисков мы нашли этот пост: Как часто Windows очищает кэш записи?

Что подтверждает, что полная очистка внутреннего файлового кэша Windows занимает 8 секунд.

Обходным путем было обновление нашего исходного кода, как указано здесь -https://jeffpar.github.io/kbarchive/kb/066/Q66052/.

При открытии наших файлов с помощью fopenмы включили специфичный для Microsoft параметр режима «c» в качестве последнего параметра и использовали его _flushall()непосредственно перед вызовом fclose().

Связанный контент