Пора оставить RAID-5 в далеком прошлом
Для ЛЛ: RAID-5 совершенно не подходит для современных массивов из дисков на 5–10 Тб по нескольким причинам.
Вчера хорошие знакомые прислали ссылку на чат криптоаналитиков. Я очень удивился, поскольку криптовалюты от меня достаточно далеки, но — пошел, почитал. Оказывается, с одним человеком случилась беда, однако, по непонятным для меня причинам, он пошел жаловаться не в отдел технической поддержки согласно SLA, а в первый попавшийся чат.
Жалоба была интересная, цитата:
Вопрос MSA-шникам.
Есть MSA 2040 — голова и 3 полки.
Все разбито по разным пулам и отдано по FC 8 Gb.
Сдох диск в одной полке, отребилдился на GHS.
Все без замечаний, все ок, но на ряде томов — просадка по отдаче до 30 МВ\s, вне зависимости от пула.
Тома и распределены по разным дискам, но где-то задействованы диски из отребилдившейся полки и часть норм работает, а часть никак…
…
Началось после замены хромающего диска.
Групп по 5 на каждый пул. Группы в рэйд-5. В каждой группе штук по 8 дисков.
На каждом пуле по 5 vdg, каждая vdg из 8-ми дисков в 5-м рэйде.
Дальше дискуссия была не такая интересная, потому что главная проблема была понятна — это тот человек, который собрал R5, и пошел с проблемой в крипточат.
Почему RAID-5 на любых современных дисках — это плохо, хоть на SSD, хоть на механике.
Проблема 1, простая и понятная
Как все помнят, RAID-5 — это N дисков с данными и один диск с четностью (точнее, четность размазывается туда и сюда — RAID 5 consists of block-level striping with distributed parity.)
Как следствие, RAID-5 может пережить выход из строя 1 жесткого диска без потери данных.
Проблемы с R5 начинаются не при выходе из строя жесткого диска, а при ребилде.
Проблема номер 1
На любом современном контроллере все жесткие диски постоянно (или по расписанию) проходят фоновое обслуживание, scrubbing — то есть контроллер как-то проактивно пытается понять, умерли ли блоки на жестком диске, или нет. Однако, пытаться то он пытается, но не гарантирует.
И вот у нас 9 жестких дисков, пусть даже сконфигурированных по документации, со всей ее силой «the power of 2» , а не как у страдальца, цитата:
For optimal write sequential performance, parity-based disk groups (RAID 5 and RAID 6) should be created with «the power of 2» method. This method means that the number of data drives (nonparity) contained in a disk group should be a power of 2. See Table 2 for details. MAN page 18
и весь занятый объем этих дисков (или весь объем ?, я так и не изучил этот вопрос) начинает считываться со всех дисков, все и сразу.
Диски, зачастую, идут из одной партии, имеют одинаковый уровень наработки, в часах и … и ваши шансы на то, что фоновая проверка не успела найти еще хотя бы один диск, с количеством плохих секторов больше предела SMART, резко возрастают. При этом у вас еще и резко возрастает нагрузка на чтение, поскольку рабочих операций никто не отменял, так что диски чуть больше двигают головками, чуть иначе вибрируют, чуть больше греются, и.
И вы не можете потерять еще один диск, но вы его теряете.
Raid 6 в таких случаях, кстати, не всегда помогает — падает и R6, только реже, а почему — будет написано ниже.
Это было не так критично, пока диски были 72–146–300–600 Гб и на 10–15 к оборотов, они зачастую успевали пройти ребилд на R5, но на 5–10 Тб диске 7200 — у вас будут неприятности, потому что:
Проблема вторая, математика и статистика
Поскольку дело связано с простой математикой, то ей в той или иной степени подвержена и механика, и SSD.
Давно (с 1973) существовала Shugart Associates, от которой осталось очень мало — она представила Shugart Associates System Interface, из которого к 1981 году вырос SCSI — Small Computer System Interface. Вся история нам не очень интересна, но все эти годы American National Standards Institute (ANSI) и InterNational Committee on Information Technology Standards (INCITS, pronounced «insights») боролись за звание дома высокой культуры быта и низкое число ошибок передачи данных — все эти CRC, Data Integrity и прочие достижения Technical Committee T10 вплоть до T10 DIF/DIX, но это другая история, а этот абзац здесть только чтобы похвастаться, что такая продвинутая нейросеть как я, может писать не только про самолеты и орбиты (с сахаром и без). СР!
Существует такое явление, как Unrecoverable read error rate, и его частота находится где-то в районе 1/100.000.000.000.000 — 1/100.000.000.000.000.000, или, более понятным языком, где-то между 1/10^-14 для обычных пользовательских дисков (typical consumer grade hard drive) до 1/10^-17 (Consumer SSD error rates are 10^16 bits or an error every 1.25PB. Enterprise SSD error rates are 10^17 bits ) — что означает, что для обычного диска (с его 1/10^-14) в 1 Тб — 1.000.000.000.000 байт (завели моду указывать не честные терабайты, а я страдаю) вероятность отказа на ребилде R5 при 9 дисках в массиве составит 47%. Для R6 при тех же вводных — 20%. 20% отказов, 80% успеха. Хороший повод собирать массивы из дисков поменьше.
Формула расчета тут, калькуляторы тут и тут.
Кстати, 1 из 10 массивов R6 из дисков с URE (Unrecoverable Read Error) с хорошим 1×10**(-15) на 10 дисков по 5 Тб тоже развалится, имейте в виду.
Для кассет (LTO) текущий показатель — 10^19, про что можно читать lto.org.
Очень важно внимательно читать раздел со звездочкой, там где пишут про запыление, температуру и влажность.
Про эту самую надежность (UER) уже писали на Хабре минимум 15 лет назад, в 2009 году, в комментариях, но все равно — пришло 15 лет, а кто-то собирает R5.
Не надо так.