Апаратний RAID чи mdadm: що обрати на сервері
На сучасному сервері з SSD та NVMe беріть mdadm: він швидший на флеші, не прив'язує масив до моделі контролера і читається будь-якою Linux-системою. Апаратний контролер із батареєю та кешем на запис виграє там, де стоїть багато механічних дисків і потрібен RAID 5 чи RAID 6 без навантаження на процесор.
- mdadm — частина ядра Linux, масив збирається з будь-яких блокових пристроїв і переїжджає на інший сервер разом із дисками.
- Апаратний контролер дає write-back кеш із BBU або флеш-захистом, чим суттєво прискорює випадковий запис на жорстких дисках.
- Метадані контролера пропрієтарні: без такої самої моделі прочитати диски напряму зазвичай не вийде.
- 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 і більше жорстких дисків під RAID 6 — апаратний контролер зі справним BBU. Write-back знімає основний штраф парності.
- Гіпервізор і ZFS — лише прямий доступ до дисків. Контролер переводять у режим HBA, інакше ZFS втрачає контроль над кешем; про запуск гіпервізора на своєму залізі є окрема стаття.
- Потрібна переносимість — mdadm. Диски виймаються і збираються на будь-якій іншій машині.
Коротко
- На флеш-накопичувачах mdadm практично завжди кращий за контролер.
- Апаратний RAID виправданий масивом механічних дисків на парності та робочим write-back кешем.
- Контролер прив'язує диски до своєї прошивки і сам стає точкою відмови.
- Моніторинг обов'язковий в обох варіантах, але утиліти різні: mdstat проти storcli і ssacli.
- Під ZFS і гіпервізор контролер переводять у HBA-режим і віддають диски системі напряму.