1.问题现象描述 客户在给一台从VMware安装了vmtools,然后关机并添给虚拟机添加一块磁盘,重新开机后无法正常进入系统,只能进入救援模式。
2.排查步骤
1.观察虚拟机开机日志,发现是挂载boot分区失败。编辑虚拟机,在高级设置中取消虚拟机virtio磁盘,重启虚拟机能够能正常进入系统。
2.检查虚拟机fstab中的配置,挂载对象是/dev/sda1,且boot分区的文件系统是xfs。
3.虚拟机启用virtio磁盘后,盘符会自动变为vdx,可执行lsblk命令确认。
4.修改fstab文件,将挂载对象从/dev/sda1修改为磁盘的uuid,并启用vitrio磁盘,重启虚拟机,能够正常开机。
3.问题原因分析
1、从VMware迁移或的虚拟机默认使用ide驱动,虚拟机内部识别为sdx,因此虚拟机中的fstab配置文件中挂载的分区也是/dev/sdax形式; 2、深信服超融合使用kvm管理虚拟机,磁盘推荐使用virtio驱动;virtio驱动是guest os(虚拟机)自带,安装超融合vmtool会启用virtio磁盘。启用virtio磁盘后会guestos里的磁盘盘符会自动变为vdx。同时超融合VMtool会自动对磁盘vdx打label标签,同时将/dev/sdx转换为label=sdx,使guestos开机时能正常挂载磁盘。但分区是xfs文件系统时,超融合VMtools给无法给磁盘vdx打上label。导致guestos开机时挂载sdx分区时无法关联到/dev/vdx,进而出现开机失败进入救援模式的现象。 在linux环境中,virtio驱动非超融合vmtools导入,而是系统自带的。它包括了针对磁盘的virtio-blk,针对网络的virtio-net。在所有的Linux版本中启用virtio驱动之后,磁盘名称都会显示为vdX。而在centos7版本中。由于vitrio驱动的特性,启用vitrio后网卡设备名称也会发生变化,例如:安装vmtools之后,因启用了virtio驱动,网卡名称也会从ensXX变成ethX。 因此fstab中挂载对象配置为磁盘分区/dev/sdx的情况且分区文件格式为xfs时,推荐迁移前手动将fstab配置修改为使用磁盘的UUID挂载,为解决该问题,后续版本的vmtools会尝试自动进行变更。
4.解决方案
临时解决方案:在迁移或导出VMware虚拟机之前,将fstab里/dev/sdx改成uuid格式,这个配置的修改不会影响业务运行,迁移后虚拟机即可正常开机。
彻底解决方案:该问题解决方案将在超融合6.12版本发布,等待6.12版本发布后升级,或等待合入最新补丁包。 |