Ubuntu Server添加iSCSI磁盘至卷组后无法启动的故障修复求助
Ubuntu Server添加iSCSI磁盘至卷组后无法启动的故障修复求助
这种情况我之前帮朋友排查过好几次,核心问题就是系统在启动到挂载根文件系统的早阶段,iSCSI磁盘还没完成连接,导致依赖它的LVM卷组没法激活,直接卡进initramfs了。下面给你一步步落地的排查和修复方法:
一、先进入chroot环境操作系统配置
因为现在直接启动进不了系统,我们还是用之前的Live CD启动,先挂载根逻辑卷并进入chroot(相当于直接操作原系统的环境):
- 挂载你的根逻辑卷到/mnt,替换成你的卷组和逻辑卷名:
mount /dev/your_vg_name/your_root_lv_name /mnt - 挂载系统必要的虚拟文件系统,保证chroot后能正常执行命令:
mount --bind /dev /mnt/dev mount --bind /proc /mnt/proc mount --bind /sys /mnt/sys - 进入chroot环境:
chroot /mnt
二、让initramfs包含iSCSI启动所需的组件
启动早期的initramfs环境里如果没有iSCSI的驱动和连接脚本,就会导致系统还没连上iSCSI磁盘就尝试挂载根分区,这是核心问题。我们来修复这个:
- 确保open-iscsi工具包已安装(你之前用了应该有,保险起见再装一次):
apt install --reinstall open-iscsi - 重新配置open-iscsi,让它自动把iSCSI的启动钩子加入initramfs:
dpkg-reconfigure open-iscsi - 更新initramfs,把iSCSI相关的组件打包到启动镜像里:
update-initramfs -u -k all这里
-k all是更新所有内核版本的initramfs,避免因为GRUB选旧内核出问题。
三、配置iSCSI目标在启动时自动连接
接下来要确保系统启动时会自动连接你的iSCSI存储目标:
- 编辑iSCSI的主配置文件
/etc/iscsi/iscsid.conf,确认以下参数(没有的话添加):
这些参数是保证iSCSI连接超时时间合理,避免启动时因为短暂网络问题连接失败。node.startup = automatic node.session.timeo.replacement_timeout = 120 node.conn[0].timeo.login_timeout = 15 - 重新发现你的iSCSI目标(替换成你的iSCSI服务器IP):
iscsiadm -m discovery -t st -p 你的iSCSI服务器IP - 把发现到的目标设置为自动启动(替换成你的目标名和服务器IP):
iscsiadm -m node -T 你的iSCSI目标IQN -p 你的iSCSI服务器IP --op update -n node.startup -v automatic - 验证配置:执行
iscsiadm -m node --list,找到对应的iSCSI目标,确认node.startup字段是automatic。
四、检查GRUB和LVM配置
- 编辑GRUB配置文件
/etc/default/grub,确保GRUB_CMDLINE_LINUX里没有阻止存储设备扫描的参数,反而可以添加scsi_mod.scan=sync来强制同步扫描SCSI设备(包括iSCSI):
把原有的GRUB_CMDLINE_LINUX改成类似这样:GRUB_CMDLINE_LINUX="scsi_mod.scan=sync" - 更新GRUB生效:
update-grub - 确保LVM的卷组在启动时能自动激活:执行
vgchange -ay 你的卷组名,然后检查/etc/lvm/lvm.conf里的auto_activation_volume_groups是否包含你的卷组名。
五、测试重启
- 退出chroot环境:
exit - 卸载所有挂载的目录:
umount /mnt/sys /mnt/proc /mnt/dev /mnt - 重启服务器,看是否能正常进入系统。
如果还是进initramfs,你可以在initramfs里执行dmesg | grep iscsi查看iSCSI模块的加载和连接日志,排查具体是模块没加载还是连接失败;也可以执行iscsiadm -m node --login手动尝试连接iSCSI目标,看是否能成功。
备注:内容来源于stack exchange,提问作者JoBo




