openstack虚拟机无法启动的一次排错经历

这里写图片描述
如上图所示,虚拟机卡在这个界面并且无法启动
一般的虚拟机排错方式:
1、查找虚拟机宿主机的以下日志排查是否有报错的关键字

/var/log/messsages 
/var/log/syslog
/var/log/libvirt
/var/log/libvirt/qemu/instance-00000xxx.log
dmesg命令
/var/log/nova/nova-compute.log(一般不会有)

2、排查虚拟机系统是否存在问题

  1. 将虚拟机磁盘挂载到其他虚拟机或者物理服务器上
    当时出现xfs文件系统损坏的情况,可以通过xfs_repair -L /dev/device去修复,但是有可能造成文件丢失
  2. 进入挂载的目录执行chroot命令,就相当于进入了虚拟机
    报错显示一下so文件不存在,然后通过从相同的镜像中拷贝这些文件过来,即可以成功执行chroot命令
  3. ls 系统的各个目录,发现很多文件的大小都变成0,以及执行/sbin/init都报错,通过拷贝文件来解决这个问题
    这里写图片描述
  4. 之后替换文件了还是存在一些问题,导致无法启动,但是虚拟机已经不卡在那个界面了,说明还有一些文件是损坏的,所以还需要进一步的查找,注意:通过挂载之后会导致挂载的系统磁盘uuid与所挂载的机器的启动盘uuid相同,这样会导致挂载的虚拟机无法启动:
    这里写图片描述
    解决方法:修改/etc/fstab文件内容或者执行命令xfs_admin -U generate /dev/vdb1来修改uuid

通过第二步的排查之后虚拟机已经能够进入ctrl+D能够进入mantain模式,可以进入系统查看message和demsg以及syslog来进一步排查

3、备份机制,比较重要的应用应该要有相应备份机制来保证数据的可靠性

展开阅读全文

没有更多推荐了,返回首页