md 换盘是什么
md 是 Linux 内核的软 RAID 实现,换盘流程完全在命令行完成:先确认故障盘与阵列的对应关系,把故障盘标记为失效并移出阵列,物理更换后把新盘加入,内核会自动开始重建。整个流程可以脚本化,适合批量标准化;风险点在于新盘的分区大小、超级块残留与设备名漂移,处理前都要核对。
基本信息
| 适用平台 | Linux 内核 md/raid,配合 mdadm 工具 |
|---|---|
| 新盘要求 | 容量不小于原成员分区,建议同扇区格式同规格 |
| 分区要求 | 新盘需建立与原分区大小一致的分区,或直接使用整盘设备 |
| 完成标志 | /proc/mdstat 中成员数恢复且不再有 recovery 或 reshape 行 |
标准流程
标准流程
cat /proc/mdstat # 确认降级与成员状态
mdadm --detail /dev/md0 | grep -i -E "faulty|/dev/sd" # 定位故障盘
mdadm /dev/md0 --fail /dev/sdc1 --remove /dev/sdc1 # 摘除故障盘
# 物理更换后:
mdadm --zero-superblock /dev/sdc1 # 清除新盘残留超级块
mdadm /dev/md0 --add /dev/sdc1 # 加入新盘
watch -n 30 cat /proc/mdstat # 观察重建进度换盘前后检查
| 阶段 | 检查项 | 目的 |
|---|---|---|
| 换盘前 | 阵列组成与故障盘位置 | 确认摘除对象,避免误摘健康盘 |
| 换盘前 | 数据备份状态 | 降级期间再坏一块将不可恢复 |
| 换盘中 | 新盘分区与超级块 | 避免加入失败或带入旧阵列元数据 |
| 换盘后 | 重建进度与业务延迟 | 确认重建正常推进且业务未受明显影响 |
典型使用场景
- 单盘故障:标记失效并更换,由内核自动重建
- 预测性故障:盘还能用但已告警,主动更换避免突发掉盘
- 批量标准化:把流程写成脚本,统一各机房的换盘动作
- 容量升级:借换盘机会替换为容量更大的盘,再考虑后续扩容
- 演练验证:在测试环境跑一遍换盘流程,验证监控与告警是否闭环
新盘加入前可先 mdadm --zero-superblock 清残留标记,避免旧阵列元数据干扰。
重建速率可用 /proc/sys/dev/raid/speed_limit_min 与 speed_limit_max 控制:业务高峰压低速率,夜间调高,变更后恢复原值并记录。
常见疑问
- 能否用整盘设备替换分区成员:可以,但同一阵列内成员表示方式应保持一致
- 重建期间能否重启:不建议,重启会中断重建并按实现重新开始
- 新盘容量更大是否有额外收益:仅当所有成员同步升级后才可能改变可用容量