Примечание. Это дополнительный вопрос к Есть ли способ защитить SSD от повреждения из-за потери питания?. У меня там хорошая информация, но в основном она сосредоточена в трех областях: «получить ИБП», «получить диски получше» или как справиться с надежностью Postgres.
Но что я действительно хочу знать, так это то, что я могу сделать, чтобы защитить SSD от повреждения метаданных, особенно при старых записях. Подведем итоги проблемы. Это файловая система ext4 на SSD потребительского класса Kingston с включенным кешем записи, и мы наблюдаем следующие проблемы:
Проблема меньше в том, что эти вещи происходят с данными, которые записываются во время отключения диска или незадолго до этого. Это проблема, но она ожидаема, и я могу справиться с этим другими способами.
Еще большее удивление и проблема заключается в том, что на диске происходит повреждение метаданных в областях, в которые не производилась запись в последнее время (то есть за неделю или больше).
Я пытаюсь понять, как такое может происходить на уровне диска / контроллера. В чем дело? Периодически ли SSD "балансирует" и перемещает блоки, даже если я пишу где-то еще? Как это:
А затем происходит потеря мощности при перезаписи D. Могут остаться кусочки в блоке 1 и некоторые - в блоке 2. Но я не знаю, работает ли это так. Или, может быть, что-то еще происходит ..?
Таким образом, я хотел бы понять, как это может произойти, и могу ли я что-нибудь сделать, чтобы смягчить проблему на уровне ОС.
Примечание: «получить более качественные твердотельные накопители» или «использовать ИБП» здесь не являются верными ответами - мы пытаемся двигаться в этом направлении, но я должен жить с реальностью на местах и найти лучший результат с тем, что у нас есть сейчас. Если с этими дисками и без ИБП нет решения, то я думаю, это ответ.
Ссылки:
Является ли повреждение файловой системы на разделе ext3 SSD-диска "ожидаемым поведением" после внезапного отключения питания? Это похоже, но неясно, испытывал ли он те же проблемы, что и мы.
РЕДАКТИРОВАТЬ: Я также читал проблемы с ext4, которые могут иметь проблемы с потерей питания. Наши ведутся, но больше я ничего не знаю.
Предотвращение повреждения данных на диске ext4 / Linux при отключении питания
http://www.pointsoftware.ch/en/4-ext4-vs-ext3-filesystem-and-why-delayed-allocation-is-bad/
Лучше всего отключить кеширование записи на диск, указав диску не выполнять кэширование записи (посмотрите на параметры hdparm и smartctl и надейтесь, что диск их соблюдает) и чтобы ОС не записывала в буфер записи с такими параметрами монтирования, как синхронизация и dirsync .
Чтобы узнать, как может произойти повреждение метаданных после неожиданного сбоя питания, взгляните на мой другой ответ здесь.
Отключение кеширования может значительно снизить вероятность потери данных во время полета; однако, в зависимости от ваших твердотельных накопителей, неактивные данные могут быть повреждены. Более того, он командует массивный потеря производительности (я видел SSD с 500 МБ / с для записи со скоростью всего 5 МБ / с после отключения частного кеша DRAM).
Если вы не можете доверять своим твердотельным накопителям, единственное «решение» (или, скорее, обходной путь) - использовать сквозную файловую систему контрольного суммирования как ZFS или BTRFS. и Настройка RAID1 / зеркала: таким образом, любое возможное повреждение (мета) данных одного устройства может быть восстановлено с другой стороны зеркала, запустив проверку / очистку.