组装阵列与数据救援
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 会掩盖真实故障,反而破坏后续救援的机会。