RAID (Redundant Array of Independent Disks) объединяет несколько физических накопителей в один логический том. Для операционной системы такой массив выглядит как обычный диск, но даёт три вещи: защиту от отказа отдельного накопителя, рост скорости за счёт параллельных операций и удобное управление ёмкостью.
Выбор уровня RAID определяет результат: скорость, надёжность или полезный объём. RAID 0 ускоряет доступ и не защищает данные, RAID 1 и RAID 10 дублируют информацию, RAID 5 и RAID 6 экономят диски за счёт чётности. Ошибка в уровне или контроллере приводит к деградации массива в самый неподходящий момент, а rebuild на дисках большого объёма превращается в отдельный риск.
В статье: уровни RAID 0, 1, 5, 6, 10 и комбинированные схемы, сравнение аппаратных контроллеров с BBU и write-back кэшем и программных решений (mdadm, ZFS), команды сборки массива, порядок действий при отказе диска, выбор дисков с TLER и настройка мониторинга.
Что такое RAID и зачем он нужен в системах хранения данных
Массив RAID собирают из двух и более дисков. Данные распределяются по накопителям одним из методов: striping (чередование), mirroring (зеркалирование) или с добавлением контрольных сумм (чётности). Комбинация методов определяет уровень.
Три задачи, которые решает RAID:
- Отказоустойчивость. При выходе из строя одного диска (в RAID 6 - двух) массив продолжает отдавать данные.
- Производительность. Чтение идёт с нескольких дисков параллельно, скорость записи зависит от уровня и политики кэша.
- Ёмкость. Несколько дисков собираются в один том, которым проще управлять.
RAID не нужен для одиночных дисков, JBOD-конфигураций и архивов, где важнее цена гигабайта. Для системного диска домашней машины массив тоже избыточен.
RAID - это не резервное копирование
Массив переживает отказ железа и не спасает от удаления файлов, шифровальщика, ошибки администратора, скачка напряжения, который выжигает все диски сразу, или кражи сервера. Все копии в зеркале синхронно получают и правильные, и испорченные данные.
Для данных на массиве нужна отдельная стратегия бэкапов: минимум три копии, два носителя, одна копия вне площадки (правило 3-2-1). Схему защиты строят целиком: RAID, репликация, снапшоты и восстановление с измеримыми RTO и RPO разобраны в материале про отказоустойчивость хранилища.
Ключевые термины: stripe, mirror, parity, degraded, rebuild
- Stripe (страйп). Блок данных делится на части и записывается на несколько дисков одновременно. Так работает RAID 0.
- Mirror (зеркало). Каждый блок пишется на два и более диска, копия готова к чтению сразу.
- Parity (чётность). Контрольная сумма, по которой восстанавливают данные при потере одного диска (RAID 5) или двух (RAID 6).
- Degraded (деградация). Состояние, когда один или несколько дисков выпали, но массив продолжает работать.
- Rebuild (пересборка). Восстановление данных на новом диске после замены. Идёт с полной нагрузкой на остальные накопители.
Ещё два термина, которые понадобятся дальше: hot spare - резервный диск, автоматически включающийся в массив при отказе, и scrub/check - плановая проверка целостности всех блоков.
Уровни RAID 0, 1, 5, 6, 10: сравнение и выбор
Пять уровней закрывают почти все практические задачи. Разница между ними в компромиссе: сколько дисков отдать под защиту, какую скорость получить на запись и что произойдёт при отказе.
RAID 0: максимальная скорость без защиты
Чередование без чётности. Ёмкость равна сумме всех дисков, скорость чтения и записи растёт почти линейно с числом накопителей. Отказ любого диска означает потерю всего массива: данных для восстановления нет.
Применение: кэш, временные файлы, scratch-диски для вычислений, тестовые среды. Хранить на RAID 0 единственную копию рабочих данных нельзя.
RAID 1: зеркало для критичных данных
Два диска хранят одинаковые данные. Полезная ёмкость равна ёмкости одного диска, массив переживает отказ одного накопителя. Чтение ускоряется за счёт двух копий, запись идёт с той же скоростью, что на одиночный диск.
Применение: системный раздел, конфигурации, небольшие базы данных, файлы с высокой ценностью и малым объёмом. Зеркала на трёх и более дисках повышают отказоустойчивость, но не ёмкость.
RAID 5: баланс ёмкости и отказоустойчивости
Данные и чётность распределены по всем дискам. Полезная ёмкость: (N-1) × размер диска. Массив переживает отказ одного накопителя. Чтение быстрое, запись страдает от штрафа на чётность: одна логическая запись превращается в несколько операций чтения и записи.
Главная проблема RAID 5 в 2026 году - rebuild на дисках объёмом от 4 ТБ и выше. Если во время чтения оставшихся дисков возникнет невосстановимая ошибка (URE), массив потеряет данные. Второй риск - write hole: при потере питания массив может остаться с несогласованной чётностью и данными.
RAID 6: двойная чётность для больших массивов
Две независимые контрольные суммы позволяют пережить отказ двух дисков одновременно. Полезная ёмкость: (N-2) × размер диска, минимум четыре накопителя. Запись медленнее, чем у RAID 5, из-за двойного расчёта чётности.
Применение: массивы от 6 дисков и объёмы от 4 ТБ, где нужен запас на время замены отказавшего диска и возможную вторую ошибку при rebuild. Для домашних NAS с 4-6 дисками RAID 6 или RAIDZ2 в ZFS - разумный выбор.
RAID 10: производительность и надёжность для БД
Зеркала объединяются в страйп. Полезная ёмкость: 50% от суммы дисков. Запись быстрая, данные пишутся в зеркальные пары параллельно, чтение тоже ускоряется. Rebuild занимает меньше времени: копируется содержимое одного зеркала, а не пересчитывается чётность по всем дискам.
Отказоустойчивость зависит от схемы: массив переживает потерю одного диска в каждой паре, потеря обоих дисков одной пары убивает весь массив. Применение: базы данных, виртуализация, высоконагруженные сервисы.
Комбинированные уровни: RAID 50, 60, 51, 61
Гибриды собираются из нескольких RAID-групп. RAID 50 - страйп из массивов RAID 5, RAID 60 - страйп из RAID 6, RAID 51 - зеркало из двух RAID 5, RAID 61 - зеркало из двух RAID 6. Они дают больше скорости на больших объёмах и переживают отказ нескольких дисков, если те попали в разные группы.
Минусы: сложнее администрировать, дороже, при отказе диска деградирует вся группа. Комбинированные уровни применяют в корпоративных СХД на десятки дисков, где важны скорость и плотность.
| Уровень | Мин. дисков | Полезная ёмкость | Отказ дисков | Чтение | Запись | Типовые задачи |
|---|---|---|---|---|---|---|
| RAID 0 | 2 | 100% суммы | 0 | Очень высокая | Очень высокая | Кэш, временные данные |
| RAID 1 | 2 | 50% | 1 | Высокая | Средняя | ОС, конфиги, малые БД |
| RAID 5 | 3 | (N-1) × C | 1 | Высокая | Ниже средней | Файловое хранилище |
| RAID 6 | 4 | (N-2) × C | 2 | Высокая | Низкая | Массивы от 6 дисков, диски от 4 ТБ |
| RAID 10 | 4 | 50% | 1 в каждой паре | Очень высокая | Высокая | БД, виртуализация |
Под конкретные задачи (SQL Server, VMware, TrueNAS) готовые команды mdadm и чек-лист действий при отказе диска собраны в практическом руководстве по RAID.
Аппаратный и программный RAID: что выбрать
Уровень RAID - половина решения. Вторая половина: кто управляет массивом, отдельный контроллер с собственным процессором или операционная система.
Аппаратный RAID контроллер: плюсы, минусы, подводные камни
Контроллер берёт на себя вычисление чётности, кэширование и работу с дисками. Процессор сервера не тратит такты на математику, ОС видит готовый логический том. Ключевые компоненты: кэш (обычно 1-4 ГБ) и BBU или суперконденсатор, защищающий кэш при потере питания.
Режим write-back без защиты кэша опасен: данные из буфера при отключении электричества теряются. С BBU контроллер подтверждает запись до её попадания на диски, что ускоряет работу баз данных и виртуализации.
Минусы: цена и зависимость от вендора. При отказе контроллера массив собирают на совместимом контроллере того же семейства, иначе данные придётся вытаскивать через recovery-лабораторию. Fake RAID на материнских платах (Intel RST, VMD) настоящим аппаратным RAID не назвать: вычисления идут в драйвере ОС, переносимость ниже. Пошаговая настройка уровней 1, 5, 10 через Intel RST и VMD разобрана в руководстве по RAID на Intel-серверах.
Программный RAID: mdadm, ZFS, Storage Spaces
mdadm - стандартный инструмент Linux. Создаёт RAID 0, 1, 4, 5, 6, 10, хранит метаданные прямо на дисках (superblock версии 1.2) и позволяет перенести массив в другую машину без контроллера того же вендора. Замена диска, рост массива и смена уровня выполняются командами.
ZFS идёт дальше: вместо классических уровней использует RAIDZ, проверяет контрольные суммы каждого блока, лечит повреждённые данные по копии или чётности. Storage Spaces в Windows предлагает mirror и parity с управлением пулами. Современные CPU считают XOR и чётность RAID 6 на гигабайтных скоростях: узким местом остаются диски, а не вычислитель.
| Критерий | Аппаратный RAID | Программный RAID |
|---|---|---|
| Нагрузка на CPU | Снимается контроллером | Использует CPU сервера |
| Стоимость | Контроллер и BBU | Дополнительных затрат нет |
| Перенос массива | Зависит от модели контроллера | Диски читаются на любой совместимой системе |
| Защита кэша | BBU или суперконденсатор | Не требуется, запись идёт через кэш ОС |
| Гибкость | Ограничена меню контроллера | Полный набор операций и сценариев |
| Риск вендор-лока | Высокий | Отсутствует |
RAID и ZFS: как сочетаются и что выбрать
ZFS - файловая система и менеджер томов одновременно. Она не использует классический RAID-контроллер, а строит пулы (zpool) из дисков или зеркал.
RAIDZ1, RAIDZ2, RAIDZ3: аналоги уровней RAID
RAIDZ1 переживает отказ одного диска и соответствует RAID 5. RAIDZ2 выдерживает два отказа, как RAID 6. RAIDZ3 - три отказа и тройная чётность, прямого аналога в классических уровнях нет. Ёмкость: RAIDZ1 = (N-1) × C, RAIDZ2 = (N-2) × C, RAIDZ3 = (N-3) × C, минус небольшой служебный оверхед.
Отличия от RAID: переменный размер страйпа под размер блока, отсутствие write hole, контрольные суммы для каждого блока и self-healing. При обнаружении битого блока ZFS читает копию из зеркала или восстанавливает данные по чётности.
Практика: для пула на 4-6 дисков берут RAIDZ2, для 8 и больше - RAIDZ2 или RAIDZ3. Кэш ARC живёт в RAM и ускоряет повторное чтение. Для баз данных добавляют SLOG на быстром SSD. TrueNAS - готовый дистрибутив, где пулы ZFS собираются через веб-интерфейс.
Почему ZFS не дружит с аппаратным RAID
ZFS нужен прямой доступ к каждому диску. Контроллер с RAID скрывает физические накопители за одним логическим томом: ZFS не видит, какой блок на каком диске лежит, не может проверить и вылечить повреждение. Аппаратный RAID с write-back кэшем нарушает порядок записи, на который опирается copy-on-write.
Итог: ZFS поверх аппаратного RAID 5 теряет самовосстановление и превращается в обычную файловую систему с лишней точкой отказа. Для ZFS берут HBA-контроллер в режиме IT (например, LSI/Broadcom 9300-8i) или подключают диски напрямую к SATA/SAS-портам.
Настройка RAID-массива: пошаговая инструкция
Сборка массива через mdadm в Linux. Синтаксис совместим с Ubuntu 24.04, RHEL 10 и большинством современных дистрибутивов.
Создание массива через mdadm
- Разметьте диски одинаково. Для каждого накопителя создайте раздел с выравниванием 1 МиБ (gdisk или parted), тип раздела - Linux RAID (fd00).
- Проверьте, что все диски видны: lsblk.
- Соберите RAID 5 из четырёх дисков и одного горячего резерва: mdadm --create /dev/md0 --level=5 --raid-devices=4 --spare-devices=1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1
- Для RAID 10 команда короче: mdadm --create /dev/md1 --level=10 --raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
- Следите за сборкой: cat /proc/mdstat. Строка resync показывает прогресс, скорость поднимается через /proc/sys/dev/raid/speed_limit_max.
- Проверьте состояние: mdadm --detail /dev/md0. В выводе нужны State: clean, degraded или resyncing и список активных устройств.
Уровни RAID 5, 6, 10 и ZFS с примерами команд для Ubuntu и RHEL разобраны в руководстве по программным RAID на Linux.
Монтирование и автозапуск массива
- Создайте файловую систему: mkfs.ext4 /dev/md0 или mkfs.xfs /dev/md0.
- Смонтируйте: mount /dev/md0 /mnt/data.
- Получите UUID: blkid /dev/md0.
- Добавьте запись в /etc/fstab по UUID, а не по имени /dev/md0: порядок сборки массивов при загрузке не гарантирован.
- Сохраните конфигурацию для initramfs: mdadm --detail --scan >> /etc/mdadm/mdadm.conf (в RHEL путь /etc/mdadm.conf).
- Обновите initramfs: update-initramfs -u для Debian и Ubuntu или dracut -f для RHEL.
Без шагов 5-6 массив может не подняться после перезагрузки, особенно если корень системы лежит на нём.
Hot spare и замена отказавшего диска
Горячий резерв включается автоматически, когда один из дисков выпадает. Если spare нет, порядок такой:
- Найдите отказавший диск: cat /proc/mdstat или mdadm --detail /dev/md0.
- Пометьте и удалите: mdadm /dev/md0 --fail /dev/sdc1, затем mdadm /dev/md0 --remove /dev/sdc1.
- Установите новый диск, создайте раздел той же разметки и добавьте: mdadm /dev/md0 --add /dev/sdg1.
- Следите за rebuild: cat /proc/mdstat. Скорость пересборки на HDD обычно 100-200 МБ/с, для 8 ТБ это 10-20 часов.
Если rebuild не стартует, проверьте, что диск не помечен как faulty в superblock (mdadm --examine /dev/sdg1) и что размер раздела не меньше остальных. В Windows замена диска в зеркале Intel RST выполняется через графическую утилиту или CLI; пошаговый разбор есть в инструкции по RAID 1 через Intel RST.
Правило: перед заменой и rebuild снимите свежую резервную копию. Пересборка читает оставшиеся диски на полной скорости, второй отказ в этот момент встречается чаще, чем кажется.
Восстановление RAID-массива: риски и типичные ошибки
Rebuild - самый опасный этап жизни массива. Диски работают с полной нагрузкой часами, а свежего бэкапа у администратора часто нет.
URE и почему RAID 5 умирает при rebuild
URE (Unrecoverable Read Error) - ошибка чтения, которую диск не смог исправить своими силами. Спецификация потребительских SATA-дисков допускает до одной такой ошибки на 10^14 прочитанных бит, enterprise-моделей - на 10^15. Полное чтение диска на 4 ТБ - это 3,2 × 10^13 бит, ожидаемое число ошибок около 0,3. Для 8 ТБ - около 0,64.
При rebuild RAID 5 из четырёх 8-ТБ дисков массив читает три накопителя, примерно 1,9 × 10^14 бит. По паспортным значениям вероятность хотя бы одной URE превышает 80%. Если второй диск выпадет или вернёт нечитаемый блок, восстановить данные нечем.
RAID 6 выдерживает одну URE во время rebuild: вторая контрольная сумма позволяет восстановить повреждённый блок. RAID 10 устойчивее: данные читаются с зеркального диска, а не пересчитываются по чётности по всему массиву.
Типичные ошибки при сборке и восстановлении
- mdadm --create вместо --assemble. Команда create перезаписывает superblock и уничтожает метаданные существующего массива. Для поднятия массива используйте mdadm --assemble /dev/md0 /dev/sd[b-e]1 или mdadm --assemble --scan.
- Desktop-диски в массиве. Без TLER они уходят в глубокое восстановление сектора на минуты, контроллер считает диск отказавшим и выбрасывает его из массива.
- Отсутствие мониторинга. Массив может месяцами работать в degraded, пока не откажет второй диск.
- Rebuild без бэкапа. Если данные ценны, копию снимают до замены диска.
- Неверный порядок дисков. При ручной сборке указывайте диски в правильном порядке, а лучше доверьте это --scan.
- Игнорирование температуры. Перегрев дисков в тесном корпусе ускоряет отказы и ошибки чтения.
Порядок действий при degraded: зафиксируйте состояние (mdadm --detail, smartctl), снимите бэкап, проверьте SMART оставшихся дисков, замените отказавший, дождитесь rebuild. Пересобирать массив заново без необходимости нельзя: каждая лишняя операция повышает риск.
Выбор дисков и контроллеров для RAID
Железо определяет, сколько массив проживёт и как поведёт себя при первой ошибке чтения.
TLER, ERC и почему обычные диски ломают RAID
Обычный desktop-диск при ошибке чтения пытается спасти сектор и уходит в повторные попытки на 60-120 секунд. RAID-контроллер ждёт ответа ограниченное время (обычно 7-15 секунд), затем помечает диск отказавшим и выбрасывает из массива. Два таких события в RAID 5 - потеря данных.
Диски для NAS и enterprise-класса поддерживают TLER (Time-Limited Error Recovery) или ERC: через заданный интервал диск сообщает об ошибке и передаёт решение контроллеру или ОС. Типичное значение - 7 секунд. Это не ускоряет диски, а не даёт массиву рассыпаться из-за одного бэд-блока.
Что учитывать при выборе:
- Класс. NAS-диски (WD Red Plus/Pro, Seagate IronWolf) или enterprise (Exos, Ultrastar). Desktop-модели для массивов не годятся.
- Интерфейс. SAS даёт 12 Гбит/с, два порта и более высокий ресурс; SATA дешевле и подходит для bulk-хранилищ.
- SSD. Проверьте поддержку TRIM в RAID-режиме, ресурс DWPD и TBW. Потребительские SSD без защиты от потери питания хуже подходят для кэша записи.
- Одинаковость. Берите диски одной модели, объёма и прошивки: массив выравнивается по самому слабому и маленькому диску.
- Партии. Диски из одной партии стареют синхронно, разнесите закупку по датам, если есть возможность.
Выбор RAID-контроллера: на что смотреть
- BBU или суперконденсатор. Без защиты кэша write-back включать нельзя. Для баз данных и виртуализации защищённый кэш ускоряет запись в разы.
- Режим HBA/JBOD. Для ZFS и mdadm контроллер переводят в IT-режим, чтобы отдать диски напрямую.
- Совместимость с Linux. Проверьте драйвер (megaraid_sas, mpt3sas), поддержку TRIM и наличие утилит мониторинга (storcli, sas2ircu).
- Кэш. 1-2 ГБ достаточно для смешанной нагрузки, 4 ГБ и больше имеет смысл на массивах из десятков дисков.
- NVMe. Для быстрых пулов берите контроллеры с поддержкой NVMe или подключайте накопители напрямую к CPU.
Стандарт де-факто для HBA и RAID - контроллеры LSI/Broadcom на чипах SAS3008 и SAS3108. Прошивки и утилиты для них доступны под Linux и Windows без вендор-лока.
Мониторинг RAID-массива: как не пропустить отказ
Массив без мониторинга рано или поздно доходит до состояния, когда второй отказ убивает данные. Проверки и уведомления настраиваются один раз.
Настройка уведомлений mdadm
- Откройте конфигурационный файл mdadm (Debian и Ubuntu: /etc/mdadm/mdadm.conf, RHEL: /etc/mdadm.conf) и добавьте строки: MAILADDR admin@example.com и PROGRAM /usr/local/bin/md-alert.sh.
- Убедитесь, что служба mdmonitor запущена: systemctl status mdmonitor (в новых дистрибутивах - mdmonitor.service).
- Проверьте тестовым событием: mdadm --monitor --scan --test --oneshot. Письмо должно прийти.
- Для Telegram или Slack используйте скрипт в PROGRAM: он получает события о degraded, fail и rebuild и шлёт их в webhook.
SMART и регулярные проверки
smartctl показывает здоровье диска: smartctl -a /dev/sdb. Ключевые атрибуты:
- Reallocated_Sector_Ct (5). Переназначенные секторы. Рост значения - первый признак приближающегося отказа.
- Current_Pending_Sector (197). Секторы, которые диск не смог прочитать. Ненулевое значение требует внимания.
- Offline_Uncorrectable (198). Ошибки, найденные при офлайн-проверке.
- UDMA_CRC_Error_Count (199). Ошибки интерфейса и кабеля. Часто лечатся заменой шлейфа или backplane.
- Temperature. Выше 55-60 °C ресурс диска падает, растёт число ошибок.
Автоматизируйте проверки: smartd с параметрами -m и -M exec шлёт письма при ухудшении атрибутов. Раз в месяц запускайте проверку целостности: echo check > /sys/block/md0/md/sync_action для mdadm, zpool scrub для ZFS. Занимает часы, зато находит нечитаемые блоки до того, как они понадобятся при rebuild.
Для Zabbix или Prometheus используйте готовые шаблоны: node_exporter с textfile collector забирает вывод mdadm и smartctl, Grafana строит дашборд. Алерты настройте на переход массива в degraded, рост переназначенных секторов, температуру выше порога и отставание scrub. Разбор больших логов SMART, dmesg и журналов контроллера ускоряет LLM-ассистент: агрегатор AiTunnel даёт единый доступ к GPT, Gemini и Claude без VPN и с оплатой в рублях.
Практические рекомендации и чек-лист
Ключевые правила в коротких списках.
Перед сборкой массива:
- Свежий бэкап всех данных, которые будут лежать на массиве.
- Диски одного класса, модели, объёма и прошивки, желательно NAS или enterprise.
- Для RAID 5 и 6 посчитайте полезную ёмкость и заложите hot spare.
- Для ZFS - HBA в IT-режиме, для аппаратного RAID - контроллер с BBU.
- План мониторинга: mdmonitor или утилита контроллера, smartd, внешние алерты.
- Запишите схему массива: уровень, порядок дисков, серийные номера. Храните отдельно от сервера.
При отказе диска:
- Сначала бэкап, потом любые действия с массивом.
- Не пересобирайте массив через --create и не переформатируйте диски.
- Проверьте SMART оставшихся дисков: возможен второй сбойный накопитель.
- Замените диск, добавьте в массив, дождитесь rebuild, проверьте статус clean.
Каждый месяц:
- Проверить состояние массива: mdadm --detail, /proc/mdstat, журнал контроллера.
- Запустить scrub или check.
- Просмотреть SMART-атрибуты всех дисков и температуру.
- Проверить, что тестовое уведомление доходит до дежурного.
Выбор уровня под задачу:
- ОС и конфиги - RAID 1.
- Файловое хранилище на 4-6 дисках - RAID 6 или RAIDZ2.
- Базы данных, виртуальные машины, высокая нагрузка - RAID 10.
- Кэш и временные данные - RAID 0.
- Массивы от 8 дисков - RAID 6, RAIDZ2, RAID 60.
Если собирать и обслуживать железо не хочется, часть задач закрывает облако: Timeweb Cloud даёт серверы, VDS/VPS, базы данных и хранилище с оплатой за ресурсы, а резервирование и снапшоты настраиваются на стороне провайдера.
RAID повышает доступность данных и не отменяет бэкап. Минимальная рабочая схема: массив с запасом по отказоустойчивости, hot spare, мониторинг с алертами и регулярная проверка резервных копий. Остальное уточняется под конкретную нагрузку.