先标记故障盘再移除,随后添加新盘并重建;通过cat /proc/mdstat查(f)或[u_]、mdadm --detail看state为faulty、smartctl检查smart异常来确认坏盘。

能换,但不能直接拔掉坏盘就插新盘——必须先标记故障盘、移除它,再添加新盘并重建阵列,否则可能丢数据或阵列降级失败。
怎么确认哪块盘坏了
软RAID(mdadm)不会自动报警,得自己查。常见现象是系统日志报错、/proc/mdstat 显示 faulty 或 removed,或者某块盘读写卡顿甚至 SMART 报告异常。
- 运行
cat /proc/mdstat,看是否有[U_](下划线代表缺失设备)或F标记 - 用
mdadm --detail /dev/md0查各成员状态,重点关注State :行,出现faulty就是它 - 配合
smartctl -a /dev/sdX检查物理盘健康,Reallocated_Sector_Ct或Current_Pending_Sector非零要警惕
怎么安全移除故障盘
别直接关机拔盘!Linux 软RAID 支持热替换,但前提是阵列还在运行(至少是降级状态)。移除前必须让 mdadm “忘记”这块盘,否则重建时可能误认旧设备。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 先标记为故障:
mdadm --fail /dev/md0 /dev/sdb1(把/dev/sdb1设为faulty) - 再从阵列中移除:
mdadm --remove /dev/md0 /dev/sdb1 - 验证是否成功:再次
mdadm --detail /dev/md0,确认该设备已不在Number Major Minor RaidDevice State列表里 - 此时才能物理拔掉硬盘(如果支持热插拔),或关机更换
怎么加新盘并启动重建
新盘不一定要和旧盘完全同型号,但容量不能小于原盘(否则重建会失败),且分区类型、大小建议保持一致(避免 mdadm 拒绝加入)。
- 新盘插入后,用
lsblk或fdisk -l确认设备名(如/dev/sdc) - 若需分区,用
fdisk /dev/sdc创建一个主分区(类型设为fd Linux raid autodetect),然后partprobe刷新 - 加入阵列:
mdadm --add /dev/md0 /dev/sdc1 - 立即触发重建:
echo check > /sys/block/md0/md/state或等它自动开始(/proc/mdstat会显示recovery进度)
重建期间要注意什么
重建不是后台静默任务——它会显著占用 I/O 和 CPU,系统响应变慢是正常的;更关键的是,这期间如果另一块盘出问题,整个阵列就彻底完蛋。
- 别在重建时做大量写操作,尤其是数据库或虚拟机磁盘直通场景
- 用
ionice -c3降低重建优先级(如ionice -c3 mdadm --grow /dev/md0 --backup-file /tmp/md0.bak)可缓解影响 - 监控进度:
watch -n1 cat /proc/mdstat,注意有没有speed=值突然归零或报resync=DELAYED - 重建完成后,记得更新
/etc/mdadm.conf(或/etc/mdadm/mdadm.conf)并运行update-initramfs -u(Debian/Ubuntu)或dracut -f(RHEL/CentOS),否则重启可能无法自动装配阵列
最容易被忽略的是最后一步:配置文件没更新、initramfs 没重生成。机器重启后发现 /dev/md0 消失,往往不是硬件问题,而是这个环节漏了。










