Подготовка дисков, очистка от старых метаданных:
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.