Вики / Хранилище и ФС
mdadm (программный RAID)
Software RAID в Linux — создание массива, статус, замена диска.
mdadm собирает несколько дисков в RAID-массив (/dev/md0) средствами ядра.
Зачем: отказоустойчивость (RAID1/5/6) или скорость (RAID0).
Уровни кратко: RAID0 — полоса (быстро, без избыточности), RAID1 — зеркало, RAID5/6 — чётность (переживает 1/2 диска). Поверх массива — ФС (filesystems) или LVM.
cat /proc/mdstat # статус всех массивов (главная команда!)
sudo mdadm --detail /dev/md0 # подробности массива
lsblk # дерево устройств
# зеркало из двух дисков:
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc
# RAID5 из трёх + горячий резерв:
sudo mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sd{b,c,d} --spare-devices=1 /dev/sde
sudo mkfs.ext4 /dev/md0
# сохранить конфигурацию (чтобы собирался при загрузке):
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
sudo update-initramfs -u
cat /proc/mdstat # какой диск выпал ([_U] / [U_])
sudo mdadm /dev/md0 --fail /dev/sdc --remove /dev/sdc # пометить и убрать сбойный
# заменить физически, затем добавить новый:
sudo mdadm /dev/md0 --add /dev/sdc
watch cat /proc/mdstat # следить за ребилдом (recovery)
# добавить диск и расширить массив (RAID5):
sudo mdadm --add /dev/md0 /dev/sdf
sudo mdadm --grow /dev/md0 --raid-devices=4
# затем растянуть ФС поверх (resize2fs/xfs_growfs, см. filesystems)
sudo mdadm --stop /dev/md0 # остановить ; --assemble --scan — собрать
sudo mdadm --zero-superblock /dev/sdX # стереть метаданные RAID с диска (переиспользовать)
sudo mdadm --monitor --scan --daemonise # шлёт письма при сбоях
# адрес: MAILADDR в /etc/mdadm/mdadm.conf (см. postfix)
sudo mdadm --detail /dev/md0 | grep -E 'State|Failed|Active'
Массив degraded ([_U])
Диск выпал. /proc/mdstat и mdadm --detail покажут какой. Замени и --add — пойдёт
ребилд. Не тяни: при RAID1/5 второй сбой = потеря данных.
Не собирается после ребута
Конфиг не сохранён. mdadm --detail --scan >> /etc/mdadm/mdadm.conf +
update-initramfs -u. Собрать вручную: mdadm --assemble --scan.
Ребилд идёт вечно/медленно
Нормально для больших дисков (часы). Скорость — /proc/sys/dev/raid/speed_limit_*
(см. sysctl). Не выключай питание во время ребилда.
RAID — не бэкап!
RAID спасает от отказа диска, но не от удаления/шифровальщика/ошибки. Делай бэкапы (restic/rsync/tar) отдельно.
Диск был в старом массиве, не даёт пересоздать
Остались метаданные: sudo mdadm --zero-superblock /dev/sdX.
cat /proc/mdstat # статус (degraded? ребилд?)
sudo mdadm --detail /dev/md0
sudo mdadm /dev/md0 --fail /dev/sdX --remove /dev/sdX ; --add /dev/sdY # замена
sudo mdadm --grow /dev/md0 --raid-devices=N # расширить
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf # сохранить
См. также
- Место на диске (df, du, inode) — Хранилище и ФС
- LVM (логические тома) — Хранилище и ФС
- Файловые системы (ext4, xfs, fsck) — Хранилище и ФС