Как RAID раскладывает данные
и что он переживает
Десять уровней на одной полке, ещё два исторических — в таблице. Выберите уровень слева, посмотрите, куда легли блоки, а потом нажмите на любой диск — он «умрёт», и станет видно, что массив вытянет, что восстановит по чётности, а что потеряет насовсем.
Файл режется на блоки, и соседние блоки уходят на разные диски. Читать и писать можно всеми шпинделями одновременно, поэтому скорость и объём складываются почти линейно. Надёжность при этом делится: отказ любого одного диска рвёт каждый файл массива, и восстанавливать нечем — избыточности здесь нет вообще.
Монтажные скретч-тома, кеши, промежуточные данные расчётов — всё, что можно пересоздать.
Чётность — это XOR, и больше ничего
Контрольная сумма стрипа в RAID 4, 5, 50 — побитовое «исключающее или» всех данных стрипа. У операции есть удобное свойство: она обратима. Зная любые три величины из четырёх, четвёртую можно вычислить. Переключайте биты, «теряйте» диск и восстанавливайте.
Правило одно: сумма всех битов столбца по модулю два всегда равна нулю, если считать вместе с чётностью.
B = A ⊕ C ⊕ P
Отсюда и цена: чтобы изменить один блок, контроллер обязан прочитать старые данные и старую чётность, вычислить новую и записать оба блока. Четыре операции вместо одной — это и есть «штраф записи» RAID 5.
Вторая сумма Q в RAID 6 считается уже не XOR, а кодом Рида — Соломона в поле Галуа: два независимых уравнения позволяют решить систему с двумя неизвестными, то есть восстановить сразу два диска.
Сводная таблица уровней
Серым — уровни, которые сегодня встречаются только в учебниках и в старом железе.
| Уровень | Мин. дисков | Полезная ёмкость | Переживает отказ | Чтение | Запись | Где применяют |
|---|---|---|---|---|---|---|
| JBOD / SPAN | 2 | 100 % | ни одного | как у одного диска | как у одного диска | Когда нужен один большой том из того, что есть под рукой, и потеря содержимого не критична. |
| RAID 0 | 2 | 100 % | ни одного | складывается со всех дисков | складывается со всех дисков | Монтажные скретч-тома, кеши, промежуточные данные расчётов — всё, что можно пересоздать. |
| RAID 1 | 2 | 50 % | 1 диск | копии читаются параллельно | пишется на все копии сразу | Системные тома, гипервизоры, небольшие серверы, где важнее предсказуемость, чем гигабайты. |
| RAID 2 | 3+ | зависит от кода | 1 диск | высокое | низкая | Побитовое чередование с кодом Хэмминга и синхронизацией шпинделей. Не пережил появления встроенной коррекции ошибок в самих дисках. |
| RAID 3 | 3 | n−1 диск | 1 диск | высокое на длинных чтениях | низкая | Побайтовое чередование с выделенной чётностью. Хорош для потокового видео своего времени, вытеснен RAID 5. |
| RAID 4 | 3 | 75 % | 1 диск | параллельное по дискам данных | диск чётности — узкое место | Почти нигде; заметное исключение — системы NetApp, где узкое место снимает энергонезависимый кеш. |
| RAID 5 | 3 | 75 % | 1 диск | почти как у RAID 0 | штраф: 2 чтения + 2 записи | Файловые серверы и архивы с преобладанием чтения. Для дисков в десятки терабайт сегодня считается рискованным из-за долгого ребилда. |
| RAID 6 | 4 | 60 % | 2 диска | почти как у RAID 0 | штраф: 3 чтения + 3 записи | Ёмкие архивы, видеохранилища, NAS на дисках от 8 ТБ — везде, где ребилд идёт сутками. |
| RAID 10 (1+0) | 4 | 50 % | 1 диск (до 2) | со всех дисков сразу | без пересчёта чётности | Базы данных, виртуализация, почтовые и файловые серверы с активной записью — стандартный выбор под нагрузку. |
| RAID 0+1 | 4 | 50 % | 1 диск (до 2) | со всех дисков сразу | без пересчёта чётности | Практически нигде: при том же железе RAID 10 надёжнее. Встречается в старых конфигурациях и в контроллерах, где 10 недоступен. |
| RAID 50 (5+0) | 6 | 67 % | 1 диск (до 2) | суммируется по группам | штраф делится между группами | Массивы на десяток дисков и больше, где RAID 5 уже слишком широк, а половину объёма под зеркала отдавать жалко. |
| RAID 60 (6+0) | 8 | 50 % | 2 диска (до 4) | суммируется по группам | двойная чётность в каждой группе | Крупные хранилища на ёмких дисках: резервные копии, видеонаблюдение, объектные и медиа-архивы. |
Шесть вещей, которые ломают массивы
RAID — не резервная копия
Избыточность спасает от смерти железа и ни от чего больше. Удаление файла, шифровальщик, ошибка в приложении и кривая миграция мгновенно повторяются на всех дисках сразу. Бэкап живёт отдельно от массива и желательно в другом здании.
Ребилд — самое опасное время
Восстановление читает уцелевшие диски целиком и под полной нагрузкой. Соседи в массиве — той же партии и того же возраста, наработка у них одинаковая. Второй отказ случается именно здесь, поэтому RAID 5 на больших дисках считают риском.
Нечитаемый сектор (URE)
Паспортная вероятность ошибки чтения — порядка одной на 10¹⁴–10¹⁵ бит. При восстановлении массива из дисков на десятки терабайт объём чтения подходит к этому порядку вплотную: один сбойный сектор на уцелевшем диске обрывает ребилд. Отсюда мода на RAID 6 и вложенные уровни.
Дыра записи
Питание пропало между записью блока и записью его чётности — стрип остался рассогласованным, и массив об этом не знает. Лечится журналом, батарейкой или суперконденсатором на кеше контроллера, а в ZFS RAID-Z — тем, что запись идёт копированием при записи.
Контроллер тоже отказывает
Аппаратный RAID хранит метаданные в собственном формате. Сгоревший контроллер часто требует точно такую же модель, чтобы массив снова собрался. Программные реализации (mdadm, ZFS, Storage Spaces) переносятся на любое железо, но грузят процессор и требуют аккуратной настройки кеша.
Горячий резерв и мониторинг
Hot spare стартует восстановление без человека — это часы разницы. Но и он бесполезен, если никто не читает почту от контроллера: массив спокойно живёт в деградации месяцами, пока не отказывает второй диск. Проверяйте SMART и уведомления, а не только зелёные лампочки.
Стенд считает ёмкость и отказоустойчивость перебором всех сочетаний отказов по фактической раскладке блоков, а не по табличным значениям. Раскладка чётности — левая симметричная, как у большинства контроллеров. Практическая часть про сборку зеркала при установке системы — в статье RAID1 при установке Ubuntu Server.