热备盘是登记为待命状态的备用硬盘,不参与日常读写,仅在成员盘故障时自动顶替重建;mdadm支持随时用--add命令安全添加空闲磁盘为热备盘,操作无需停机,但需更新/etc/mdadm.conf并刷新initramfs以确保重启后生效。

mdadm 不支持把一块盘“动态加入”正在运行的 RAID 5 阵列作为数据成员(即不能像扩容那样增加 --raid-devices),但可以随时将空闲磁盘添加为热备盘(hot spare)。这个操作安全、无需停机,且立即生效。
确认当前阵列状态与目标磁盘
先确保 RAID 正常运行,且你有一块未分区、未挂载、无文件系统的空闲磁盘(如 /dev/sde):
- 查看阵列:`cat /proc/mdstat` 或 `sudo mdadm --detail /dev/md0`
- 确认目标盘干净:`sudo fdisk -l /dev/sde` 应无分区表;`mount | grep sde` 应无输出
- 检查是否已有热备盘:输出中 “Spare Devices : 1” 表示已存在,若为 0 则可添加
执行热备盘添加命令
使用 --add 模式(非 --create),直接将设备添加进阵列管理范围:
- 添加单块热备盘:
sudo mdadm /dev/md0 --add /dev/sde - 添加后立即验证:
sudo mdadm --detail /dev/md0→ 查看 “Spare Devices” 数量是否+1,且新盘状态为 spare - 注意:该操作不触发重建,只是注册;只有当某块活动盘标记为 failed 后,热备盘才会自动激活并开始同步
让热备配置持久化(重启后仍有效)
仅执行 --add 是临时的,系统重启后会丢失。必须更新配置文件:
- 生成当前完整配置:
sudo mdadm --detail --scan >> /etc/mdadm.conf(或覆盖写入:sudo mdadm --detail --scan | sudo tee /etc/mdadm.conf) - 确认文件中包含类似行:
ARRAY /dev/md0 level=raid5 num-devices=3 spares=1 metadata=1.2 name=localhost:0 UUID=xxx - 某些发行版(如 Debian/Ubuntu)还需更新 initramfs:
sudo update-initramfs -u,否则启动时可能无法识别热备盘
验证热备盘是否真正就位
最可靠的方式是模拟一次故障,观察热备是否自动接管:
- 手动标记一块活动盘为故障:
sudo mdadm /dev/md0 --fail /dev/sdb1 - 立刻执行
cat /proc/mdstat:应看到状态变为 recovery,且原 spare 盘(如 /dev/sde1)出现在重建设备列表中 - 重建完成后,再用
mdadm --detail /dev/md0确认其已转为 active sync 状态











