Почему RAID-5 — «mustdie»?

:

В последнее время в мировой компьютерной прессе стало появляться довольно много статей на тему: «Почему RAID-5 это плохо» (пример раз, два, и другие)

Постараюсь, без ныряния в инженерные и терминологические дебри объяснить, почему до сих пор RAID-5 вроде работал, а теперь вдруг перестал.

Емкость жестких дисков за последние несколько лет растет без особых тенденций к остановке. Однако, хотя емкость дисков чуть ли не удваивается каждый год, прирост их быстродействия, то есть скорости передачи данных, за тот же срок увеличивается всего в проценты. Да, действительно, на дисках появляются интерфейсы SATA, SATA-II, и ждем уже SATA-III, но стали ли диски быстрее работать, а не просто получили новый интерфейс с бубенчиками и новыми круглыми цифрами теоретических показателей вида " цифра максимальной скорости на спидометре «Запорожца»?

Практика говорит нам, что — нет.
Если мы сравним быстродействие, в особенности на небольших случайных операциях, для массовых дисков SATA за несколько лет, то мы увидим, что заметного, сравнимого с ростами объемов, прироста производительности нет.
Емкость — растет в разы, а скорость работы — нет.

Когда RAID-5 появился, в 1987 году, типичный жесткий диск был размером 21MB, и имел скорость вращения 3600 RPM. Сегодня типичный диск SATA это 1TB, то есть прирост емкости составил 50 тысяч раз! Но скорость вращения при этом увеличилась всего вдвое.
Если бы скорость передачи данных за эти годы росла бы такими же темпами что и емкость, то сегодняшние диски имели бы показатели передачи данных в районе 30 гигабайт в секунду.

Теперь вспомним о том, что такое есть RAID, и его реализация — RAID-5.
RAID, или Redundant Array of Independent Disks, это модель организации группы дисков в отказоустойчивую структуру таким образом, чтобы она сохранял доступность информации даже в случае повреждения или полного выхода из строя части из этих дисков.
Среди множества описанных «в теории» типов RAID, в живой природе встречаются в основном три. Это RAID-0 (или «группа с чередованием» который «RAID» на самом деле только условно, так как отказоустойчивостью не обладает, о чем и говорит цифра 0), RAID-5, или «группа с чередованием и четностью», и RAID-1, или «зеркало». В чистом виде RAID-1 практически не используется из за ограничений по скорости, поэтому в высокопроизводительных массивах используется его комбинация с RAID-0. В результате этого альянса RAID-0 получает отказоустойчивость, а RAID-1 — быстродействие. Как правило, такая комбинация называется RAID-0+1 или RAID-10, или «чередование с зеркалированием».

RAID-10 хорош многим. Да почти всем. И надежностью, и быстродействием, за исключением того, что на его создание уходит 50% всей емкости дисков, половина. Довольно таки «бандитский процент».
Именно такой, довольно жестокий, процент часто заставляет пользователей серверов и систем хранения выбирать как альтернативу RAID-5.

Действительно, в RAID-5 мы платим за отказоустойчивость емкостью всего одного диска, то есть емкость RAID-5 равна (n-1)*hddsize, где n — число дисков, а hddsize — их размер.
Данные «размазаны» по всем входящим в RAID-группу дискам, их блоки дополнены служебной информацией, которая дает возможность восстановить потерю данных в размере любого одного диска, причем сама эта служебная информация не занимает какой-то выделенный диск, а просто часть объема этой группы, равную как раз емкость одного диска. Но она также размазана по всем дискам.

Когда происходит выход из строя (полный или частичный) одного из дисков группы типа RAID-5, то RAID-группа переходит в состояние degraded, но наши данные остаются доступными, так как недостающая часть их может быть восстановлена за счет избыточной информации того самого «дополнительного объема, размером в один диск». Правда обычно быстродействие дисковой группы резко падает, так как при чтении и записи выполняются дополнительные операции вычислений избыточности и восстановления целостности данных. Если мы вставим вместо вышедшего из строя новый диск, то умный RAID-контроллер начнет процедуру rebuild, «перестроения», для чего начнет считывать со всех дисков оставшиеся данные, и, на основании избыточной информации, заполнит новый, ранее пустой диск недостающей, пропавшей вместе со сдохшим диском частью.

