Июн 192025
 

Подготовка дисков, очистка от старых метаданных:

mdadm --zero-superblock --force /dev/sdX
wipefs --all --force /dev/sdX

Создание рейда

Для сборки зеркала RAID1 применяем следующую команду:

mdadm --create --verbose /dev/md0 -l 1 -n 2 /dev/sd{X,Y}

где:
/dev/md0 — устройство RAID, которое появится после сборки;
-l 1 — уровень RAID;
-n 2 — количество дисков, из которых собирается массив;
/dev/sdX,Y} — сборка выполняется из дисков sdX и sdY.

Создание файла конфигурации mdadm.conf

В файле mdadm.conf находится информация о RAID-массивах и компонентах, которые в них входят.
Для его создания выполняем следующие команды:

mkdir /etc/mdadm
echo "DEVICE partitions" > /etc/mdadm/mdadm.conf
mdadm --detail --scan --verbose | awk '/ARRAY/ {print}' >> /etc/mdadm/mdadm.conf

Обновить загрузочный образ:

update-initramfs -u

Далее форматируем md0 в нужную ФС и монтируем.

Проверка целостности

Для проверки целостности вводим:

echo 'check' > /sys/block/md0/md/sync_action

Результат проверки смотрим командой:

cat /sys/block/md0/md/mismatch_cnt

Если команда возвращает 0, то с массивом все в порядке.
Остановка проверки:

echo 'idle' > /sys/block/md0/md/sync_action

Замена диска

В случае выхода из строя одного из дисков массива, команда cat /proc/mdstat покажет следующее:

cat /proc/mdstat

Personalities : [raid1] 
md0 : active raid1 sdb[0]
      1046528 blocks super 1.2 [2/1] [U_]

О наличии проблемы нам говорит нижнее подчеркивание вместо U — [U_] вместо [UU].
Или:

mdadm -D /dev/md0

...
       Update Time : Thu Mar  7 20:20:40 2019
             State : clean, degraded
...

Статус degraded говорит о проблемах с RAID.

Восстановление RAID

Для восстановления, сначала удалим сбойный диск, например:

mdadm /dev/md0 --remove /dev/sdc

Если нам нужно заменить диск, но при этом он в mdadm имеет рабочее состояние, мы получим ошибку:

    ... device or resource busy

Сначала, нам нужно пометить диск как сбойный:

mdadm /dev/md0 --manage --fail /dev/sdc

В данном примере диск sdb массива md0 будет помечен сбойным.
Теперь удаляем:

mdadm /dev/md0 --remove /dev/sdc

Теперь добавим новый:

mdadm /dev/md0 --add /dev/sde

Смотрим состояние массива:

mdadm -D /dev/md0

...
       Update Time : Thu Mar  7 20:57:13 2019
             State : clean, degraded, recovering
...
    Rebuild Status : 40% complete
...

Recovering говорит, что RAID восстанавливается; Rebuild Status — текущее состояние восстановления массива (в данном примере он восстановлен на 40%).
Если синхронизация выполняется слишком медленно, можно увеличить ее скорость. Для изменения скорости синхронизации вводим:

echo '10000' > /proc/sys/dev/raid/speed_limit_min

По умолчанию скорость speed_limit_min = 1000 Кб, speed_limit_max — 200000 Кб. Для изменения скорости, можно поменять только минимальную.
Пересборка массива
Если нам нужно вернуть ранее разобранный или развалившийся массив из дисков, которые уже входили в состав RAID, вводим:

mdadm --assemble --scan

Данная команда сама найдет необходимую конфигурацию и восстановит RAID.
Также, мы можем указать, из каких дисков пересобрать массив:

mdadm --assemble /dev/md0 /dev/sdb /dev/sdc

Запасной диск (Hot Spare)

Если в массиве будет запасной диск для горячей замены, при выходе из строя одного из основных дисков, его место займет запасной.
Диском Hot Spare станет тот, который просто будет добавлен к массиву:

mdadm /dev/md0 --add /dev/sdd

Информация о массиве изменится, например:

mdadm -D /dev/md0

...
    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       2       8       48        1      active sync   /dev/sdc

       3       8       32        -      spare   /dev/sdd

Проверить работоспособность резерва можно вручную, симулировав выход из строя одного из дисков:

mdadm /dev/md0 --fail /dev/sdb

И смотрим состояние:

mdadm -D /dev/md0

...
    Rebuild Status : 37% complete
...
    Number   Major   Minor   RaidDevice State
       3       8       32        0      spare rebuilding   /dev/sdd
       2       8       48        1      active sync   /dev/sdc

       0       8       16        -      faulty   /dev/sdb
...

Как видим, начинается ребилд. На замену вышедшему из строя sdb встал hot-spare sdd.

Добавить диск к массиву

В данном примере рассмотрим вариант добавления активного диска к RAID, который будет использоваться для работы, а не в качестве запасного.
Добавляем диск к массиву:

mdadm /dev/md0 --add /dev/sde

Новый диск мы увидим в качестве spare:

4       8       16        -      spare   /dev/sde

Теперь расширяем RAID:

mdadm -G /dev/md0 --raid-devices=3

В данном примере подразумевается, что у нас RAID 1 и мы добавили к нему 3-й диск.

Удаление массива

При удалении массива внимателнее смотрите на имена массива и дисков и подставляйте свои значения.
Если нам нужно полностью разобрать RAID, сначала размонтируем и остановим его:

umount /mnt

Где /mnt — каталог монтирования нашего RAID.
Если мы получим ошибку umount: /mnt: target is busy, то смотрим пользовательские процессы, которые мешают отмонтировать раздел:

fuser -vm /mnt

И останавливаем их.

mdadm -S /dev/md0

Где /dev/md0 — массив, который мы хотим разобрать.
Если мы получим ошибку mdadm: fail to stop array /dev/md0: Device or resource busy, с помощью команды

lsof -f -- /dev/md0

… смотрим процессы, которые используют раздел и останавливаем их.
Затем очищаем суперблоки на всех дисках, из которых он был собран:

mdadm --zero-superblock /dev/sdb
mdadm --zero-superblock /dev/sdc
mdadm --zero-superblock /dev/sdd

Где диски /dev/sdb, /dev/sdc, /dev/sdd были частью массива md0.