首页/系统/服务器硬件与 RAID 速查/mdadm 换盘与重建操作
RAID 级别与计算68 条

mdadm 换盘与重建操作

故障盘的标准处置动作:标记 fail、移除、物理更换、添加新盘,之后内核自动开始重建;同时给出热备顶替与擦除旧盘标记的参数。

软 RAID 换盘流程

md 阵列的换盘动作是一串可查证的命令:先用 --fail 把坏盘标记为故障,再用 --remove 从阵列中移除,物理更换后在 --add 新盘,内核会自动开始重建。这套流程的好处是每一步都有明确的状态可查,出错时可以停下来核对;代价是必须先确认设备名与物理盘位的对应关系,否则一条 --remove 可能把好盘踢出阵列,让本来还有容错的阵列彻底失去冗余。

标准换盘流程

标准换盘流程
cat /proc/mdstat                                  # 先看当前阵列状态
lsblk -o NAME,SERIAL,MODEL,SIZE                   # 核对设备名与序列号对应关系
mdadm /dev/md0 --fail /dev/sdc1 --remove /dev/sdc1 # 标记故障并移除
# 物理更换新盘后:
mdadm /dev/md0 --add /dev/sdd1                     # 加入新盘
watch -n5 cat /proc/mdstat                         # 观察 recovery 进度

清掉旧盘残留标记

清掉旧盘残留标记
mdadm --zero-superblock /dev/sdc1     # 抹掉 md 的 superblock 标记
wipefs -a /dev/sdc                    # 清掉全部分区与文件系统签名
blkid /dev/sdc                        # 确认已无任何残留签名

操作要点

顺序先 fail 再 remove,最后 add;顺序颠倒会出现状态不一致
设备名核对用 lsblk 的 SERIAL 与物理盘位比对,别只按 sdX 猜
热备顶替已配热备时阵列会自动用热备重建,故障盘仍需手动移除
新盘要求容量不小于原盘,且不能残留其他阵列的元数据
重建进度/proc/mdstat 中显示 recovery 百分比与预计完成时间

常见动作与后果

动作作用风险
--fail标记盘为故障对健康盘执行会让冗余提前消失
--remove从阵列移除该盘误移除会继续降级,甚至丢失数据
--add加入盘并触发重建盘上残留元数据时可能被拒绝或产生冲突
--zero-superblock抹掉阵列标记对在用成员盘执行等于毁掉它的阵列信息
--re-add把刚恢复的盘放回仅适用于位图一致的情况,不适用于新盘

换盘后的收尾

  • 确认阵列状态回到 clean 且成员数为 N/N,重建进度跑完
  • 把新盘序列号登记进台账,替换旧盘记录
  • 重置阵列位图(如启用)避免后续重建全量重跑
  • 重建期压低业务负载,必要时调整同步速率上限
确认物理盘位与设备名的对应关系(序列号)后再执行 --remove;换错盘会让阵列继续降级,甚至直接在降级状态下失去全部冗余。

易错点

  • 新盘容量小于原盘会被拒绝加入;容量相等但型号差异大也不建议加入,性能会按最慢盘走
  • 热备自动顶替后忘记移除故障盘:槽位长期挂着失效盘,后续识别与台账都会混乱
  • 不核对序列号只按设备名操作:盘序在重启后可能变化,误移除好盘的代价极高
  • 在重建期间做其他高风险操作(扩容、改条带、系统升级):重建期没有冗余,一次意外就是全损
  • 换完不做收尾登记:下次故障时台账与现场不一致,排查要多绕一圈

数据来源与参考

  • man 8 mdadm(--fail/--remove/--add)
  • Red Hat 存储管理指南
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