mdadm (Multiple Disk Admin) — утилита командной строки для управления программным RAID в Linux. Входит в стандартные репозитории всех основных дистрибутивов. Программный RAID через mdadm работает на уровне ядра через драйвер md: для хостинга не требуется специальный контроллер.
Как работает
Создание RAID 1 (зеркало) из двух дисков:
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
RAID-массив представляется как обычное блочное устройство /dev/md0 — на него создаётся файловая система как обычно. Конфигурация сохраняется в /etc/mdadm/mdadm.conf. Статус массива: cat /proc/mdstat.
При сбое диска mdadm переводит массив в degraded-режим: RAID 1 продолжает работу с одним диском. После замены неисправного диска выполняется rebuild: mdadm /dev/md0 --add /dev/sdc1. Время rebuild RAID 1 для диска 2 ТБ — 4–8 часов.
Уровни RAID
- RAID 0 — striping, скорость, нет избыточности. Потеря одного диска = потеря всего.
- RAID 1 — mirror, 2 копии на 2 дисках. Ёмкость = 50%.
- RAID 5 — striping + parity, min 3 диска. Ёмкость = N-1.
- RAID 6 — striping + double parity, min 4 диска. Выдерживает отказ 2 дисков.
- RAID 10 — зеркало + striping. min 4 диска, высокая производительность и надёжность.
Связь с хостингом
На выделенных серверах без аппаратного RAID mdadm — основной инструмент защиты данных от сбоя диска. На VPS mdadm не применяется — провайдер сам обеспечивает RAID на хосте. При заказе выделенного сервера без аппаратного RAID-контроллера mdadm RAID 1 — минимальный уровень защиты данных.
Создание RAID через mdadm
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc — RAID 1 из двух дисков. cat /proc/mdstat — статус синхронизации. После создания: добавить в /etc/mdadm/mdadm.conf, обновить initramfs. Время синхронизации RAID 1 из 1 ТБ дисков — 2–4 часа.
Управление RAID
mdadm --detail /dev/md0 — статус массива. Добавление диска: mdadm --add /dev/md0 /dev/sdd. Горячая замена при отказе: помечается как faulty, добавляется новый. Hot spare: диск в резерве, автоматически включается при отказе основного.
Программный vs аппаратный RAID
mdadm бесплатен, надёжен для RAID 1/5/10. Недостаток: нагрузка на CPU (небольшая, 1–3%). При отказе материнской платы — массив читается на любом Linux с mdadm. Аппаратный RAID-контроллер с BBU надёжнее при потере питания во время записи.
mdadm в Ubuntu/Debian
Установка: apt install mdadm. После создания: mdadm --detail --scan >> /etc/mdadm/mdadm.conf. Обновление initramfs: update-initramfs -u — без этого RAID не подключится при загрузке. Zabbix: userparameter для мониторинга mdadm --detail /dev/md0.
RAID и производительность записи
RAID 5 write penalty: каждая запись требует чтение + XOR + 2 записи = 4 операции vs 1. Для write-heavy нагрузки: RAID 10 предпочтительнее. RAID 6: ещё медленнее при записи (6 операций). SSDs частично компенсируют penalty за счёт параллелизма и низкой latency.
mdadm создаёт программный RAID 1, RAID 5, RAID 10 на Ubuntu и Debian. Для дисков используют SATA SSD или NVMe. Мониторинг через системы мониторинга. Полезен при отсутствии аппаратного RAID-контроллера.