блог/стенд RAID
Дисковые массивы · интерактивный разбор

Как RAID раскладывает данные
и что он переживает

Десять уровней на одной полке, ещё два исторических — в таблице. Выберите уровень слева, посмотрите, куда легли блоки, а потом нажмите на любой диск — он «умрёт», и станет видно, что массив вытянет, что восстановит по чётности, а что потеряет насовсем.

Блок — порция данных, попавшая на один дискСтрип — строка блоков поперёк массиваP, Q — контрольные суммы
RAID 0чередование

Файл режется на блоки, и соседние блоки уходят на разные диски. Читать и писать можно всеми шпинделями одновременно, поэтому скорость и объём складываются почти линейно. Надёжность при этом делится: отказ любого одного диска рвёт каждый файл массива, и восстанавливать нечем — избыточности здесь нет вообще.

Монтажные скретч-тома, кеши, промежуточные данные расчётов — всё, что можно пересоздать.

стрип Aстрип Bстрип Cстрип D
A1
B1
C1
D1
A2
B2
C2
D2
A3
B3
C3
D3
A4
B4
C4
D4
НормаВсе диски в строю, запросы обслуживаются штатно.
или нажмите на сам диск
данныекопиячётность Pчётность Qвосстановимопотеряно
Минимум дисков
2
два и больше
Полезная ёмкость
100 %
нет избыточности
Переживает отказ
ни одного
любой отказ фатален
Чтение
складывается со всех дисков
Запись
складывается со всех дисков
Арифметика избыточности

Чётность — это XOR, и больше ничего

Контрольная сумма стрипа в RAID 4, 5, 50 — побитовое «исключающее или» всех данных стрипа. У операции есть удобное свойство: она обратима. Зная любые три величины из четырёх, четвёртую можно вычислить. Переключайте биты, «теряйте» диск и восстанавливайте.

Диск A
Диск B
Диск C
P = A⊕B⊕C
00011100

Правило одно: сумма всех битов столбца по модулю два всегда равна нулю, если считать вместе с чётностью.

A ⊕ B ⊕ C ⊕ P = 0
B = A ⊕ C ⊕ P

Отсюда и цена: чтобы изменить один блок, контроллер обязан прочитать старые данные и старую чётность, вычислить новую и записать оба блока. Четыре операции вместо одной — это и есть «штраф записи» RAID 5.

Вторая сумма Q в RAID 6 считается уже не XOR, а кодом Рида — Соломона в поле Галуа: два независимых уравнения позволяют решить систему с двумя неизвестными, то есть восстановить сразу два диска.

Одним взглядом

Сводная таблица уровней

Серым — уровни, которые сегодня встречаются только в учебниках и в старом железе.

УровеньМин. дисковПолезная ёмкостьПереживает отказЧтениеЗаписьГде применяют
JBOD / SPAN2100 %ни одногокак у одного дискакак у одного дискаКогда нужен один большой том из того, что есть под рукой, и потеря содержимого не критична.
RAID 02100 %ни одногоскладывается со всех дисковскладывается со всех дисковМонтажные скретч-тома, кеши, промежуточные данные расчётов — всё, что можно пересоздать.
RAID 1250 %1 дисккопии читаются параллельнопишется на все копии сразуСистемные тома, гипервизоры, небольшие серверы, где важнее предсказуемость, чем гигабайты.
RAID 23+зависит от кода1 дисквысокоенизкаяПобитовое чередование с кодом Хэмминга и синхронизацией шпинделей. Не пережил появления встроенной коррекции ошибок в самих дисках.
RAID 33n−1 диск1 дисквысокое на длинных чтенияхнизкаяПобайтовое чередование с выделенной чётностью. Хорош для потокового видео своего времени, вытеснен RAID 5.
RAID 4375 %1 дискпараллельное по дискам данныхдиск чётности — узкое местоПочти нигде; заметное исключение — системы NetApp, где узкое место снимает энергонезависимый кеш.
RAID 5375 %1 дискпочти как у RAID 0штраф: 2 чтения + 2 записиФайловые серверы и архивы с преобладанием чтения. Для дисков в десятки терабайт сегодня считается рискованным из-за долгого ребилда.
RAID 6460 %2 дискапочти как у RAID 0штраф: 3 чтения + 3 записиЁмкие архивы, видеохранилища, NAS на дисках от 8 ТБ — везде, где ребилд идёт сутками.
RAID 10 (1+0)450 %1 диск (до 2)со всех дисков сразубез пересчёта чётностиБазы данных, виртуализация, почтовые и файловые серверы с активной записью — стандартный выбор под нагрузку.
RAID 0+1450 %1 диск (до 2)со всех дисков сразубез пересчёта чётностиПрактически нигде: при том же железе RAID 10 надёжнее. Встречается в старых конфигурациях и в контроллерах, где 10 недоступен.
RAID 50 (5+0)667 %1 диск (до 2)суммируется по группамштраф делится между группамиМассивы на десяток дисков и больше, где RAID 5 уже слишком широк, а половину объёма под зеркала отдавать жалко.
RAID 60 (6+0)850 %2 диска (до 4)суммируется по группамдвойная чётность в каждой группеКрупные хранилища на ёмких дисках: резервные копии, видеонаблюдение, объектные и медиа-архивы.
Прежде чем собирать

Шесть вещей, которые ломают массивы

RAID — не резервная копия

Избыточность спасает от смерти железа и ни от чего больше. Удаление файла, шифровальщик, ошибка в приложении и кривая миграция мгновенно повторяются на всех дисках сразу. Бэкап живёт отдельно от массива и желательно в другом здании.

Ребилд — самое опасное время

Восстановление читает уцелевшие диски целиком и под полной нагрузкой. Соседи в массиве — той же партии и того же возраста, наработка у них одинаковая. Второй отказ случается именно здесь, поэтому RAID 5 на больших дисках считают риском.

Нечитаемый сектор (URE)

Паспортная вероятность ошибки чтения — порядка одной на 10¹⁴–10¹⁵ бит. При восстановлении массива из дисков на десятки терабайт объём чтения подходит к этому порядку вплотную: один сбойный сектор на уцелевшем диске обрывает ребилд. Отсюда мода на RAID 6 и вложенные уровни.

Дыра записи

Питание пропало между записью блока и записью его чётности — стрип остался рассогласованным, и массив об этом не знает. Лечится журналом, батарейкой или суперконденсатором на кеше контроллера, а в ZFS RAID-Z — тем, что запись идёт копированием при записи.

Контроллер тоже отказывает

Аппаратный RAID хранит метаданные в собственном формате. Сгоревший контроллер часто требует точно такую же модель, чтобы массив снова собрался. Программные реализации (mdadm, ZFS, Storage Spaces) переносятся на любое железо, но грузят процессор и требуют аккуратной настройки кеша.

Горячий резерв и мониторинг

Hot spare стартует восстановление без человека — это часы разницы. Но и он бесполезен, если никто не читает почту от контроллера: массив спокойно живёт в деградации месяцами, пока не отказывает второй диск. Проверяйте SMART и уведомления, а не только зелёные лампочки.

Стенд считает ёмкость и отказоустойчивость перебором всех сочетаний отказов по фактической раскладке блоков, а не по табличным значениям. Раскладка чётности — левая симметричная, как у большинства контроллеров. Практическая часть про сборку зеркала при установке системы — в статье RAID1 при установке Ubuntu Server.