在XenServer中,碰到VM挂起(hang)的情况,也不是那么少见,而VM长时间挂起,那么很影响心情和后续的操作。

一般情况下,为了关闭VM或者重启VM,我们推荐这样的操作顺序:

  1. 进入到VM内,使用系统的关机或者重启功能
  2. 通过XenCenter的菜单选择ShutDown或者Restart。虽然这个菜单的实现是通过XenServer tool来控制系统的命令来实现,但是不保证在XenServer Tools工作异常的情况下,导致VM挂起(Hang),而且,这个应该也是VM挂起(XenCenter中VM标志处于×××状态)的主要原因。
  3. 尝试通过XenCenter菜单的Force Shutdown和Force Restart来强制操作。
如果这些操作都进行了以后,VM也长时间处于挂起状态,为了让VM能够关机,或者说是强制关机来重置其状态,我们有以下几种解决方法,这些解决方法的危害会逐渐增加,所以,请按顺序尝试:
  1. 尝试重置VM的电源状态

     
          
    1. xe vm-reset-powerstate force=true vm=<vm name
  2. 尝试重启toolstack

     

     
           
    1. xe-toolstack-restart 

     

  3. 尝试destroy domain

     

     
           
    1. #首先获取VM的UUID  
    2. xe vm-list name-label=<vm name> params=uuid  
    3. #获取VM的Domain ID  
    4. list_domains | grep <VM-UUID>  
    5. #尝试重置hang状态的VM  
    6. /opt/xensource/debug/xenops destroy_domain -domid <vm domain id> 

     

  4. 到这里还不行,就可以强制VM进入崩溃状态

     

     
           
    1. #首先获取VM的UUID  
    2. xe vm-list name-label=<vm name> params=uuid  
    3. #获取VM的Domain ID  
    4. list_domains | grep <VM-UUID>  
    5. #手动触发VM的Crash机制  
    6. /usr/lib/xen/bin/crash_guest <domain ID> 

     

  5. 如果连Crash机制都不起作用的情况下,那么就只剩下强制关闭XenServer主机电源一条途径了。
注:在Crash VM以后,VM会处于蓝屏状态,这个时候,可以再试试正常的关机或者强制关机命令来关闭虚机。
BTW:某些情况下,可能关机等操作会由于某些原因,导致操作延迟,而且取消也会失败,这个时候可能稍微多等一下就OK了。