Введение
В предыдущих статьях рубрики мы разбирали теорию уровней RAID и работу с аппаратными контроллерами LSI через StorCLI. Но далеко не на каждом сервере есть отдельный RAID-контроллер и в этом случае на помощь приходит программный RAID, реализованный средствами самой операционной системы. В Linux для этого используется утилита mdadm (Multiple Disk Administration) стандартный инструмент управления программными RAID-массивами (Multiple Device, /dev/md*), входящий в состав ядра Linux и большинства дистрибутивов.
В этой статье пошагово разберём, как установить mdadm, создать массивы RAID 1, RAID 5 и RAID 10, сохранить конфигурацию, смонтировать массив и проверять его состояние.
Официальная документация проекта Linux Software RAID (mdadm), поддерживаемая сообществом ядра Linux, доступна по адресу: raid.wiki.kernel.org.
Чем программный RAID отличается от аппаратного

В программном RAID всю логику массива (распределение данных, вычисление чётности, отслеживание состояния дисков) берёт на себя центральный процессор сервера под управлением утилиты mdadm, а не отдельный чип на RAID-контроллере. У такого подхода есть свои плюсы и минусы:
Плюсы mdadm:
- Не требует покупки отдельного RAID-контроллера можно использовать самые обычные SATA/SAS-порты материнской платы.
- Гибкая настройка и подробная диагностика прямо из командной строки Linux.
- Массив не привязан к конкретной модели контроллера диски можно перенести на любой сервер с Linux и собрать массив заново.
Минусы mdadm:
- Вычисление чётности (для RAID 5/6) нагружает процессор сервера, а не выделенный чип контроллера.
- Нет батарейки резервного питания кэша (BBU), как у многих аппаратных контроллеров при внезапном отключении питания есть риск потери данных из кэша записи.
Подготовка: установка mdadm
Утилита mdadm доступна в репозиториях всех основных дистрибутивов Linux.
Debian / Ubuntu:
bash
sudo apt update
sudo apt install mdadm
RHEL / CentOS / AlmaLinux / Rocky Linux:
bash
sudo dnf install mdadm
Проверить, что утилита установлена, можно командой:
bash
mdadm --version
Важно: перед созданием массива определите, с какими дисками будете работать, и убедитесь, что на них нет нужных данных создание RAID-массива уничтожит всю информацию на выбранных дисках. Посмотреть список дисков в системе можно командой
lsblkилиsudo fdisk -l.
Создание массива RAID 1 (зеркало)
Для примера используем два диска /dev/sdb и /dev/sdc.
bash
sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc
Разберём команду:
-
--create /dev/md0— создать новое устройство массива с именем/dev/md0. -
--level=1— уровень RAID (в данном случае RAID 1). -
--raid-devices=2— количество дисков в массиве. -
/dev/sdb /dev/sdc— сами диски, из которых собирается массив.
После запуска команды начнётся синхронизация (создание зеркальной копии данных) на дисках большого объёма это может занять продолжительное время, но сам массив уже доступен для использования во время синхронизации.
Создание массива RAID 5
Для RAID 5 требуется минимум три диска используем /dev/sdb, /dev/sdc и /dev/sdd.
bash
sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd
Если хотите сразу добавить в массив резервный диск (spare), который автоматически подключится при отказе одного из основных, укажите его через --spare-devices:
bash
sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd --spare-devices=1 /dev/sde
Создание массива RAID 10
Для RAID 10 нужно чётное количество дисков, минимум четыре:
bash
sudo mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/sdb /dev/sdc /dev/sdd /dev/sde
Если хочется тонко управлять раскладкой (near, far, offset layout) для RAID 10, можно задать её отдельным параметром --layout по умолчанию используется n2 (near layout с двумя копиями), что подходит для большинства сценариев.
Проверка состояния массива
Самый быстрый способ посмотреть статус всех массивов прочитать файл /proc/mdstat:
bash
cat /proc/mdstat
Более подробную информацию по конкретному массиву даёт команда:
bash
sudo mdadm --detail /dev/md0
Она покажет уровень RAID, состояние (clean, active, degraded и т.д.), список дисков массива и их роль (active, spare, faulty), а также прогресс синхронизации, если она ещё не завершена.
Создание файловой системы и монтирование массива
После того как массив создан, на нём нужно создать файловую систему и смонтировать его, как обычный раздел:
bash
sudo mkfs.ext4 /dev/md0
sudo mkdir -p /mnt/raid
sudo mount /dev/md0 /mnt/raid
Чтобы массив автоматически монтировался при перезагрузке сервера, добавьте запись в /etc/fstab. Сначала узнайте UUID массива:
bash
sudo blkid /dev/md0
Затем добавьте в /etc/fstab строку вида:
UUID=ваш-uuid /mnt/raid ext4 defaults 0 2
Сохранение конфигурации массива
Это один из самых важных и часто забываемых шагов: без сохранения конфигурации массив может не собраться автоматически после перезагрузки сервера.
bash
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
На RHEL-подобных дистрибутивах файл конфигурации обычно находится по пути /etc/mdadm.conf. После обновления файла конфигурации нужно обновить initramfs, чтобы массив собирался ещё на этапе загрузки системы:
Debian / Ubuntu:
bash
sudo update-initramfs -u
RHEL / CentOS / AlmaLinux / Rocky Linux:
bash
sudo dracut -f
Что делать при отказе диска
Если один из дисков массива вышел из строя, mdadm пометит его как faulty. Порядок действий:
- Убедитесь, что диск действительно отказал:
bash
sudo mdadm --detail /dev/md0
- Пометьте диск как отказавший (если это ещё не произошло автоматически) и удалите его из массива:
bash
sudo mdadm /dev/md0 --fail /dev/sdc
sudo mdadm /dev/md0 --remove /dev/sdc
- Физически замените диск (при поддержке hot-swap это можно сделать без выключения сервера общие принципы такой замены разобраны в статье «Диагностика и замена дисков в RAID-массиве без остановки сервера», хотя там речь об аппаратных контроллерах, сама логика горячей замены дисков схожа).
- Добавьте новый диск в массив — начнётся автоматический ребилд:
bash
sudo mdadm /dev/md0 --add /dev/sdc
- Следите за прогрессом восстановления через
cat /proc/mdstat.
Полезные команды mdadm: шпаргалка
| Команда | Что делает |
|---|---|
cat /proc/mdstat | Быстрый статус всех массивов |
sudo mdadm --detail /dev/md0 | Подробная информация по массиву |
sudo mdadm --stop /dev/md0 | Остановить (разобрать) массив |
sudo mdadm --assemble --scan | Собрать все массивы из конфигурации |
sudo mdadm /dev/md0 --fail /dev/sdX | Пометить диск как отказавший |
sudo mdadm /dev/md0 --remove /dev/sdX | Удалить диск из массива |
sudo mdadm /dev/md0 --add /dev/sdX | Добавить диск в массив (например, после замены) |
sudo mdadm --detail --scan | Вывести конфигурацию массива для записи в mdadm.conf |
Частые вопросы
Можно ли использовать mdadm вместе с аппаратным RAID-контроллером? Технически можно создать программный массив поверх логических дисков контроллера, но это усложняет диагностику и обычно не рекомендуется. Как правило, выбирают либо полностью аппаратный, либо полностью программный подход.
Нагружает ли mdadm процессор сервера? Да, особенно уровни с вычислением чётности (RAID 5, RAID 6) чем больше объём операций записи, тем выше нагрузка на CPU. На современных серверных процессорах это обычно не критично, но стоит учитывать при планировании нагруженных систем.
Что произойдёт с массивом mdadm, если перенести диски на другой сервер? Информация о массиве хранится в служебной области (суперблоке) на самих дисках, поэтому диски можно перенести на другой сервер с Linux и собрать массив заново командой mdadm --assemble --scan конкретный контроллер или материнская плата для этого не требуются.
Как узнать, что синхронизация или ребилд массива завершены? В файле /proc/mdstat во время синхронизации отображается процент выполнения и оценка оставшегося времени; когда процесс завершится, эта строка исчезнет, а состояние массива в mdadm --detail изменится на clean.
Заключение
mdadm надёжный и гибкий инструмент для организации программного RAID в Linux, который не требует отдельного оборудования и полностью управляется из командной строки. Главное не забывать сохранять конфигурацию массива в mdadm.conf после создания и обновлять initramfs, чтобы массив корректно собирался при каждой загрузке сервера. В следующих статьях рубрики разберём восстановление массива mdadm после серьёзных сбоев и изменение размера (grow) уже существующего массива без потери данных.
Читайте также в рубрике RAID на andko.ru
- Что такое RAID: уровни 0, 1, 5, 6, 10 — объяснение для новичков
- RAID 5 vs RAID 6 vs RAID 10: что выбрать для сервера
- Диагностика и замена дисков в RAID-массиве без остановки сервера
- StorCLI: команды для управления RAID-контроллером LSI






