首页/系统/服务器硬件与 RAID 速查/mdadm 组装:迁移与救援
RAID 级别与计算68 条

mdadm 组装:迁移与救援

把已有成员盘重新组装为可用阵列:换机、系统重装或误停阵列后,用 --assemble/--scan 重建阵列关系,是软 RAID 数据救援的核心动作。

组装阵列与数据救援

mdadm --assemble 的作用是「把已有成员盘重新拼成阵列」:换机器、重装系统、误停阵列,甚至把一整套盘接到另一台机器上,只要盘上的超级块没被破坏,就能用扫描与组装把数据找回来。它是软 RAID 最实用的能力之一,前提是操作前先看清超级块内容,确认盘序与阵列结构,再决定组装方式。

扫描与组装

扫描与组装
mdadm --examine --scan            # 扫描所有盘的超级块并输出组装配置
mdadm --examine /dev/sdb1         # 单盘查看超级块:级别、成员数、UUID
mdadm --assemble --scan           # 按扫描结果自动组装
mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1 --force   # 指定成员强制组装
cat /proc/mdstat                  # 确认组装结果与状态

写入配置便于开机自动组装

写入配置便于开机自动组装
mdadm --detail --scan >> /etc/mdadm.conf     # 落盘阵列定义
update-initramfs -u                          # Debian 系更新 initramfs
# RHEL 系:dracut -f
systemctl enable --now mdmonitor             # 启用监控服务(视发行版)

关键参数

--scan配合 --examine 或 --assemble 使用,扫描所有块设备
--force在明确知道结构且不一致非致命时使用,会掩盖真实问题
--uuid指定阵列 UUID,用于多阵列环境精确匹配
--run允许组装只含部分成员的阵列(供救援取数)
--readonly以只读方式组装,救援时更安全

常见救援场景

场景做法注意
系统重装后阵列消失assemble --scan 并按需写入配置确认超级块未被新系统覆盖
整机迁移到新硬件接盘后先 --examine 核对结构盘序变化不影响按 UUID 组装
误停阵列直接 assemble 再挂载挂载前确认状态干净
成员盘缺一块以只读方式组装取数不要在缺员状态下写数据

救援顺序

  • 先把所有成员盘离线接入同一平台,避免在有数据写入的系统上反复试
  • 用 --examine 逐盘读出级别、成员数与 UUID,确认属于同一阵列
  • 优先用 assemble --scan 自动组装;必要时再指定成员
  • 挂载前先以只读方式核对数据,确认无误后再恢复正常读写
--force 仅在明确知道阵列结构、且不一致属于非致命情况时使用;盲目 --force 会掩盖真实故障,反而破坏后续救援的机会。

易错点

  • assemble 前不核验 --examine 输出:盘序与阵列结构不一致时会导致错误组装
  • 忘记更新 initramfs:根分区在阵列上时,启动早期找不到阵列会直接进不了系统
  • 在有数据写入的系统上反复试组装:可能把超级块写坏,救援难度陡增
  • 缺员状态下按读写方式组装:数据还没确认就开始写,等于把残余信息也破坏掉
  • 应急成功后不补配置与监控:下次重启阵列又不组装,问题会重复出现

数据来源与参考

  • man 8 mdadm(--assemble)
  • Red Hat 存储管理指南(阵列组装)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