Диск падает не по расписанию. Обычно это случается в пятницу вечером, когда на сервере нет RAID, а данные не бэкапились неделю. Наши инженеры сталкиваются с этим регулярно: клиент звонит с паникой, а мы за час поднимаем массив и восстанавливаем доступ. mdadm — стандартный инструмент для программного RAID на Linux, и при правильной настройке он работает годами без вмешательства. Мы гарантируем корректную конфигурацию, которая переживёт отказ диска и плановое обновление ядра. Наш опыт показывает, что 90% проблем с RAID возникают из-за неправильной начальной настройки. За 8 лет работы мы настроили более 50 RAID-массивов на серверах различной сложности, включая критичные production-среды с SLO 99.9%. Обеспечение отказоустойчивости сервера начинается с грамотного выбора уровня RAID и его настройки.
Какой уровень RAID выбрать под задачу
Перед тем как запускать mdadm --create, стоит понять, что именно нужно защитить. Три сценария встречаются чаще всего:
RAID 1 — зеркалирование двух дисков. Простой, надёжный, без лишних вычислений. Подходит для системного раздела, БД небольшого объёма, любых критичных данных, где важна скорость восстановления. При отказе одного диска система продолжает работать без остановки.
RAID 5 — минимум три диска, один используется под чётность. Даёт баланс между ёмкостью и отказоустойчивостью. Проблема: при rebuild на современных дисках 4TB+ процесс занимает 10–20 часов, и в этот период нагрузка на оставшиеся диски максимальная. Если второй диск не выдержит — массив потерян.
RAID 10 — зеркало поверх страйпа. Требует минимум четыре диска, но держит отказ одного диска в каждой паре. На высоконагруженных серверах с интенсивной записью это лучший вариант. RAID 10 как минимум в 2 раза быстрее RAID 5 на операциях записи, как показано в нашем benchmark testing.
| Параметр | RAID 1 | RAID 5 | RAID 10 |
|---|---|---|---|
| Минимум дисков | 2 | 3 | 4 |
| Отказоустойчивость | 1 диск | 1 диск | 1 диск в каждой паре |
| Скорость чтения | 2x | N-1 x | 2x |
| Скорость записи | 1x | медленнее (чётность) | 1x |
| Время восстановления | быстро | долго (10-20 ч) | быстро |
| Рекомендуемый сценарий | Система, БД | Хранилище, медиа | Высокая нагрузка |
Уровни RAID определены стандартом SNIA
Как создать RAID массив и не потерять данные
Базовое создание RAID 1 из двух дисков:
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
update-initramfs -uБез этого шага после перезагрузки массив может не собраться автоматически. Симптом: система загружается с degraded массивом или вообще не видит /dev/md0.
Мониторинг состояния:
cat /proc/mdstat mdadm --detail /dev/md0 Для настройки email-оповещений при деградации массива в /etc/mdadm/mdadm.conf добавляется строка MAILADDR [email protected] и включается демон: systemctl enable mdmonitor.
Дополнительные настройки мониторинга
Кроме mdmonitor, можно использовать Prometheus с node_exporter, который экспортирует метрики mdadm в /var/lib/node_exporter/textfile_collector/. Подробнее — в официальной документации.
Почему важен chunk size?
Параметр --chunk влияет на производительность, и его часто игнорируют при быстрой настройке. Для RAID 5/6 с тремя дисками chunk 512K даёт лучший баланс для случайного чтения. Для RAID 10 с большими последовательными записями — 256K. Выбор неправильного чанка может снизить производительность на 30%.
Не менее важно выравнивание разделов. Современные диски с 4K-секторами и SSD требуют выравнивания начала раздела на границу 1MB. Если раздел создаётся через fdisk без явного указания, по умолчанию всё выравнивается правильно. Но на старых системах или при ручном расчёте цилиндров можно получить смещение, которое убьёт производительность вдвое.
Как выполнить горячую замену и rebuild
Добавить запасной диск в массив для автоматической замены при отказе:
mdadm /dev/md0 --add-spare /dev/sdd Отметим: когда диск из массива начинает давать ошибки (S.M.A.R.T. предупреждения, ошибки в dmesg), правильная процедура:
mdadm /dev/md0 --fail /dev/sdb mdadm /dev/md0 --remove /dev/sdb mdadm /dev/md0 --add /dev/sdb Rebuild начнётся автоматически. Прогресс — в /proc/mdstat. Ограничить скорость rebuild, чтобы не класть I/O на продакшене:
echo 50000 > /proc/sys/dev/raid/speed_limit_max Типичные ошибки при самостоятельной настройке
Два момента, которые регулярно встречаются при аудите серверов:
-
Отсутствие mdadm.conf. Массив создан, работает, но конфиг не сохранён. После планового обновления ядра и
update-initfsсистема не подхватила конфигурацию. Итог: сервер поднимается в rescue mode с паникой о missing root device. -
RAID поверх партиций вместо целых дисков. Технически работает, но при замене диска нужно заново разметить раздел с точно такой же геометрией. На практике это лишний шаг, который забывают, и rebuild не стартует из-за несоответствия размеров. Рекомендуем строить RAID поверх целых дисков (
/dev/sdb,/dev/sdc), а уже внутри массива создавать разделы.
Процесс работы
Мы подходим к настройке RAID системно:
- Аудит текущего оборудования и нагрузки — замеряем профиль I/O, определяем критичность.
- Проектирование — выбираем уровень RAID, рассчитываем количество дисков и chunk size.
- Развёртывание — создаём массив с учётом ваших интерфейсов (SATA, SAS, NVMe).
- Тестирование — нагрузочное тестирование
fio, проверка отказа горячей замены. - Мониторинг — настраиваем оповещения через mdmonitor, Prometheus или Zabbix.
Сроки и объём работ
| Задача | Время |
|---|---|
| Создание RAID 1 на работающем сервере без остановки сервисов | 2–4 часа |
| Настройка RAID 5/10 с форматированием и переносом данных | 4–8 часов |
| Аудит существующего RAID, настройка мониторинга и алертов | 2–3 часа |
| Замена деградированного массива с восстановлением | от 4 часов |
Стоимость рассчитывается индивидуально после аудита конфигурации сервера и требований к доступности. Получите консультацию по выбору оптимального уровня RAID и настройке мониторинга. Свяжитесь с нами — поможем избежать деградации и простоев.







