如何处理ESXi Hang机

当主机从vCenter中断开,通常是ESXi上的hostd进程没有正常工作,更为严重的情况是ESXi发生hang机,不能被远程控制,现象表现为:
1. 不能使用vSphere Client客户端软件远程连接ESXi,
2. 也不能使用SSH客户端软件远程连接ESXi.

3. 使用带外管理卡或者通过键盘监视器直接连接物理服务器的控制台,可能可以操作,可能不能操作


这种场景通常代表硬件设备有故障,重启主机后大多数情况下可以恢复正常工作状态,但由于hang机后ESXi系统没有记录完整信息,所以给进一步判断是哪个硬件组件发生故障带来困难。如果使用硬件诊断工具也不一定能扫出随机发生的硬件问题。

除了使用硬件供应商原厂的烤机检测工具外, 我们有没有别的方法帮助我们隔离问题呢? 下面从操作系统软件角度给出一些辅助的方法步骤。

第一步,首先需要ping ESXi主机的管理地址,确认网络层面是否可以工作。注意:即使ESXi主机的管理地址不通,虚拟机也可以正常工作,只要虚拟机所使用的上联网卡可以工作。

第二步,如果网络是通的,可以使用vSphere Client软件直连ESXi服务器,看看图形界面是否可以远程控制, 这一步也可以帮助确认hostd是否可以正常工作。

第三步,如果网络是通的,可以使用ssh连接ESXi主机,看看是否可以在命令行远程控制。(前提是SSH服务已经提前打开运行)

如果hang机,第二步和第三步都不能工作。

第四步,因为远程控制的途径全部失效,我们需要打开物理服务器的控制台窗口做进一步判断。有两种方法,一种是使用键盘和监视器连接服务器,另一种是使用带外管理卡连接服务器控制台,比如iLO/iDRAC/IMM/RMM2/ILOM。连上后看看键盘是否可以工作。如果可以,执行第五步;如果不可以,跳过第五步,直接执行第六步。

第五步,使用组合键Alt+F12,切换DCUI×××背景界面到内存日志输出的黑色终端屏幕,在这里可以看见vmkernel最新的日志输出,这些信息都直接来自vmkernel临时保存在内存中的事件队列中。ESXi的syslog服务会从这里提取日志并且根据配置转存到本地磁盘、远程日志服务器、超级终端应用程序等地方;如果syslog或者其后端不能工作,我们将失去日志文件,所以在按下Alt+F12后,可以对屏幕拍照获取当时的日志消息帮助分析。

第六步,使用硬件NMI的功能主动让ESXi主机宕机,产生紫屏,这样vmkernel当时使用的内存信息可以被保留到磁盘上, 后续我们可以分析dump文件帮助查找原因。如果虚拟机上的操作系统还可以访问,建议先使用RDP关闭windows或者ssh关闭Linux,然后在让ESXi紫屏。 硬件NMI的使用方法根据硬件厂家以及硬件型号不同而异,具体操作方法需要参考硬件设备用户手册。(有关硬件NMI的介绍可以参看知识库文章编号KB#1014767)

第七步,重启服务器,恢复工作后收集并提交vm-support日志给VMware技术支持做后续分析。同时请致电硬件厂商检查硬件。

其他辅助措施:
1. 使用远程日志机制避免本地磁盘故障导致日志缺失,参看 http://kb.vmware.com/kb/2003322
2. 使用网络转储(netdump)保存vmkernel内存信息避免本地vmkcore分区大小不足导致dump失败, 参看 http://kb.vmware.com/kb/1032051