Если вы еще не сталкивались с процессом ребилда RAID-5, вы, возможно, будете неприятно поражены тем, насколько длительным этот процесс может быть. Длительность эта зависит от многих факторов, и, кроме количества дисков в RAID-группе, и их заполненностью, что очевидно, в значительной степени зависит от мощности процессора RAID-контроллера и производительности диска на чтение/запись. А также от рабочей нагрузки на дисковый массив во время проведения ребилда, и от приоритета процесса ребилда по сравнению с приоритетом рабочей нагрузки.
Если вам не посчастливилось потерять диск в разгар рабочего дня или рабочей недели, то процесс ребилда, и так небыстрый, может удлинниться в десятки раз.
А с выходом все более и более емких дисков, уровни быстродействия которых, как мы помним, почти не растут, в сравнении с емкостью, время ребилда растет угрожающими темпами, ведь, как уже писалось выше, скорость считывания с дисков, от которой напрямую зависит скорость прохождения ребилда, растет гораздо медленнее, чем емкость дисков и объем, который нужно считать.

Так, в интернете легко можно найти истории, когда сравнительно небольшой 4-6 дисковый RAID-5 из 500GB дисков восстанавливал данные на новый диск в течении суток, и более.


Источник: Adaptec

«a RAID 5 array with five 500 GB SATA drives took approximately 24 hours to rebuild» Источник:
«The testing used a 3.5TB array composed of 16 250GB SATA disks configured as RAID 5… 3ware took… over a day to repair a RAID 5 array when under a file server workload.» Источник:
«I'm now at 80% of rebuilding my RAID-5 array with 3x 1TB harddrives, I've calculated that the total time needed to rebuild the array will be 66 hours!» Источник:
«On my filer I run a software raid 5 across eight 500 GB sata drives, which works great… Recovery time is about 20 hours. Athlon X2 4200+ and nvidia chipset.» Источник:

С использованием же терабайтных и двухтерабайтных дисков приведенные цифры можно смело умножать в 2-4 раза!

И вот тут начинаются страсти.
Дело в том, и это надо себе трезво уяснить, что на время ребилда RAID-5 вы остаетесь не просто с RAID лишенным отказоустойчивости. Вы получаете на все время ребилда RAID-0, надежность и отказоустойчивость которого меньше надежности и отказоустойчивости одного диска в n раз, где n — это количество дисков в группе.
(решил удалить откровенно спорные положения статьи :) С удовольствием приму помощь от компетентного математика-«вероятниста» в правильном вычислении показателей надежности, впрочем основного посыла в ненадежности RAID-0 это не изменяет)
В случае любого отказа, даже самого маленького, даже, быть может, не отказа диска целиком, а просто сбоя чтения из за помехи, или проблем с кабелями, вы теряете всю на нем информацию.

Допустим.
Но нынешние диски выглядят достаточно надежными, не так ли? Уж поди сутки ребилда они протянут без сбоев, не все так плохо, и не настолько же мы неудачники, чтобы у нас на руках дохли два подряд диска. Такое бывает, но может пронесет?

Вот что говорят о надежности дисков материалы самих вендоров.
(Сводная таблица по основным сериям дисков)

В настоящее время практически все производители выпускают жесткие диски двух основных классов.
Это так называемые Desktop-диски, для настольных систем, и диски Enterprise, предназначенные для серверов и прочих критичных случаев. Кроме того, диски класса Enterprise также делятся на диски SATA (скорость оборотов 7200RPM) и SAS или FC (со скоростями вращения 10K и 15K RPM).

Надежность процесса передачи данных принято измерять параметром BER — Bit Error Rate(Ratio). Это вероятность сбоя, из расчета некоего объема прочитанных головками диска бит.
Как правило, диски Desktop-class имеют указанную производителем величину BER равную 10^14 степени, постепенно для все больших дисков, в особенности новых серий, указывают величины надежности в 10^15. Это число означает, что производитель прогнозирует вероятность сбоя при чтении не хуже, чем одного сбойного бита на 10^14 степени прочитанных диском бит. Единица с 14 нулями. Сто тысяч миллиардов бит.
Цифра огромная, казалось бы. Но так ли велика она на самом деле?

Несложная математика уровня calc.exe говорит нам, что 10^14 бит это всего лишь около 11TB данных. Это означает, что производитель жестких дисков говорит нам таким образом, что считав с диска с параметром BER 10^14, то есть обычного, десктопного класса диска, примерно 11TB, мы, с точки зрения производителя, наверняка получим где-нибудь сбойный бит. По крайней мере он, производитель, на это у себя рассчитывает.
Сбойный бит чтения означает сбойный блок, размером 512 байт, на который он пришелся. И пошло-поехало.
11 терабайт это же уже и не так много?

