22 апр. 2013 г.

Надежность жестких дисков: MTBF, AFR, UER. Почему не стоит использовать десктопные диски в аппаратных RAID'ах?

Мы живем в эпоху расцвета HDD: объемы достигли 4ТБ на диск (и это не предел), цены на большие (1-4ТБ, 7200 тыс. оборотов/мин) и быстрые (10/15 тыс. оборотов/мин) HDD снижаются, повсеместно используются SSD, растет производительность и наращивается функционал аппаратных RAID контроллеров, давно "повзрослели" решения на базе ZFS. Появилась проблема: массивы на несколько десятков терабайт стали доступны сравнительно небольшим организациям, но уровень знаний правил и рекомендаций по хранению данных остался невысоким. Ведет это к весьма плачевным последствиям - прямым начальным денежным потерям (результат самодеятельности в выборе оборудования) и дальнейшему ущербу от потери данных.
В данной статье мы рассмотрим несколько проблем и мифов, связанных с хранением данных. Мифов накопилось предостаточно и они продолжают жить, несмотря на огромное количество трагичных историй:

Миф №1.

Самый радикальный: "RAID вообще не нужен (как вариант - можно использовать RAID-0 + бэкапы). Современные диски достаточно надежны, у меня дома все работает годами".
Встречается, в основном, у начинающих неопытных IT-специалистов. Причина существования данного мифа проста - непонимание того, что такое информация вообще, и какое отношение имеет RAID к защите целостности информации. Дело в том, что RAID защищает не только от полной потери диска. Окончательный выход диска из строя - это лишь конечная точка его непростого существования, и до момента потери информации на всем диске мы можем терять небольшие фрагменты по мере появления сбойных секторов. Для бытового применения потеря (или искажение) участка в 512 байт обычно не является большой проблемой. Дома большую часть дискового пространства занимают мультимедийные файлы: изображения, звук и видео, так что потеря ничтожно малого фрагмента никак не отражается на воспринимаемом качестве, например, видео-файла. Для хранения структурированной информации (например, базы данных) любое искажение является недопустимым и появление любого "бэда" (нечитаемого сбойного сектора) означает полную потерю файла или тома. Статистическую вероятность наступления такого события мы рассмотрим позже.
Вывод: пользовательские данные нельзя хранить на одиночных дисках или в массивах, не обеспечивающих избыточности.

Миф №2.

"RAID = бэкап. Я потратил на контроллер целых $600! Но данные при этом защитил, можно спать спокойно, бэкапы не нужны".
Потерять данные с избыточного массива не просто, а очень просто. Можно начать с простого человеческого фактора, который в статистике, регулярно собираемой разными агентствами, занимает львиную долю всех случаев потерь данных. Достаточно администратору СУБД снести пару таблиц в базе или какому-нибудь пользователю удалить несколько файлов на ресурсе с неправильно настроенными правами доступа. При работе с контроллером или СХД можно ошибочно удалить нужный том. Причиной катастрофы может послужить незащищенный кэш контроллера (включен write-back, батарейки нет или она неисправна, выходит из строя блок питания или PDU - и несколько десятков или сотен мегабайт не попавших на диски данных улетают в трубу).
Резервное копирование нужно всегда. Отсутствие бэкапов - преступление.

Миф №3.

"Наступил цифровой коммунизм. Я могу позволить себе сервер в одном из ваших корпусов Supermicro на 24 диска, соберу один большой RAID-5 или RAID-6 из недорогих домашних 3ТБ SATA дисков, 60-ти с лишним терабайт хватит надолго."
Знаете ли вы о том, что при определенном сочетании числа, объема и качества дисков в RAID-5 вы практически гарантированно потеряете свои данные во время ребилда? Детальному рассмотрению декларируемых показателей надежности жестких дисков будет посвящена оставшаяся часть этой статьи.

Миллион часов MTBF - много или мало?

