问题现象
在从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