И это не означает, что надо прочитать ровно 11TB, BER это только вероятность, которая стремится к 100% к 11-му терабайту. На меньших объемах она просто пропорционально уменьшается.
Да, диски с BER равным 10^15 имеют вероятность ошибки в 10 раз лучше (110TB считанного на один сбойный бит), но и это только временное улучшение. Как мы помним, емкость дисков удваивается с каждым новым поколением, то есть примерно каждые полтора-два года, растут и емкости RAID, а BER10^15 для SATA достигнут только в последний год-полтора.

Так, например, для 6-дискового RAID-5 с дисками 1TB величина отказа по причине BER оценивается в 4-5%, а для 4TB дисков она же будет достигать уже 16-20%.


Источник: Hitachi Data Systems: Why growing business need RAID-6.
Эта холодная цифра означает, что с 16-20-процентной вероятностью вы получите отказ диска во время ребилда (и, следовательно, потеряете все данные на RAID). Ведь для ребилда, как правило, RAID-контроллеру придется прочитать все диски, входящие в RAID-группу, для 6 дисков по 1TB объем прочитанного RAID-контроллером потока данных с дисков достигает 6TB, для 4TB он уже станет равным 24TB.
24TB это, при BER 10^15, четверть от 110TB.

Но даже и это еще не все.
Как показывает практика, примерно 70-80% данных, хранимых на дисках, это так называемые cold data. Это файлы, доступ к которым сравнительно редок. С увеличением емкости дисков их объем в абсолютном исчислении также растет. Огромный объем данных лежит, зачастую, нетронутый никем, даже антивирусом (зачем ему проверять гигабайтные рипы и mp3?), месяцами, а возможно и годами.
Ошибка данных, пришедшаяся на массив cold data обнаружится только лишь в процессе полного чтения содержимого диска, на процесс ребилда.
Большие и «умные» системы хранения обычно постоянно занимаются в секунды простоя так называемым disk scrubbing-ом, постоянно считывая и контролируя характеристики чтения для всего объема дисков. Но уверен, что ваш недорогой «домашний» RAID-контроллер этого не делает.
Следовательно, вы узнаете о появившемся неделю назад bad block где-то в пространстве cold data в тот момент, когда скрестив пальцы будете с замиранием следить за прогресс-баром процесса ребилда.

Вот какая неприятная правда скрывается за несколько скандальными статьями о «смерти RAID-5».
Возможно, что для архива порнухи домашней видеоколлекции потеря ее в считанные секунды и не будет такой уж большой катастрофой, особенно если вы хорошо владеете собой. Но уж точно пришла пора отказаться от RAID-5 на чуть более критичных задачах, чем «домашнее хранилище BD-рипов накачаных из торрента».

Выводы (для тех, кто ниасилил):

  1. Резкий рост объемов дисков, при гораздо более медленном приросте скоростей передачи данных с диска привел к тому, что время восстановления RAID-5 катастрофически удлиннилось и продолжает расти с выходом все более емких дисков. Как следствие, неприемлимо увеличивается период времени, когда данные остаются полностью незащищеными.
  2. Отсутствие средств контроля областей cold data (редко обновляемых и считываемых данных) в недорогих контроллерах RAID-5 может привести к обнаружению давно возникшей проблемы считывания в критический момент ребилда RAID, когда он полностью незащищен от сбоев, и приведет в полной потере данных.
  3. Повышенная нагрузка на диски в период восстановления потенциально еще повышает вероятность сбоя.
  4. Современные диски Desktop-class уже приблизились по объемам к показателям определяемого их изготовителями параметра BER (Bit Error Rate), что еще более повышает вероятность сбоя в ходе массированного считывания всего объема диска.

Все перечисленное доказывает необходимость отказа от использования RAID-5 в качестве отказоустойчивого решения для хранения важных и критичных данных.

Решение:

  1. Для данных, скорость доступа (и в особенности записи) к которым не так важна — RAID-6. Тип RAID устойчивый к сбою двух дисков. При выходе из строя одного диска, защищающий на время ребилда, от случайных ошибок чтения при восстановлении. Недостаток — относительно невысокая скорость на запись.
  2. Для данных, к которым требуется максимально быстрый доступ как на запись, так и на чтение — RAID-10. При использовании RAID-10 время ребилда резко сокращается, так как не требуется чтения полного объема RAID, а только копирование содержимого «зеркального» к вышедшему из строя диска. Недостатки — большой расход дисков на обеспечение отказоустойчивости.
  3. По возможности не экономить, используя для хранения критичной информации не предназначенные для работе в RAID диски Desktop-class, а использовать специальные серверные Enterprise-серии, надежность чтения которых на один-два порядка выше.