软 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;换错盘会让阵列继续降级,甚至直接在降级状态下失去全部冗余。