用mdadm --fail可安全模拟硬盘故障,触发raid降级与热备自动接管:标记设备为faulty后,阵列状态变为degraded,active devices减1、failed devices加1,/proc/mdstat显示(f)标记,dmesg记录故障及热备替换日志,重建自动启动。

用 mdadm --fail 模拟硬盘故障,是验证软RAID降级与热备盘自动接管能力最贴近真实场景的方式。它不切断电源、不拔线,仅通过内核通知标记设备失效,却能完整触发状态切换、日志记录、热备启动等关键逻辑。
确认阵列基础状态再动手
操作前必须摸清当前结构,避免误标非成员盘或对错误设备执行命令:
- 运行
cat /proc/mdstat查看阵列整体运行状态(如md0 : active raid5 sdb1[0] sdc1[1] sdd1[2] sde1[3]) - 执行
mdadm --detail /dev/md0核实 RAID 级别、活动设备数、热备盘是否存在(Spare Devices : 1),并确认目标盘(如/dev/sdb1)确实在 Active Devices 列表中 - 检查热备盘是否已就位且未被占用:
mdadm --examine /dev/sde1(假设热备为 sde1)应显示Array Role : spare
用 --fail 主动标记故障盘
该命令向 md 子系统发送“设备不可用”信号,效果等同于硬盘突然离线,但全程可控、可逆:
- 执行
mdadm /dev/md0 --fail /dev/sdb1(替换为你的阵列名和目标分区) - 成功后无输出,立即生效:该设备状态变为
faulty,阵列进入degraded状态 - 禁止对正在重建中的设备使用 --fail;RAID1 只有两块盘时慎用,否则阵列将完全失效
观察降级与热备接管的实时反馈
系统会在多个层面同步响应,这是验证逻辑是否正确的关键证据:
-
mdadm --detail /dev/md0中出现:State : clean, degraded、Active Devices : 2(原为3)、Failed Devices : 1,对应行显示faulty /dev/sdb1 -
/proc/mdstat显示类似md0 : active raid5 sdb1[0](F) sdc1[1] sdd1[2] sde1[3](S),其中(F)表示故障,(S)表示热备已就绪;若热备已启动替换,会看到sde1[4]这样的新编号及[UUU_]→[UUU]的变化 -
dmesg | tail -5可捕获内核日志:md/raid:md0: Disk failure on sdb1, disabling device.以及后续md/raid:md0: replacing faulty device sdb1 with spare sde1
验证读写可用性与重建过程
降级不是终点,而是容错能力的临界点,需确认业务连续性与恢复机制是否正常:
- 阵列仍可读写(RAID5/6 允许单盘故障),但性能下降、不再具备冗余——此时再坏一块盘即数据丢失
- 若配置了热备盘,通常在 2–10 秒内自动开始重建;用
watch -n1 'cat /proc/mdstat'实时观察recovery = 12.4%进度条 - 重建期间可继续 I/O,但建议避免大压力写入;完成后
State恢复为clean,Failed Devices归零,热备盘状态变回spare - 如需手动清理故障盘:
mdadm /dev/md0 --remove /dev/sdb1(移除后该设备才可安全重分区或更换)











