虚拟机假死解决方法

虚拟机无缘无故假死,是件比较头疼的事情。关机也关不了,重启也不行。有时需要关物理机才行。如果XenServer上有比较重要应用,肿么办?

造成虚拟机假死的原因很多,有的是本身虚拟机系统的原因、有的是XenServer底层XAPI接口有问题。

XAPI就是XenServer中的一组管理接口的统称,是XenServer管理的核心,由一系列的toolstack组成。XenCenter通过XAPI来读取XenServer的配置、管理、License的管理、数据库的维护等等,同时也包括如存储(SR)、虚机、虚拟网卡、HA等等所有的功能控制。简而言之,XAPI就是个和底层通信的中间层、接口层。

系统的原因一般强制重启就可以解决;但是xapi有问题,强制重启方法有时是行不通的。

一般假死的解决方法:

把xapi重启即可解决;在XenServer中输入: xe-toolstack-restart 或者 service xapi restrat

上述命令无效的话,可以使用下面的方法:

I've found the resolution through my other thread. Here's what you need to do.


1 - "xe vm-list" to get the uuid of the VM that is hung


2 - "list_domains" to list the domain uuid's so you can determine
the domain # of the VM above by matching the uuids from this output with
the uuid for your VM from the previous command.


3 - "/opt/xensource/debug/destroy_domain -domid XX" where XX is the domain number from the previous command

执行到最后一步,有可能时间比较长。需要等。。。。。



通过XenCenter无法关机

通过XenCenter无法关机,一直卡在那里,控制台界面也看不到,SSH登陆xen server
[root@xenserver2 log]# xe vm-list
找到这台挂起的VM对应的UUID
[root@xenserver2 log]# xe vm-shutdown uuid=627c4220-dd2e-5bf7-4ad1-871187c83933 force=true
发现没用,命令卡在那里
[root@xenserver2 log]#xe vm-reset-powerstate uuid=627c4220-dd2e-5bf7-4ad1-871187c83933 --force
依然没用,到网上找一圈,有人说是关机任务被挂起了,取消关机任务再执行关闭即可,于是
[root@xenserver2 log]#xe task-list
发现是有对应的关机任务,于是输入对应的任务UUID取消之
[root@xenserver2 log]#xe task-cancel uuid=85f509b3-d240-7dcf-4175-523c839b8145
再执行查看任务列表
[root@xenserver2 log]#xe task-list
发现任务依然存在,这下无奈了............!到citrix官方论坛上,发现和我一样问题的老外还不少,找了一圈,终于找到一个靠谱的办法,如下
[root@xenserver2 log]# xe vm-list
找到这台挂起的VM对应的UUID
[root@xenserver2 log]# list_domains
找出对应UUID的域ID
[root@xenserver2 log]# /opt/xensource/debug/destroy_domain -domid XX
这个命令我猜应该是删除这台VM的外联存储(NFS、ISCSI等)
[root@xenserver2 log]# xe vm-reboot uuid=XXXX --force
执行VM重启,搞定!如果控制台还是看不到界面,把XAPI服务重启一下
[root@xenserver2 log]# xe-toolstack-restart
然后重新连接xen server,VM恢复正常,问题解决!
初识toolstack——XEN的XenServer管理的核心

什么是XAPI,或者说XAPI在XenServer中有什么作用?

XAPI(或者XenAPI)是XenServer中的一组管理接口的统称,是XenServer管理的核心,由一系列的toolstack组成。

XAPI主要提供XenCenter以及pool中各主机通信的接口。XenCenter通过XAPI来读取XenServer的配置、管理、License的管理、数据库的维护等等,同时也包括如存储(SR)、虚机、虚拟网卡、HA等等所有的功能控制。而Pool中的所有XenServer的操作请求也是通过XAPI传递给dom0,同时在池中的所有主机中间通信,例如:Pool中数据库(配置数据库,由XenServer维护的一个小型数据库)会通过XAPI在所有的主机之间同步,以便在Master服务器宕机以后,其他机器能够正确而迅速的取代Master,并维持Pool的功能和服务。

简而言之,XAPI就是个和底层通信的中间层、接口层。

===============================

可以迁移到202,却不能迁移到209,很奇怪。
xe-toolstack-restart
Stopping xapi: ..[ OK ]
Stopping the v6 licensing daemon: [ OK ]
Stopping the memory ballooning daemon: [ OK ]
Stopping perfmon: [FAILED]
Stopping the fork/exec daemon: [ OK ]
Starting the fork/exec daemon: [ OK ]
Starting perfmon: [ OK ]
Starting the memory ballooning daemon: .[ OK ]
Starting the v6 licensing daemon: [ OK ]
Starting xapi: ..start-of-day complete.[ OK ]
done.
重启下toolstack即可,发现这条命令很有用。

转自 http://zhumeng8337797.blog.163.com/blog/static/1007689142012112604339569/