Что означает величина MTBF (Mean time between failures)? Для жестких дисков встречаются значения от 600-700 тыс. часов до 2-х миллионов. Рассмотрим для примера диск WD Red c MTBF равным миллиону часов. Неужели производитель гарантирует работу диска в течение 1000000/8760 = 114 лет и можно ни о чем не беспокоиться?
Вовсе нет. Значение MTBF (в случае HDD правильнее было бы использовать MTTF - mean time to failure) нельзя применить к одиночному изделию, это статистический показатель. Вот что пишет по этому поводу Hitachi:
MTBF target is based on a sample population and is estimated by statistical measurements and acceleration algorithms under median operating conditions. MTBF ratings are not intended to predict an individual drive’s reliability. MTBF does not constitute a warranty.
Это означает, что не один диск отработает 114 лет, а в партии из 114-ти дисков за 1 год можно ожидать выхода из строя одного диска. На практике, конечно, удобнее оперировать значением не MTBF, а AFR (annual failure rate - годовая интенсивность отказов). Упрощенная формула (если не принимать в расчет специфику распределения интенсивности отказов) выглядит так:
AFR=1/(MTBF/8760)
Т.е. для того же WD Red получаем величину AFR порядка 0,88%, причем она будет справедлива лишь в небольшой области на графике вероятности отказов. После 2-3-х лет работы в штатном для этого класса HDD режиме AFR будет нелинейно расти. А что будет, если режим отличается от штатного (например, при превышении температуры, уровня вибраций или круглосуточной эксплуатации бытовых дисков Seagate, для которых производитель рекомендует режим работы 8x5), и что вообще происходит в действительности? Ведь все это теоретические выкладки, может быть, рассказы о том, что "вот у меня дома старый Макстор работает почти десять лет без единого бэда" можно экстраполировать? Вот график из знаменитого отчета Google:
Он иллюстрирует статистику годовых отказов жестких дисков. Резкий рост значения AFR после одного года работы связан с тем, что Google использовал бытовые диски в режиме 24x7 (это была первая половина 2000-х, nearline класса еще не существовало). Итог: почти два процента в первый год, далее - рост до восьми с лишним процентов, что является результатом повышенной нагрузки. Кстати, вот распределение AFR в зависимости от нагруженности дисков:
Как видно из графика, тяжелые режимы работы резко увеличивают AFR, особенно в первые месяцы эксплуатации, когда высокая нагрузка помогает выявить диски со скрытыми производственными дефектами, и после четырех лет, когда нагрузка добивает изношенные диски.
Обратите внимание на спецификацию современных бытовых дисков Seagate: MTBF 700000 часов, при этом указан параметр Power-On Hours (POH) 2400 часов в год, что примерно соответствует режиму работы 8x5. Т.е. производитель обещает соответствие MTBF заявленному только при соблюдении данного режима работы. Хотите круглосуточной эксплуатации десктопных Seagate? Получите AFR в 8% вместо 1,25%. В руководстве есть еще одно уточнение:
Average rate of <55TB/year. The MTBF specification for the drive assumes the I/O workload does not exceed the average annualized workload rate limit of 55TB/year.
Т.е. лимитируется еще и трафик, извольте читать/писать не больше 55ТБ в год. Не устраивает? Используйте диски nearline класса с MTBF от 1,2 млн часов и нелимитированным Power-On Hours.
Кстати, в целом статистика, предоставленная Google, соответствует классическому графику распределения отказов. Из-за характерной формы его еще называют bathtub curve:
В самом начале происходит большое число отказов изделий, имеющих скрытые производственные дефекты, т.н. "детская смертность". Затем частота отказов стабилизируется на период срока службы изделия, а потом начинает сказываться износ - отказы нелинейно растут.
Выводы:
Статистика - вещь упрямая. Не путайте MTBF и срок службы. Относитесь к дискам, как к расходным материалам, планируйте замену для отработавших под высокой нагрузкой в серверах по три-четыре года десктопных и nearline дисков. Вы вполне можете рассчитывать на AFR порядка 1% для nearline дисков, около 0,5% - для enterprise класса (10k/15k), разумеется, только в течение срока службы и при соблюдении всех условий эксплуатации. С десктопными дисками при высоких нагрузках гарантировать вообще ничего нельзя: температура, вибрация (в больших дисковых полках вибрация приобретает большое значение), повышенная нагрузка на блок головок сделают свое дело, и вы можете получить массовый падеж дисков уже после года работы.
Можно ли вообще использовать бытовые диски в серверах, если это делал Google? Все дело в том, как именно использовать. Google - это облачные технологии. Применительно к хранению данных это означает использование распределенной файловой системы, в данном случае - GFS, Google File System. Аналогичную архитектуру имеет, например, Parallels Cloud Storage. Данные разбиваются на блоки (chunks) размером в несколько мегабайт, эти блоки реплицируются между нескольким серверами. Серверы метаданных хранят информацию о распределении блоков и контролируют процессы чтения и записи блоков. Такой подход решает одну из проблем, связанных с эксплуатацией бытовых дисков - сравнительно высокую вероятность появления невосстановимых ошибок чтения (unrecoverable error rate), что приводит к большим сложностям при работе в RAID-массивах.

Миф №4. От низкой надежности десктопных дисков спасет 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 недостаточно. Решающим критерием при выборе дисков должно быть наличие в списке совместимости от производителя контроллера:

Влияние вибрации на производительность дисков

И последний аргумент: десктопные диски не рассчитаны на высокий уровень вибраций. Механика не та. Причины появления вибрационных нагрузок просты: большое количество дисков в одном корпусе (у Supermicro появился вариант на 72 3,5" диска в 4U) и вентиляторы по 5-9 тыс. оборотов в минуту. Так вот, замеры Seagate показали, что при нагрузке около 21 рад/с2 десктопные диски испытывают очень большие сложности с позиционированием головок, теряют дорожку, производительность падает на 80 с лишним процентов.

Материалы