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

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

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

xe vm-reset-powerstate force=true vm=<vm name>

尝试重启toolstack

xe-toolstack-restart

尝试destroy domain

#首先获取VM的UUID
xe vm-list name-label=<vm name> params=uuid
#获取VM的Domain ID
list_domains | grep <VM-UUID>
#尝试重置hang状态的VM
/opt/xensource/debug/xenops destroy_domain -domid <vm domain id>
到这里还不行,就可以强制VM进入崩溃状态
#首先获取VM的UUID
xe vm-list name-label=<vm name> params=uuid
#获取VM的Domain ID
list_domains | grep <VM-UUID>
#手动触发VM的Crash机制
/usr/lib/xen/bin/crash_guest <domain ID>

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

遇见的问题:

非正常关闭的一般会在启动时出现VDI不可用的错误,解决方法如下:

先根据存储的名字找到存储,例如:

xe vdi-list name-label=vip03-sys-226(储存的名称)

然后使用下面命令分离:

xe vdi-forget uuid=xxxx存储的uuid

这是虚拟机的存储中就没有这个存储了,再到存储设备里点击重新扫描,等扫描出来后再到vm的存储界面通过连接磁盘添加存储。

如果是pool环境,vm会默认到master上。启动时找不到硬盘,需要将硬盘移动至master上后,才能启动虚拟机。

【转载】关闭XenServer中挂起(hang)虚机的方法的更多相关文章

  1. Openstack中用秘钥对(keypair)生成和访问虚机的方法

    Openstack中用镜像文件生成的image来创建虚机(VM或Instance)时, 通常不支持用户名加密码的ssh方式登录访问该VM,而是用秘钥对(keypair)方式. 这里以Centos的镜像 ...

  2. Openstack中用keypair生成和访问虚机的方法

    Openstack中用keypair生成和访问虚机的方法 标签:task   iso   perm   cte   生成   复制   vol   rsa   sla Openstack中用镜像文件生 ...

  3. 【转载】C#中double.TryParse方法和double.Parse方法的异同之处

    在C#编程过程中,double.TryParse方法和double.Parse方法都可以将字符串string转换为double类型,但两者还是有区别,最重要的区别在于double.TryParse方法 ...

  4. 【转载】 C#中decimal.TryParse方法和decimal.Parse方法的异同之处

    在C#编程过程中,decimal.TryParse方法和decimal.Parse方法都可以将字符串string转换为decimal类型,但两者还是有区别,最重要的区别在于decimal.TryPar ...

  5. 【转载】C#中float.TryParse方法和float.Parse方法的异同之处

    在C#编程过程中,float.TryParse方法和float.Parse方法都可以将字符串string转换为单精度浮点类型float,但两者还是有区别,最重要的区别在于float.TryParse方 ...

  6. 【转载】C#中int.TryParse方法和int.Parse方法的异同之处

    在C#编程过程中,int.TryParse方法和int.Parse方法都可以将字符串string转换为整型int类型,但两者还是有区别,最重要的区别在于int.TryParse方法在字符串无法转换为i ...

  7. (转载)java中判断字符串是否为数字的方法的几种方法

    java中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < ...

  8. (转载)Linux中cp直接覆盖不提示的方法

    (转载)http://soft.chinabyte.com/os/220/11760720.shtml 新做了服务器,cp覆盖时,无论加什么参数-f之类的还是提示是否覆盖,这在大量cp覆盖操作的时候是 ...

  9. 在KVM中执行windows 10虚机(by quqi99)

    作者:张华  发表于:2015-12-22版权声明:能够随意转载.转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ) KVM ...

随机推荐

  1. github个人心得和链接

    github使用心得: 在本次github使用过程中,我总结了git常用命令,都有哪些功能? git常用命令: git config :配置git git add:更新working director ...

  2. Eclipse 项目有红感叹号

    问题原因]:工程中classpath中指向的包路径错误 [解决办法]:右键项目名称 BuildPath ---> Configure Build Paht...中,然后上面有几个选项卡找到 Li ...

  3. Spring基础之 反射(Reflection)

    1.了解Class package com.inspire.reflection.Class_api; import java.lang.reflect.Constructor; import jav ...

  4. [安全]appscan 使用代理抓取其他客户端的请求

    自己安全测试技能很低, 上级给的安全测试的任务给了自动化组的同事来做, 自己之前使用appscan的时候 只知道使用appscan的内置浏览器测试抓取请求 今天与自动化美女同事沟通发现有一个代理的功能 ...

  5. Jquery 组 表单select交互选项

    <!DOCTYPE html><html lang="zh-cn"><head> <meta charset="utf-8&qu ...

  6. python数据统计量分析

    #-*- coding: utf-8 -*- #餐饮销量数据统计量分析 from __future__ import print_function import pandas as pd cateri ...

  7. python之匿名函数lambda

    # lambda:匿名函数 # 语法:lambda 参数: 表达式 answer = lambda x: x * 5 print("answer(5): ", answer(5)) ...

  8. QueryParser 是对一段话进行分词的 用于收集客户端发来的

  9. python系列-2 正则表达式资料

  10. day7 字符集转换

    python2 默认 ASCLL 不支持中文 转换比较麻烦.需要先解码成unicode然后在编码成想转换的语言 s = "特斯拉" s_to_unicode = s.decode( ...