RAID как спасение от низкой надежности дисков

Если десктопные диски столь ненадежны, то стоит просто закупить их побольше, поставить в RAID, пусть выходят из строя по 2-3-10% в год, будем менять

Тут появляется еще одна проблема, связанная с качеством — UER (unrecoverable error rate). Означает вероятность появления невосстановимой ошибки чтения, по различным причинам: дефект поверхности, сбой в работе головки, контроллера и т.д. Для современных десктопных дисков значение UER составляет 1 x 10-14. Это означает, что при передаче 1 x 1014 бит вы с очень большой вероятностью прочитаете с диска вовсе не то, что туда записали. Дальше начинается занимательная математика, опубликованная в одном издокладов SNIA:

Диск объемом 500ГБ содержит 1/25 x 1014 бит. Допустим, у нас есть RAID-5 из шести таких десктопных дисков с UER равным 1 x 10-14. До определенного момента все работает хорошо, на дисках появляются и ремапятся сбойные сектора, к потере данных это не приводит, т.к. у нас RAID. И тут один из дисков выходит из строя. Меняем диск, начинается ребилд: c пяти дисков нужно считать страйпы и контрольные суммы, рассчитать и записать их на шестой диск.

Для пяти дисков вероятность получения невосстановимой ошибки чтения будет равна 1-(1-1/25)5=18.5%. 500ГБ по нынешним меркам — не очень много, в ходу диски по 1, 2, 3 и даже 4 терабайт. Для массива 8x1ГБ получаем 44.2%, а для «супер-большой-СХД-на-всю-жизнь» из 24-х десктопных дисков по 3ТБ получается шансов и вовсе не остается — 99.8%. Данную вероятность можно немного уменьшить, периодически запуская фоновую проверку целостности данных на массиве. Можно уменьшить ее значительно, на порядок, используя правильные диски nearline класса с UER = 1 x 10-15, но для больших массивов цифра получается все равно неприемлемой, ведь не учитывается вероятность полного выхода из строя второго диска во время ребилда, который при больших объемах и высокой нагрузке на массив может растянуться на несколько недель. Конечно, в реальности все будет не столь ужасно, так как значение UER производители HDD указывают с запасом, но основной смысл заключается в том, что при современных объемах мы не можем позволить себе оставлять массив в состоянии degrade, если данные не защищены дополнительными проверками целостности и/или механизмами распределенного хранения.

Вывод: при больших объемах современных дисков использовать RAID-5 нельзя. Даже для дисков enterprise класса (UER меньше еще на порядок — 1 x 10-16) вероятность получить ошибку чтения при ребилде массива из восьми 450ГБ дисков составляет около 0,3%. Их емкость тоже растет. Если относительно недавно диски на 10000 и 15000 об/мин были объемами в 36-146 ГБ, то сейчас это уже 900 и 1200 ГБ. Что делать?

Во-первых, для enterprise дисков — не создавать больших дисковых групп в RAID-5, использовать RAID-50.

Во-вторых, переходить на RAID-6 и 60 для enterprise и nearline дисков.

Как все-таки быть с десктопными дисками? Может быть, для них подойдет RAID-6?

Нет, RAID-6 их тоже не спасет, так как появляется следующая проблема — несовместимость с аппаратными RAID контроллерами, одной из причин которой является неконтролируемое время доступа при возникновении ошибок:

Time control (SCT ERC, TLER)
Для одиночного диска при появлении ошибки чтения стоит задача прочитать данные с этого сектора путем неоднократных попыток. Диск один, взять копию данных больше негде. Для диска в RAID массиве с избыточностью сбойный сектор никакой проблемы не представляет. Не читается сектор? Диску дается фиксированное время на несколько попыток чтения этого сектора. Время вышло, сектор тут же ремапится, данные восстанавливаются с других дисков. Если диск долго не отвечает, то контроллер считает его неисправным и выкидывает из массива, и на практике связка, например, из контроллера Adaptec и десктопных WD Green работает с регулярной потерей дисков и постоянными ребилдами, вплоть до полного развала массива.

За фиксированное время доступа отвечает технология SCT ERC. Посмотреть наличие ее поддержки и значения для чтения/записи можно при помощи smartctl:
smartctl -l scterc /dev/sdb
smartctl 6.1 2013-03-16 r3800 [x86_64-linux-3.8.7-1-ARCH] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org
SCT capabilities:       (0x303f) SCT Status supported.
                        SCT Error Recovery Control supported.
                        SCT Feature Control supported.
                        SCT Data Table supported.
      SCT Error Recovery Control:
      Read: Disabled
      Write: Disabled

При наличии поддержки можно задать тайминги:
smartctl -l scterc,70,70 /dev/sdb
smartctl 6.1 2013-03-16 r3800 [x86_64-linux-3.8.7-1-ARCH] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

SCT Error Recovery Control set to:
           Read:     70 (7.0 seconds)
          Write:     70 (7.0 seconds)

На самом деле, одной лишь поддержки SCT ERC недостаточно. Решающим критерием при выборе дисков должно быть наличие в списке совместимости от производителя контроллера.
Поделиться:

Похожие публикации

Тут ничего нет

Нет комментариев