在 ESXi 主机上,使用 SR-IOV 虚拟功能 (VF) 进行网络连接的一个或多个虚拟机电源关闭。
问题
在 ESXi 主机中,如果已分配的虚拟功能 (VF) 总数已接近在《vSphere 的最高配置》指南中指定的最多 VF 数量,则使用 SR-IOV 虚拟功能进行网络连接的一个或多个虚拟机打开电源将失败。
虚拟机日志文件 vmware.log 包含以下有关 VF 的消息:
PCIPassthruChangeIntrSettings:vf_name failed to register interrupt (error code 195887110)
VMkernel 日志文件 vmkernel.log 包含以下有关分配给虚拟机的 VF 的消息:
VMKPCIPassthru:2565: BDF = vf_name intrType = 4 numVectors: 3 WARNING:IntrVector:233: Out of interrupt vectors
原因
可分配的中断向量数量随着 ESXi 主机上的物理 CPU 数量增加。一个具有 32 个 CPU 的 ESXi 主机共计可提供 4096 个中断向量。主机引导时,该主机上的设备(如存储控制器、物理网络适配器和 USB 控制器)将占用这 4096 个向量中的部分向量。如果这些设备需要的向量数超过 1024 个,则可能支持的最多 VF 数量会减少。
打开虚拟机电源并启动客户机操作系统 VF 驱动程序时,系统将占用中断向量。如果没有所需数量的中断向量,则客户机操作系统将意外关闭,而不会出现任何错误消息。
目前,尚没有规则可以确定主机上已占用的或可用的中断向量数量。该数量取决于主机的硬件配置。
解决方案
- ♦ 要打开虚拟机电源,请减少分配给主机上的虚拟机的总 VF 数量。
例如,将虚拟机的 SR-IOV 网络适配器更改为连接到 vSphere 标准交换机或 vSphere Distributed Switch 的适配器。