关键不是换盘本身,而是严格遵循标记→移除→替换→重建四步顺序:先cat /proc/mdstat和mdadm --detail定位故障盘,再--fail标记、--remove移除,新盘分区设为Linux RAID auto类型后--add加入,重建完成确认active sync并更新mdadm.conf。

更换 Linux 软 RAID 阵列中的故障硬盘,关键不是换盘本身,而是严格遵循 标记 → 移除 → 替换 → 重建 的四步顺序。整个过程支持热插拔,RAID1/5/6/10 均可在业务不中断前提下完成,但跳步或误操作(比如未标记直接拔盘)可能导致阵列降级失败甚至数据异常。
确认哪块盘真正故障
不能凭指示灯或直觉判断。必须通过系统状态交叉验证:
- 运行
cat /proc/mdstat:查看是否有(F)标记、faulty或failed字样,注意对应设备名(如/dev/sdc1) - 执行
mdadm --detail /dev/md0(把md0换成你的阵列名):明确看到某设备状态为failed或Faulty,且出现在Number列中 - 查日志辅助确认:
sudo journalctl -u mdadm.service | grep -i "fail\|error",看报错是否持续指向同一设备
主动标记并安全移除故障盘
这一步是保障数据安全的核心——让内核停止向该盘写入,避免脏数据污染:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- 标记为故障:
sudo mdadm --manage /dev/md0 --fail /dev/sdc1(立即进入 degraded 状态,但仍在运行) - 紧接着移除:
sudo mdadm --manage /dev/md0 --remove /dev/sdc1(设备应从Active Devices中消失,Failed Devices归零) - 再次
mdadm --detail /dev/md0确认该盘显示为removed,其余盘仍保持active sync
准备新盘并加入阵列
新硬盘必须分区并设为 RAID 成员类型,否则 mdadm 会拒绝识别:
- 用
fdisk /dev/sdc(或gdisk)创建分区(如/dev/sdc1) - 在
fdisk中输入t→fd(设为 Linux RAID auto 类型);若用gdisk,则输入t→fd00 - 保存退出后,运行
sudo partprobe /dev/sdc让内核重读分区表 - 加入阵列:
sudo mdadm --manage /dev/md0 --add /dev/sdc1(此时/proc/mdstat会显示recovery或spare rebuilding)
等待重建完成并固化配置
重建时间取决于阵列大小与系统负载,期间严禁强制中断、重复加盘或重启:
- 持续观察
cat /proc/mdstat:直到状态变为active sync且无recovery字样 - 运行
mdadm --detail /dev/md0确认所有设备状态为active sync,整体State回到clean - 更新配置文件:
sudo mdadm --detail --scan >> /etc/mdadm.conf(覆盖或追加,确保内容准确) - 若使用 systemd,建议执行
sudo dracut -f更新 initramfs,防止重启后阵列无法自动装配










