Назад | Перейти на главную страницу

Устойчивость Linux MD RAID в ситуациях с непредсказуемой мощностью

Если бы вам представилась ситуация, когда вы ДОЛЖЕН используйте RAID по причинам, не зависящим от вас, и сервер с RAID может не работать от батареи и здание склонно к отключению питания, что вы можете сделать, чтобы сделать RAID более устойчивым в ситуациях, когда питание прекращается немедленно? Эта ситуация кажется надуманной, но на самом деле это ситуация, в которой я сейчас нахожусь по причинам, в которые я не могу войти.

Будет ли какая-либо конкретная спецификация RAID, поддерживаемая программным RAID Linux, более устойчивой к потере мощности, чем любая другая спецификация RAID, или существуют ли какие-либо параметры конфигурации RAID, которые могут быть здесь полезны?

Например, RAID 10 более / менее склонен к тому, чтобы не возвращаться после потери мощности, чем, скажем, конфигурация RAID на основе четности, такая как RAID5 или RAID6. Кроме того, существуют ли какие-либо настройки конфигурации RAID, которые пытаются справиться с реальностью отсутствия хорошего аппаратного RAID BBU для записи в кэш?

Есть несколько вещей, которые вы можете сделать, чтобы помочь, которые охватили TomTom и Barlomiej. Но это все равно плохая идея. Настоящее решение состоит в том, что чьи-то требования нужно изменить. Итак, я собираюсь назвать вам несколько причин, по которым это плохая идея, и вы можете поделиться ими с тем, кто считает эти требования приемлемыми.

Если отложить на время RAID в сторону, неожиданное отключение питания от сервера в конечном итоге вызовет проблемы:

  • Если потеря мощности является обычным явлением в здании, также может быть нестабильное питание - отключение питания и перенапряжение могут серьезно сказаться на оборудовании и значительно сократить срок его службы.
  • Вы потеряете все, над чем работали, когда сервер выйдет из строя. Даже если с самой файловой системой все в порядке, что произойдет с файлами, которые были сохранены на полпути после отключения питания? В некоторых случаях вы не только теряете работу, которую только что сохранили, но и весь файл поврежден и теряет всю работу до него.
  • В конце концов, ваша файловая система будет повреждена. Современные файловые системы обычно справляются с этим довольно хорошо, хотя вы можете потратить дополнительное время на проверку файловых систем, когда снова появится питание. На больших дисках это может занять несколько часов. Иногда дни. Даже если пользователи этого сервера могут терпеть его перезагрузку при отключении питания, они вряд ли потерпят его отключение в течение дополнительных 4 часов после восстановления питания.
  • Даже при отключенном кэшировании записи вы все равно потеряете некоторые данные. Это значительно снижает риск, но не позволяет избежать его полностью.
  • Однажды ваша файловая система будет повреждена, и fsck ее не исправит. Тогда вы сможете восстановить из резервных копий. Затем вы понимаете, что резервные копии повреждены из-за тех же проблем с питанием.

Теперь добавим RAID:

  • Добавление еще одного уровня хранения, где данные могут быть повреждены - в файловой системе, RAID и самих дисках.
  • Итак, один из ваших дисков повреждается при отключении питания. Нет проблем. Вот для чего нужен RAID. Закидываем в сервер новый диск и он начинает перестроение. Восстановление большинства систем занимает часы или дни. Пока он занят восстановлением, производительность ужасная, но, по крайней мере, система все еще работает. Затем питание снова отключается. В зависимости от RAID он может начать повторную синхронизацию или может начаться с того места, где остановился. Но в худшем случае потеря мощности приводит к отказу второго диска. Или третий. И теперь RAID-массив не подлежит восстановлению.

ИБП существуют не зря. Вам не нужен изысканный ИБП размером с серверную стойку. Если вам нужно, вы, вероятно, можете обойтись более дорогим потребительским ИБП примерно за 100-200 долларов. Все, что вам действительно нужно, - это проработать достаточно долго, чтобы правильно отключить сервер. Подключите USB-кабель, настройте программное обеспечение ИБП и настройте его так, чтобы компьютер начинал выключаться после 10 секунд отключения питания. Теперь он остается включенным во время небольших перебоев в подаче электроэнергии на полсекунды (и ИБП следит за тем, чтобы сервер не видел каких-либо ужасных условий питания, которые обычно сопровождают такие события). А во время более длительного он выключается красиво и аккуратно, данные не теряются, не работает 20-часовая смена, пытаясь восстановить сервер.

Если вы предоставите нам больше информации о том, почему существуют эти требования, мы сможем дать вам больше идей о том, как работать в соответствии с духом требований, и предложить приемлемое решение. Но, как говорится сейчас, все, что я могу сказать, это: Получите ИБП.

Однако я не могу вспомнить какие-либо конкретные параметры md raid:

Отключить кеш записи на диск

hdparm
 -W   get/set drive write-caching flag (0/1)

смонтировать все разделы с параметрами синхронизации / dirsync

от человека Mount:

dirsync  
All directory updates within the file system should be done synchronously.  This affects the   following sys-tem calls: creat, link, unlink, symlink, mkdir, rmdir, mknod and rename.

sync  
All I/O to the file system should be done synchronously. In case of media  with  limited  number   of  write cycles (e.g. some flash drives) "sync" may cause life-cycle shortening.

... и, возможно, после отключения питания он будет синхронизирован.

Начните с использования SSD с кешем записи - и купите его с конденсаторами, чтобы справиться с потерей мощности.

В противном случае убедитесь, что вы отключили любые подсказки по производительности. Никакого кэширования с обратной записью где-либо в стеке (включая аппаратный уровень).

И это все. Не уверен, что в Linux есть файловая система, оптимизированная для этого.