RAID 6
RAID 6 (Redundant Array of Independent Disks Level 6, избыточный массив независимых дисков уровня 6) — это стандарт организации логических дисковых массивов, обеспечивающий отказоустойчивость за счёт хранения двух независимых блоков контрольных сумм (чётности) для каждого блока данных. RAID 6 позволяет массиву сохранять работоспособность и целостность данных при одновременном выходе из строя любых двух физических дисков. Относится к классу массивов с избыточностью и является развитием технологии RAID 5.
История и развитие
Технология RAID была впервые описана в 1988 году в статье Дэвида Паттерсона, Гарта Гибсона и Рэнди Каца «A Case for Redundant Arrays of Inexpensive Disks» (UC Berkeley). Первоначально были определены пять уровней (RAID 1–5). RAID 6 не входил в первоначальную спецификацию и был разработан позднее как ответ на рост ёмкости жёстких дисков и увеличение времени восстановления массивов RAID 5.
В 1990-х годах, с распространением дисков большой ёмкости (более 1 ТБ), стало очевидно, что при отказе одного диска в RAID 5 время реконструкции массива может составлять часы или даже дни. За это время возрастает вероятность отказа второго диска, что приводило к необратимой потере данных. RAID 6 решил эту проблему, добавив вторую контрольную сумму.
Промышленные реализации RAID 6 появились в середине 1990-х годов в системах хранения данных (СХД) компаний EMC, IBM, NetApp и других. В 2002 году стандарт RAID 6 был формализован в спецификации Storage Networking Industry Association (SNIA). С начала 2010-х годов RAID 6 стал стандартом де-факто для корпоративных систем хранения данных, где критична сохранность информации.
Принцип работы
RAID 6 использует два типа контрольных сумм, вычисляемых по разным алгоритмам. Данные и контрольные суммы распределяются по всем дискам массива (страйпинг с чётностью). Размер блока (strip size) обычно составляет от 64 КБ до 1 МБ.
Алгоритмы вычисления чётности
Существует несколько алгоритмов для реализации RAID 6, наиболее распространённые:
- P+Q (Галуа-поля). Первая контрольная сумма (P) вычисляется как XOR всех блоков данных по аналогии с RAID 5. Вторая контрольная сумма (Q) вычисляется с использованием умножения в поле Галуа (GF(2^n)). Это позволяет восстановить данные при отказе любых двух дисков. Алгоритм требует значительных вычислительных ресурсов, так как включает умножение, а не только XOR.
- Диагональная чётность (RAID-DP, NetApp). Используется в системах хранения NetApp. Данные организуются в виде матрицы, где строки соответствуют дискам, а столбцы — полосам. Первая чётность (P) вычисляется по строкам (как в RAID 5). Вторая чётность (Q) вычисляется по диагоналям матрицы. Этот метод более эффективен для программной реализации.
- Коды Рида — Соломона (Reed-Solomon). Универсальный метод коррекции ошибок, позволяющий восстанавливать данные при отказе до N дисков (где N — количество контрольных сумм). Для RAID 6 используется код RS(2), который генерирует два избыточных блока. Этот метод также требует умножения в поле Галуа.
Запись данных
При записи данных контроллер вычисляет обе контрольные суммы. Для минимизации операций ввода-вывода используется техника «чтение-модификация-запись» (read-modify-write): считываются старые данные и старые контрольные суммы, вычисляются новые значения, и записываются только изменённые блоки и новые контрольные суммы. Однако в RAID 6 эта операция сложнее, чем в RAID 5, так как требует вычисления двух чётностей.
Чтение данных
Чтение данных происходит со всех дисков параллельно, что обеспечивает высокую скорость последовательных операций. При отказе одного диска данные восстанавливаются «на лету» с использованием оставшихся дисков и контрольных сумм (деградированный режим).
Восстановление (Rebuild)
При замене отказавшего диска массив перестраивается: считываются данные со всех остальных дисков, вычисляется недостающая информация, и записывается на новый диск. В RAID 6 процесс ребилда может быть более длительным, чем в RAID 5, из-за необходимости вычисления двух чётностей. Однако наличие второй чётности гарантирует, что если во время ребилда откажет ещё один диск, данные не будут потеряны.
Ключевые характеристики
| Параметр | Значение |
|---|---|
| Минимальное количество дисков | 4 |
| Максимальное количество дисков | Теоретически не ограничено, практически — 16–32 (ограничение контроллера) |
| Эффективная ёмкость | N-2 диска (где N — общее количество дисков) |
| Отказоустойчивость | До 2 дисков одновременно |
| Скорость чтения | Высокая (N-2 потоков) |
| Скорость записи | Средняя (из-за вычисления двух чётностей, ниже, чем у RAID 5 и RAID 10) |
| Производительность при деградации | Снижается (требуется вычисление данных на лету) |
| Потери дискового пространства | 2 диска (или ~20–40% от общей ёмкости) |
Преимущества и недостатки
Преимущества
- Высокая надёжность. RAID 6 — один из самых надёжных стандартов RAID. Он защищает данные при отказе любых двух дисков, что критически важно для больших массивов (8+ дисков), где вероятность двойного отказа в течение времени ребилда значительна.
- Устойчивость к ошибкам чтения. Если при восстановлении одного диска на другом диске возникает неисправимая ошибка чтения (Unrecoverable Read Error, URE), RAID 6 может восстановить данные с использованием второй чётности. RAID 5 в такой ситуации теряет данные.
- Хорошая скорость чтения. Благодаря параллельному доступу ко всем дискам, скорость последовательного чтения близка к суммарной скорости всех дисков.
- Эффективное использование дискового пространства. Потери составляют всего 2 диска, что лучше, чем у RAID 1 (50%) или RAID 10 (50%).
Недостатки
- Низкая скорость записи. Вычисление двух контрольных сумм требует значительных вычислительных ресурсов контроллера. Скорость записи в RAID 6 на 20–40% ниже, чем в RAID 5, и значительно ниже, чем в RAID 10.
- Сложность реализации. Требует мощного аппаратного или программного контроллера, способного выполнять умножение в поле Галуа. Программный RAID 6 (mdadm в Linux) может сильно нагружать процессор.
- Длительное время восстановления. Ребилд большого массива (10+ ТБ) может занимать от нескольких часов до суток. Всё это время массив работает в деградированном режиме с пониженной производительностью.
- «Проклятие больших дисков». С ростом ёмкости дисков (свыше 4 ТБ) время ребилда растёт, а вероятность ошибки URE на единицу объёма остаётся примерно постоянной. RAID 6 частично решает эту проблему, но не устраняет её полностью.
Применение
RAID 6 применяется в тех областях, где надёжность хранения данных является приоритетом, а высокая скорость записи не критична:
- Корпоративные системы хранения данных (СХД). Файловые серверы, серверы баз данных (особенно с преобладанием операций чтения), системы резервного копирования.
- Видеонаблюдение. Системы, где запись ведётся непрерывно, но скорость записи невысока (например, 24/7 запись с нескольких камер), а потеря данных недопустима.
- Медиа-архивы. Хранение больших объёмов видео- и аудиоматериалов, где данные редко изменяются, но должны быть надёжно защищены.
- Научные и исследовательские данные. Хранение результатов экспериментов, которые не должны быть утеряны.
- Облачные хранилища. Провайдеры облачных услуг (например, Amazon S3, Google Cloud Storage) используют внутренние реализации, похожие на RAID 6 (часто с кодами Рида — Соломона), для обеспечения отказоустойчивости на уровне дата-центра.
Сравнение с другими уровнями RAID
| Характеристика | RAID 0 | RAID 1 | RAID 5 | RAID 6 | RAID 10 |
|---|---|---|---|---|---|
| Отказоустойчивость | Нет | 1 диск | 1 диск | 2 диска | 1 диск (в каждой зеркальной паре) |
| Минимальное число дисков | 2 | 2 | 3 | 4 | 4 |
| Эффективная ёмкость | N | N/2 | N-1 | N-2 | N/2 |
| Скорость записи | Очень высокая | Средняя | Средняя | Низкая | Высокая |
| Скорость чтения | Очень высокая | Высокая | Высокая | Высокая | Очень высокая |
| Потери пространства | 0% | 50% | 1 диск | 2 диска | 50% |
RAID 6 занимает нишу между RAID 5 (более быстрый, но менее надёжный) и RAID 10 (более быстрый, но с большими потерями дискового пространства).
Интересные факты
- RAID 6 иногда называют «RAID с двойной чётностью» (Double Parity RAID).
- В некоторых реализациях (например, ZFS) используется аналог RAID 6, называемый RAID-Z2. Он отличается от классического RAID 6 тем, что не использует страйпинг фиксированного размера, а записывает данные переменными блоками, что позволяет избежать проблемы «записи на полосе» (write hole).
- Существуют реализации RAID 6, которые могут восстанавливать данные при отказе не только двух дисков, но и одного диска и одного сектора на другом диске (с использованием кодов Рида — Соломона).
- В 2010-х годах, с появлением твердотельных накопителей (SSD), RAID 6 стал менее популярен для высокопроизводительных систем, так как SSD имеют гораздо меньшее время доступа и не страдают от проблемы URE так сильно, как HDD. Однако для архивного хранения больших объёмов данных на HDD RAID 6 остаётся актуальным.
Источники
- Patterson, D. A., Gibson, G., & Katz, R. H. (1988). A case for redundant arrays of inexpensive disks (RAID). Proceedings of the 1988 ACM SIGMOD international conference on Management of data.
- SNIA (Storage Networking Industry Association). (2002). Common RAID Disk Drive Format (DDF) Standard.
- Chen, P. M., Lee, E. K., Gibson, G. A., Katz, R. H., & Patterson, D. A. (1994). RAID: High-performance, reliable secondary storage. ACM Computing Surveys.
- Plank, J. S. (1997). A tutorial on Reed-Solomon coding for fault-tolerance in RAID-like systems. Software: Practice and Experience.
- Corbett, P., & Park, J. (1996). Row-diagonal parity for double disk failure correction. Proceedings of the 3rd USENIX Conference on File and Storage Technologies (FAST).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →