Raid-1 против btrfs или надежность показателей smart ssd


Чем промышленный ssd отличается от бытового? Скоростью непрерывной последовательной записи? Количеством гарантированных перезаписей ячеек? Все это обычно прямое следствие используемых в накопителе ячеек памяти и контроллера.
А еще отличия есть в том, насколько полноценно тестировалась работа внутренней микропрограммы контроллера внутри накопителя. Но и здесь бывают просчеты: например несколько лет назад у, казалось бы, промышленных накопителей HP встречалась потрясающая проблема: при эксплуатации более 32768 часов накопитель переставал работать, переполнялся внутренний счетчик внутри контроллера накопителя. При превентивном обновлении микропрограммы проблемы удавалось избежать, но это HP, они хотя бы выпустили обновление.

Что до обычных потребительских ssd, то никто не знает, что его может ожидать.
Сложно ожидать надежности от изделия нижнего ценового диапазона. Через мои руки (и даже через один из моих ПК) проходил в свое время удивительный smartbye: примерно раз в месяц-два то терялась таблица разделов, то часть данных превращалась в решето. При этом показатели smart рапортовали полное здоровье, тестирование запись-проверка в условиях стенда всего объема накопителя проходило успешно.

Буквально на днях из промышленной эксплуатации пришел новый кейс: по причинам логистических сложностей, на сервер был «временно» установлен накопитель ssd «для систем видеонаблюдения». Можно было бы предположить, что по меньшей мере на многократную перезапись накопитель должен быть рассчитан. Как и на непрерывную многопоточную запись.
Но жизнь показала несколько иное. Согласно показателям smart износ 6%, внутренний длинный тест проходит успешно. А данные при этом вдруг стали решетом. То есть присутствуют успешно считываемые файлы, фактически содержащие нули. Присутствуют файлы, при чтении которых накопитель выдает низкоуровневую ошибку чтения, буквально ata err. При этом, повторюсь, никакие показатели smart не изменяются, внутренний тест снова проходит, использованные резервные блоки высвечивают ноль.

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

Традиционно принятым решением является установка зеркальных raid массивов на критически важные данные. К сожалению, реальный опыт эксплуатации показывает что в этом решении имеется несколько серьезных просчетов:
— Как правило дисковые устройства приобретаются одновременно и одинаковой модели. Что означает, при очевидно одинаковом периоде и условиях эксплуатации, некоторую вероятность выхода из строя с крайне незначительным временным интервалом. Особенно данный момент стал актуален при появлении как раз твердотельных накопителей, для которых прямо существует предельный объем записанных данных до вероятного возникновения проблем. Для зеркальных же массивов объем записанных данных очевидно одинаков для всех накопителей составляющих массив.
— При использовании любых, каких бы ни сложных аппаратных контроллеров raid массивов, неизменным остается факт определения сбойного состояния диска на основании полученных от него служебных данных или непосредственно ошибки чтения в ответ на запрос получения данных. То есть если из-за сбоя внутренней прошивки, дисковое устройство продолжает сообщать о своем полном здоровье и в ответ на запросы присылать данные, то на уровне контроллера массива не существует механизма узнать корректность полученных от диска данных. В меньшей степени, но примерно аналогично, обстоит дело с корректностью данных при записи на диск. Если два диска зеркального массива сообщили об успешной записи данных, это не означает что при следующем чтении с одного из них данные окажутся теми, что были записаны. Повторюсь, речь идет только о ситуации, когда происходит некий специфичный сбой внутренней прошивки диска. Это конечно очень редкий случай: дисковое устройство в ответ на операцию записи показывает успех, но фактически затем в ячейки памяти из внутреннего кэша накопителя записывается случайный мусор.

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

В качестве альтернативного способа контроля целостности данных возможно использование зеркалирования данных на уровне файловой системы btrfs.
— Данное решение не исключает потенциальную проблему синхронного износа ячеек памяти дисковых накопителей, это необходимо помнить. Точно также не исключается синхронное возникновение сбоев во внутренней прошивке, т.к. вполне возможно подобные сбои как-либо зависят от внешних факторов, которые, очевидно, для двух синхронно используемых накопителей одинаковы.
— При записи данных на оба накопителя одновременно с данными записывается их контрольная сумма. При последующей операции чтения, если прочитанные данные не соответствуют своей контрольной сумме, происходит чтение данных со второго накопителя и в случае совпадения контрольной суммы также производится перезапись «некорректной» порции данных на первом накопителе. Очевидно что в случае некорректной работы накопителя последнее бессмысленно, но тем не менее сами данные в любом случае уже успешно прочитаны.
— Использование подобных файловых систем позволяет, кроме прочего, использовать сжатие данных при записи на накопитель. Таким образом уменьшается износ ячеек памяти, а в частных случаях даже повышается производительность операций записи. Тем не менее выгода от использования данной функции не столь очевидна, т.к. сжатие напрямую зависит от типа и структуры данных и одновременно с этим контроллер внутри накопителя данных также на большинстве моделей производит попытку применения сжатия, хоть и не столь эффективного, к данным перед перед их записью в ячейки памяти.
— Использование файловой системы btrfs в режиме зеркалирования данных на основном загрузочном диске имеет неприятную особенность. В случае отказа, с сообщением данного статуса или с физическим отключением, одного из дисковых накопителей загрузка системы становится в общем случае невозможна без вмешательства специалиста. Данная особенность отчасти нивелируется при возможности удаленного доступа к консоли системы используя iLo или иную встроенную в материнскую плату ПК технологию BMC. Невозможность загрузки возможно программно исключить, но в этом случае вероятен инцидент несвоевременной реакции на аварийные изменения аппаратного обеспечения.
— Ранее существовала проблема с запуском файловой системы после отключения одного из накопителей. Успешный запуск без последствий возможен был не более одного раза. Данная ошибка логики работы файловой системы на данный момент устранена, тем не менее необходимо осознавать потенциальную проблему при независимой записи на разные накопители при их возможном по очередном отключении в процессе работ аварийного восстановления.


Ваш отзыв