Аппаратный RAID или mdadm: что выбрать на сервере
На современном сервере с SSD и NVMe берите mdadm: он быстрее на флеше, не привязывает массив к модели контроллера и читается любой Linux-системой. Аппаратный контроллер с батарейкой и кэшем на запись выигрывает там, где стоит много механических дисков и нужен RAID 5 или RAID 6 без нагрузки на процессор.
- mdadm — часть ядра Linux, массив собирается из любых блочных устройств и переезжает на другой сервер вместе с дисками.
- Аппаратный контроллер даёт write-back кэш с BBU или флеш-защитой, чем сильно ускоряет случайную запись на HDD.
- Метаданные контроллера проприетарны: без такой же модели прочитать диски напрямую обычно не выйдет.
- NVMe почти никогда не подключают к классическому SAS/SATA-контроллеру, для них mdadm или ZFS — норма.
- Накладные расходы mdadm на зеркале и страйпе — единицы процентов CPU, на RAID 6 из десятка дисков — заметнее.
Как работает аппаратный RAID
Контроллер — отдельный компьютер на плате: свой процессор ввода-вывода, своя память, своя прошивка. Операционная система видит не диски, а один логический том; вся логика уровня, чтение чётности и ребилд идут внутри контроллера.
Главный практический плюс — кэш на запись в режиме write-back. Сервер получает подтверждение записи, как только данные попали в память контроллера, а не на пластины диска. Это снимает штраф RAID 5 на случайной записи и превращает медленный массив HDD в приемлемый. Работает это только при исправной батарее или суперконденсаторе: без них контроллер сам отключает write-back и производительность падает в разы.
Как работает mdadm
mdadm — утилита управления подсистемой md в ядре Linux. Массив собирается из разделов или целых устройств, состояние хранится в суперблоке на самих дисках, а вся арифметика уровня выполняется на процессоре сервера.
Сравнение по пунктам, которые решают
| Критерий | Аппаратный RAID | mdadm |
|---|---|---|
| Кэш на запись | есть, с BBU или флеш-защитой | нет, только кэш дисков и страничный кэш ядра |
| Нагрузка на CPU | нулевая | от долей процента до нескольких процентов ядра |
| Перенос дисков на другой сервер | нужен совместимый контроллер | любая Linux-машина соберёт массив |
| Поддержка NVMe | редкая и дорогая | полная |
| Мониторинг | storcli, perccli, ssacli — вендорские утилиты | /proc/mdstat, mdadm --monitor |
| Точка отказа | сам контроллер и его батарея | отсутствует отдельным элементом |
Что стоит на сервере прямо сейчас
Определить реализацию можно за минуту. Если контроллер есть, ядро покажет его в списке PCI-устройств, а физические диски в lsblk будут скрыты за одним томом.
# есть ли RAID-контроллер на шине PCI
lspci | grep -i -E 'raid|megaraid|smart array'
# что видит ядро как блочные устройства
lsblk -o NAME,SIZE,TYPE,MODEL,MOUNTPOINT
# программные массивы
cat /proc/mdstat
mdadm --detail --scan 2>&1
# пакеты для управления программным массивом
apt-get install -y mdadm smartmontools # Debian/Ubuntu
dnf install -y mdadm smartmontools # RHEL, AlmaLinux, Rocky
Состав дисков в конкретной конфигурации указан в описании тарифа: на выделенных серверах ZevsHost базовые сборки идут парой накопителей в RAID 1, Enterprise US — четырьмя NVMe в RAID 10. Схему реализации на конкретной машине уточняйте в поддержке: она зависит от конфигурации.
Мониторинг: разные команды, одна цель
Программный массив сообщает о проблеме письмом от mdadm --monitor и строкой в /proc/mdstat. Аппаратный — только через вендорскую утилиту, которую надо поставить руками и опрашивать по расписанию.
# mdadm: демон уведомлений (Debian/Ubuntu и RHEL одинаково)
systemctl enable --now mdmonitor
mdadm --monitor --scan --test --oneshot
# LSI/Broadcom MegaRAID через storcli
storcli /c0 show all
storcli /c0 /vall show
storcli /c0 /eall /sall show
# HPE Smart Array
ssacli ctrl all show config detail
Аппаратный контроллер добавляет точку отказа, о которой вспоминают поздно. Разряженная батарея переводит кэш в write-through, и запись проседает в несколько раз без единой ошибки в логах. Смерть самого контроллера оставляет вас с дисками, чьи метаданные не читает ничего, кроме такой же модели. Проверяйте: storcli /c0 show all должен показывать состояние кэша WriteBack и батарею как Optimal, а не Degraded или Learn Cycle. На mdadm аналогичная проверка — cat /proc/mdstat без символов подчёркивания и State : clean в выводе mdadm --detail. Выпавший диск в обоих случаях требует замены в массиве без ожидания.
Как выбрать
- SSD или NVMe, 2–4 диска, зеркало или RAID 10 — mdadm. Кэш контроллера здесь не даёт выигрыша, а ограничения по совместимости остаются.
- 8 и больше HDD под RAID 6 — аппаратный контроллер с исправным BBU. Write-back снимает основной штраф чётности.
- Гипервизор и ZFS — только прямой доступ к дискам. Контроллер переводят в режим HBA, иначе ZFS теряет контроль над кэшем; про запуск гипервизора на своём железе есть отдельная статья.
- Нужна переносимость — mdadm. Диски вынимаются и собираются на любой другой машине.
Коротко
- На флеш-накопителях mdadm практически всегда предпочтительнее контроллера.
- Аппаратный RAID оправдан массивом механических дисков на чётности и рабочим write-back кэшем.
- Контроллер привязывает диски к своей прошивке и сам становится точкой отказа.
- Мониторинг обязателен в обоих вариантах, но утилиты разные: mdstat против storcli и ssacli.
- Под ZFS и гипервизор контроллер переводят в HBA-режим и отдают диски системе напрямую.