Print

CAS主机异常重启后虚拟机无法正常启动问题

2014-10-16发表

主机异常重启后虚拟机无法正常启动问题

一、   问题描述:

现场工程师反馈一台CVK主机异常重启后导致该主机下的一台虚拟机无法正常启动,通过VNC查看虚拟机的启动过程,发现找不到启动盘,现场工程师怀疑是CVK主机异常重启导致了虚拟机的磁盘文件丢失。虚拟机启动信息如下截图所示:

现场工程师对该问题进行了初步的分析:在虚拟机的【修改虚拟机】对话框中发现【Virtio磁盘vda】的【源路径】为“/vms/isos/virtio-win7-0.1.52.vfd”,其中的“virtio-win7-0.1.52.vfd”win7虚拟机下的virtio设备的驱动文件,不会用于虚拟机的磁盘文件。因此现场工程师更加坚定是CVK主机异常重启导致虚拟机的磁盘文件丢失。

现场工程师也无法从客户的维护人员咨询到该虚拟机原先的磁盘文件名称等信息。

二、   过程分析:

根据现场工程师反馈的信息,确定该虚拟机的名称为“Win7_微信_帆软,运行在“cvm”主机上。

查看收集的CAS日志信息,在主机“cvm”的【/var/log/libvirt/qemu】目录下找到“Win7_微信_帆软虚拟机的运行文件。发现该虚拟机从97日开始就在主机“cvm”上运行,并且运行的镜像文件就是“/vms/isos/virtio-win7-0.1.52.vfd”

2014-09-07 21:51:12.874+0000: starting up

LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin ………………

virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x5 -drive file=/vms/isos/virtio-win7-0.1.52.vfd,if=none,id=drive-virtio-disk0,format=raw,cache=directsync -device

………

上面的分析结论无法判断虚拟机的磁盘文件发生了丢失,因此继续分析操作日志“operationLog.csv”,从操作日志中发现该虚拟机在995:51从主机“cvk02”迁移到了主机“cvm”,操作员为“$system”表示是CAS系统后台执行的。

因此,主机“cvm”的【/var/log/libvirt/qemu】目录下的该虚拟机的运行文件只包含了9721:51后的虚拟机运行记录信息,原因为在该时间点之前该虚拟机运行在主机“cvk02”上。(需要说明一下:后台日志和前台操作日志由于时区原因相差8个小时)

继续分析主机“cvk02” /var/log/libvirt/qemu】目录下的“Win7_微信_帆软虚拟机的运行文件,发现该虚拟机在迁移到主机“cvm”前的镜像文件依旧是“/vms/isos/virtio-win7-0.1.52.vfd”,并且可以正常运行。

因此可以判断主机“cvk02”异常重启导致虚拟机迁移到主机“cvm”并没有发生磁盘文件丢失的问题,“Win7_微信_帆软虚拟机在开始创建时就使用了“/vms/isos/virtio-win7-0.1.52.vfd”作为虚拟机的磁盘文件。

2014-07-22 12:44:53.000+0000: starting up

LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

……….

virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x5 -drive file=/vms/isos/virtio-win7-0.1.52.vfd,if=none,id=drive-virtio-disk0,format=raw,cache=directsync -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x6,drive=drive-virtio-disk0,id=virtio-disk0 –drive

………………

2014-09-07 21:49:25.761+0000: shutting down

 

从上述的分析,可以判断是由于主机“cvk02”异常重启,导致该主机上的虚拟机被自动迁移到了主机“cvm”,其中虚拟机“Win7_微信_帆软使用了“virtio-win7-0.1.52.vfd”文件作为磁盘文件,而该文件是CAS主机默认就存在的,主机“cvk02”上的“virtio-win7-0.1.52.vfd”文件被修改了文件大小,并且安装了操作系统,而主机“cvm”上的“virtio-win7-0.1.52.vfd”文件还是默认的virtio设备的驱动文件,只有1M左右大小,因此虚拟机“Win7_微信_帆软无法在主机“cvm”上正常启动。

 

三、   解决方法:

远程登录现场CAS平台,在主机“cvk02”的存储池“isopool”下发现“virtio-win7-0.1.52.vfd”,“文件大小80GB,“已经空间30GB,说明用户确实使用“virtio-win7-0.1.52.vfd”文件作为了虚拟机的磁盘文件。

将虚拟机从主机“cvm”迁移回主机“cvk02”后,虚拟机可以正常启动。

 

 

四、   总结:

该问题反应了用户对于CAS系统非常的不熟悉,犯了好几个错误:

虚拟机应该安装到共享存储池中,否则虚拟机所在的主机异常会导致虚拟机无法正常迁移到集群中的其他主机;

“virtio-win7-0.1.52.vfd”win7系统中virtio设备的驱动文件,不应该作为虚拟机的磁盘文件。