Debian Stretch升级后mdadm.conf为空导致RAID阵列丢失的解决方案


阅读 3 次

问题现象

在从Debian 8(Jessie)升级到Debian 9(Stretch)后,系统提示警告信息:

update-initramfs: Generating /boot/initrd.img-4.9.0-4-amd64
W: mdadm: /etc/mdadm/mdadm.conf defines no arrays.

检查/etc/mdadm/mdadm.conf文件发现,原有的RAID阵列配置信息丢失,仅剩模板内容。

紧急处理措施

在重启系统前,建议先执行以下命令备份当前RAID状态:

# 查看当前活动的RAID阵列
cat /proc/mdstat

# 备份当前RAID超级块信息
mdadm --detail --scan >> /etc/mdadm/mdadm.conf.backup

# 检查备份文件内容
cat /etc/mdadm/mdadm.conf.backup

重建mdadm.conf

使用以下命令重新生成正确的配置文件:

# 停止所有RAID阵列
mdadm --stop /dev/md0

# 重新扫描并生成配置文件
mdadm --examine --scan > /etc/mdadm/mdadm.conf

# 验证配置文件
cat /etc/mdadm/mdadm.conf

# 重新激活阵列
mdadm --assemble --scan

# 更新initramfs
update-initramfs -u

自动化脚本方案

对于多阵列环境,可以使用以下脚本自动处理:

#!/bin/bash
# 备份原有配置
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.bak

# 生成新配置
echo "DEVICE partitions" > /etc/mdadm/mdadm.conf
mdadm --detail --scan >> /etc/mdadm/mdadm.conf

# 添加标准配置
cat << EOF >> /etc/mdadm/mdadm.conf
CREATE owner=root group=disk mode=0660 auto=yes
HOMEHOST <system>
MAILADDR root
EOF

# 更新系统配置
update-initramfs -u -k all
update-grub

预防措施

为避免类似问题,建议:

  • 定期备份/etc/mdadm/mdadm.conf文件
  • 在系统升级前执行mdadm --detail --scan > /etc/mdadm/mdadm.conf.backup
  • 考虑使用Ansible等工具自动化配置管理

故障排查

如果阵列无法自动加载,可以尝试手动加载:

# 查看磁盘UUID
blkid

# 手动组装阵列
mdadm --assemble /dev/md0 /dev/sd[abc]1 --uuid=b1269cba-ec1b-4d68-b6a6-5f9830b5dfca

# 检查阵列状态
mdadm --detail /dev/md0