使用XenServer作为虚拟化平台,经常会有用户反映虚拟机会假死,并亮起非正常的Yellow图标。其症状如下图:
a. 虚拟机不可用。这种现象发生的非常随机,发生在不固定的主机,不固定的虚拟机上。
b. 使用XenCenter无法正常的将其ShutDown,包括使用Force Shutdown。
c. 发生在XenServer的多个版本。相对比较集中在5.6~6.1之间。6.2SP1以后这个现象基本上没有再出现过。
d. 此问题多出现在Windows虚拟机上。
e. 比较容易出现在高负载的场景中。
在网上搜索一圈,找到的解决办法基本都是和Citrix的一篇官方KB一样:
How to Shut Down a Virtual Machine which is Unresponsive in the Pending or Amber State
http://support.citrix.com/article/CTX131421
在XenServer的console控制台使用如下的命令把这个无法正常运行的虚拟机的进程给强制终止。
+++++++++++++
[root@Xen6 ~]#list_domains | grep <UUID from step1>
Following is a sample of the preceding command:
[root@Xen6 ~]# list_domains | grep bcdb1445-1f28-9600-ae84-53c254167ae6
Output :
51 | bcdb1445-1f28-9600-ae84-53c254167ae6 | H
51 �C the dom-id of the VM
bcdb1445-1f28-9600-ae84-53c254167ae6 �C UUID of the VM
H �C state of the virtual machine (H indicates that this is a HVM guest, typically it means this is a Windows virtual machine.)
Run the following command to destroy the dom-id of the virtual machine:
[root@Xen6 ~]#destroy_domain �Cdomid <ID from step2>
Following is a sample of the preceding command:
[root@Xen6 ~]#/opt/xensource/debug/xenops destroy_domain �Cdomid 51
+++++++++++++
但是这些都没有从根本上解决这个问题。作为普通的IT人员,很难深层次去分析这个问题,仅以我个人了解的一些情况来尝试给出解决这个问题的一些思路。
首先得从XenServer的核心架构说起。任何一个操作系统都有一个核心来处理核心业务,所以也称为Kernal。这个在XenServer里面叫Dom0,而除去Dom0之外的其他虚拟机运行时占用的寻址空间叫DomU。
而在XenServer 6.5之前的架构中,所有的DomU的网络和存储的请求,都需要通过Dom0来完成。所以随着虚拟机的增加、负载越高Dom0的压力越大。所以在高密度、大负载的场景中,我们建议提高Dom0的vCPU数和内存大小。
那么这些和我们今天将的虚拟机假死有什么关系呢?个人认为:随着DomU越多,Dom0的压力越大。而且由于DomU的所有网络和存储请求都需要经过Dom0来调度,所以随着Dom0压力大,网络、存储是否能及时相应所有的请求就至关重要。
那么问题就来了,在出现这些问题的时候,事实上网络和存储的负载巨大多数情况下没有达到其物理硬件的瓶颈。那么问题出在了哪里了呢?
其实关键的问题就在于XenServer和网卡、存储HBA的驱动支持上。经过一些项目的合作,我们的硬件供应商发现在其服务器的日志中会有蛛丝马迹,这些问题很多时候是因为服务器上的网卡、HBA卡所使用的驱动和Firmware不是官方推荐的版本,或者版本过久。
其实这个也很好理解,当一个设备上的硬件所使用的驱动异常的时候,这个操作系统运行时轻则性能达不到标称值,重则不稳定甚至异常宕机。
所以当出现这种问题的时候,最应该优先尝试的步骤就是:
确认XenServer的Dom0已经按照最佳实践配置了合理的vCPU数和内存大小,
查询support.citrix.com,对应的XenServer版本修复Dom0疑问、性能优化问题的hotfix,进行升级,
通过查询hcl.xensource.com,将对应的网卡、HBA卡驱动进行升级。
比如:用户使用的是一块Brodcome的10GB网卡,那么在hcl.xensource.com网站找到对应的网卡,就会显示出推荐的网卡驱动for XenServer链接。选择你对应的XenServer版本点击,然后下载安装即可。
当然support.citrix.com也会不定期更新最常见的各种驱动。并且类似于XenServer 6.2 SP1
这样的版本,会有专门的KB列出常用的硬件的驱动清单集,方便用户查询。
Driver Disks for XenServer 6.2.0 Service Pack 1 with Hotfix XS62ESP1009
http://support.citrix.com/article/CTX141192
最后,什么时候应该安装包括XenServer hotfix和硬件驱动更新包呢?
新部署的XenServr环境,强烈建议通过support.citrix.com和hcl.xensource网站来查询对应的内容并更新。
当环境出现如上这样的虚拟机非常假死的情况下。
整个XenServer虚拟化环境进行大版本升级的时候。
如果环境运行稳定,则无必要也无须做如上操作。
写在最后,XenServer从我个人来看,虽然在功能上与vSphere还有一定的差距,但是如果严格参考XenServer的最佳实践来规划设计,其稳定性是在很多严苛的生产环境中验证过。
并且随着Citrix XenServer 6.5的发布,XenServer从内核Dom0的运行机制上将网络、存储等模块剥离出去,未来类似于这样虚拟机假死的现象虚拟机异常现象将会完全消失。而且无论从功能上、还是性能将会得到大幅度的提升。
在我看来XenServer 6.5才刚刚起步,未来的XenServer才会更加令人期待。