本文提供有关使用不可屏蔽中断 (NMI) 工具对无响应 VMware ESXi 或 ESX 主机进行故障排除的信息。
注意:该过程可能导致 ESXi/ESX 主机终止并出现紫色诊断屏幕。如果 ESXi/ESX 主机的响应足以运行虚拟机,在此过程后触发紫色诊断屏幕将突然中断在此 ESXi/ESX 主机上运行的所有虚拟机。
如果显示来源未知的 NMI,请参见 Identifying and addressing Non-Maskable Interrupt events on an ESX/ESXi host (1804)。
免责声明:本文为 Using hardware NMI facilities to troubleshoot unresponsive hosts (1014767) 的翻译版本。尽管我们会不断努力为本文提供最佳翻译版本,但本地化的内容可能会过时。有关最新内容,请参见英文版本。
不可屏蔽中断 (NMI) 是一种处理器无法忽略的硬件中断。预留的这些中断类型通常用于非常重要的任务,以及向处理器报告硬件错误。
您可以有意向 CPU 发送 NMI,具体取决于系统的制造商和型号。通过向处理器发送 NMI,会将 CPU 上下文强制切换到注册的不可屏蔽中断句柄。无法忽略(屏蔽)该中断。操作系统可以根据之前的配置处理 NMI。
有意触发的 NMI 有助于突出显示以下内容:
在某些情况下,您可能需要让 ESXi/ESX 主机生成紫色诊断屏幕和核心转储,以进一步对问题进行故障排除。默认情况下,5.0 之前的 ESXi/ESX 主机仅记录 NMI,但是不会终止并显示紫色诊断屏幕。从 ESXi 5.0 开始,主机在默认情况下将终止并显示紫色诊断屏幕。
VMkernel 或服务控制台可以摆脱 CPU 上任何不断循环的进程并记录 NMI。由于每个内核都会收到 NMI,因此可将其配置为通过生成紫色诊断屏幕来响应 NMI。
VMkernel 直接处理 NMI,并生成紫色诊断屏幕或者将 NMI 路由至服务控制台。如果路由至 ESX 服务控制台,则其 Linux 内核可通过触发警告和紫色诊断屏幕来处理 NMI,或者忽略它。
可用于对 NMI 进行其他处理的选项因不同的 VMware ESXi 和 ESX 版本而有所不同:
如果触发紫色诊断屏幕,会保存 VMkernel 中的核心转储。如果将 NMI 路由至服务控制台以触发紫色诊断屏幕,也会保存服务控制台 Linux 内核中的核心转储。可能需要服务控制台核心转储,具体取决于正在调查的问题。
确保正确配置 ESXi/ESX 主机,以捕获 VMkernel 和服务控制台核心转储。
有关详细信息,请参见:
在收到 NMI 时,第三方 OEM NMI 驱动程序可以有意发起终止并显示紫色诊断屏幕,无论配置的选项如何。有关详细信息,请参见Understanding the message: Panic requested by one or more 3rd party NMI handlers (2005413)。
注意:有关运行 VMware ESX/ESXi 4.1 或更高版本的 HP 服务器的详细信息,请参见ESX and ESXi installations on HP systems require the HP NMI driver (1021609)。
VMware ESXi 4.x/5.x 以及 ESX 4.x 具有高级配置选项,可影响在收到 NMI 时采取的操作。默认情况下,将 NMI 路由至服务控制台,这在 ESXi 中没有任何影响,而在 ESX 中会被默认忽略。
VMkernel 选项Misc.NMILint1IntAction
具有 3 个可能值:
注意:如果 ESXi/ESX 主机在引导过程初期就没有响应,应改用 VMkernel 引导选项VMkernel.Boot.nmiAction
。默认值0
将延迟到引导过程中稍后的Misc.NMILint1IntAction
选项。
要将 VMkernel 配置为在收到 NMI 时生成紫色诊断屏幕,请将高级选项Misc.NMILint1IntAction
设置为 2。有关详细信息,请参见Configuring advanced options for ESXi/ESX(1038578)。
注意:必须重新引导 ESX/ESXi 主机,更改才能生效。
VMware ESX 3.x 始终会将 NMI 路由至服务控制台。在 ESX 3.x 下,服务控制台中的配置选项是对 NMI 触发紫色诊断屏幕的唯一机制。可以将 VMware ESX 4.x 配置为在 VMkernel 中处理 NMI,或者将其路由至服务控制台。此配置不适用于 ESXi。对于 ESXi,使用上述 VMkernel 方法。
默认情况下,ESX 3.x 和 4.x 中的服务控制台 Linux 内核会记录 NMI 事件,但是不采取任何其他操作。可以将服务控制台 Linux 内核配置为以终止并显示紫色诊断屏幕的方式处理 NMI。
要将 ESX 主机服务控制台配置为在收到 NMI 时终止且不稳定,请执行以下操作:
/etc/sysctl.conf
文件。有关详细信息,请参见 Editing configuration files in VMware ESXi and ESX(1017022)。此配置文件采用token=value
语法,每行一个配置选项。 kernel.mem_nmi_panic = 1
kernel.unknown_nmi_panic = 1
kernel.panic_on_unrecovered_nmi = 1
kernel.unknown_nmi_panic = 1
保存此配置文件。 sysctl -p
sysctl
配置选项都会在应用时显示出来。两个新配置选项应该显示在最后。注意:如果必须恢复此配置,请编辑此配置文件并将这两个选项设置为 0。
如果 ESXi/ESX 主机在出现中断之前配置不当,则必须在获取有关不响应状态的信息之前再现问题。
在下一次出现中断时,重新检查 Determining why an ESX/ESXi host does not respond to user interaction at the console (1017135)中描述的症状,以确保观察到相同的症状。
如果服务器完全不响应键盘输入和网络通信,请对 VMkernel 日志进行截图或拍照。检查 VMkernel 日志是否继续在屏幕上滚动,还是已经冻结。当您已经记录这些事件时,按物理服务器上的NMI 按钮或通过远程硬件管理界面按下。
此时,服务器将显示以下症状之一:
NMI 按钮或开关位置依硬件不同而有所不同。提供了以下几个示例:
ipmitool -I lan -H <RemoteServerBMCAddress> -U <Username> -a chassis power diag
截至 2013 年 11 月 6 日,上述链接正确无误。如果您发现某个链接已损坏,请提供反馈,VMware 员工会更新该链接。
有关如何为特定服务器系统触发 NMI 的信息,请咨询硬件供应商。
Using hardware NMI facilities to troubleshoot unresponsive hosts