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 的适配器。