Ubuntu Server无法启动脏降级RAID阵列求助
Ubuntu Server无法启动脏降级RAID阵列求助
兄弟,我太懂你这种找不到当初帮忙搭环境的朋友,自己硬啃RAID启动问题的崩溃感了!先别慌,咱们先把问题理清楚:你家里的HP Microserver装了Ubuntu Server,搭了4块2T盘的软件RAID(从可用6T来看应该是RAID5),上次异常断电后,系统卡在了启动阶段,核心错误是无法启动脏降级阵列,还有一些mdadm的小报错(用户/组找不到、阵列已被占用这些都是次要的,先解决核心问题)。
我给你整理了一套实操步骤,你可以跟着来:
- 首先,准备一个Ubuntu Server的Live USB启动盘,用它启动机器,选择“Try Ubuntu”模式(不要选安装系统),这样能在不加载本地故障系统的情况下操作磁盘。
- 进入Live环境后,先确认mdadm工具是否存在,没有的话就装:
sudo apt update && sudo apt install mdadm - 先搞清楚当前RAID阵列的真实状态,运行这个命令查看所有识别到的RAID信息和成员盘状态:
重点看每个磁盘的sudo mdadm --examine --scanDirty标记和State字段,确认哪块盘可能出了问题(你日志里只看到sda3、sdc1、sdd1,缺了第四块盘?大概率是那块盘状态异常导致阵列降级)。 - 尝试强制启动这个脏的降级阵列,注意:这个操作有一定风险,如果你有额外存储,建议先备份重要数据的超级块区域(比如用
dd if=/dev/sda3 of=superblock-sda3.img bs=1M count=10),没有的话就谨慎执行:
如果系统识别的阵列路径是sudo mdadm --run --force /dev/md/0/dev/md0,就换成这个路径试试。 - 如果强制启动成功了,立刻检查文件系统完整性——断电大概率会搞坏文件系统,别直接挂载到系统根目录,先挂到临时目录:
这里sudo mkdir -p /mnt/raid sudo mount /dev/md/0 /mnt/raid sudo fsck -f /dev/md/0-f是强制检查,哪怕系统认为文件系统是“干净的”也要扫一遍,有错误的话跟着提示修复就行。 - 修复完文件系统后,你可以先试试重启机器,看能不能正常启动系统。如果启动成功,记得用这个命令检查RAID同步状态:
如果有磁盘处于降级状态,确认是物理损坏还是只是分区问题——物理坏盘的话,尽快替换新盘,然后用mdadm把新盘加入阵列让它自动同步。cat /proc/mdstat - 要是强制启动也失败了,那可能需要试试标记阵列为“干净”来启动(这个风险更高,谨慎操作):
先看每个成员盘的超级块详情,找状态最正常的那一块:
然后用这块盘为基础,重建阵列(假设是RAID5,第四块盘暂时用sudo mdadm --examine /dev/sda3 sudo mdadm --examine /dev/sdc1 sudo mdadm --examine /dev/sdd1missing占位):
这里的sudo mdadm --create /dev/md/0 --assume-clean --level=5 --raid-devices=4 /dev/sda3 missing /dev/sdc1 /dev/sdd1--assume-clean是告诉mdadm“这个阵列是干净的,直接启动”,如果你的RAID实际是RAID6,就把--level=5改成--level=6。
另外,日志里的mdadm: CREATE user root not found、mdadm: CREATE group disk not found这些都是小问题,等RAID启动正常后,你可以编辑/etc/mdadm/mdadm.conf文件,把里面的用户组配置调整成系统存在的用户/组就行,不影响阵列启动。
备注:内容来源于stack exchange,提问作者Matthew_117




