上一篇                     
               
			  如何直通ESXi物理网卡提升虚拟机性能?
- 物理机
- 2025-06-09
- 2909
 在VMware ESXi中,可通过PCIe直通功能将物理网卡直接分配给指定虚拟机,使虚拟机独占该硬件设备,显著提升网络性能和兼容性。
 
在 ESXi 中为虚拟机分配物理网卡(PCIe 直通)详细指南
应用场景:
在 VMware ESXi 虚拟化环境中,大多数虚拟机通过虚拟交换机 (vSwitch 或 Distributed Switch) 共享物理网卡 (pNIC) 的网络带宽,但在某些特定需求下,将整块物理网卡完全、直接地交给一个虚拟机独占使用是更优选择,这就是 PCIe 设备直通(Passthrough) 技术,适用于:
- 高性能网络需求: 虚拟机需要接近物理机的网络吞吐量(如低延迟交易系统、高性能计算节点、网络数据包分析/防火墙虚拟机)。
- 专用硬件功能: 虚拟机需要使用物理网卡特有的硬件功能(如特定 SR-IOV 实现、硬件加速卸载、专用加密引擎)。
- 隔离与安全: 要求虚拟机网络流量完全绕过 ESXi Hypervisor 层,实现物理级别的隔离。
- 兼容性问题: 某些特殊网卡在 ESXi 驱动下表现不佳,但目标虚拟机操作系统有原生驱动支持。
重要前提与限制:
- 硬件支持: 
  - CPU: 必须支持 Intel VT-d 或 AMD-Vi (IOMMU) 技术,在服务器的 BIOS/UEFI 中 必须启用 此功能。
- 主板/芯片组: 主板必须支持 VT-d/AMD-Vi,并且相关的 PCIe 插槽需要配置在支持直通的 IOMMU 组中。
- 网卡: 目标物理网卡本身及其固件需要支持直通功能,大多数主流服务器级网卡(如 Intel X520/X710, Mellanox ConnectX 系列)都支持。并非所有板载或 PCIe 网卡都支持。
 
- ESXi 要求: 运行 ESXi 6.x 或更高版本的物理主机。
- 独占性: 一旦启用直通,该物理网卡将完全脱离 ESXi 主机的控制,ESXi 管理界面 (vmk0) 和其他虚拟机都不能再使用这块网卡,它只能被分配给一个虚拟机。
- 虚拟机操作系统: 虚拟机内的操作系统必须安装适用于该物理网卡的驱动程序,ESXi 虚拟化层不再提供驱动程序支持。
- 中断映射 (Interrupt Remapping): 强烈建议在 BIOS/UEFI 中启用此功能(通常和 VT-d/AMD-Vi 在同一设置区域),它对稳定性至关重要,尤其是在多 CPU 系统中。
- 热插拔: 在虚拟机运行状态下添加/移除直通设备通常需要特殊支持,并非所有设备和 VM OS 都支持,建议在 VM 关机状态下操作。
- vMotion: 默认情况下,启用了直通设备的虚拟机不支持 vMotion (迁移),需要启用 Enhanced vMotion Compatibility (EVC) 模式,并且源和目标主机必须具有完全相同的直通设备硬件型号和兼容的 IOMMU 配置,即使满足条件,涉及直通设备的 vMotion 也可能有额外限制或复杂性。
详细操作步骤:

第一步:验证硬件支持与启用 BIOS/UEFI 设置
- 重启 ESXi 物理服务器。
- 进入 BIOS/UEFI 设置界面 (通常按 Delete,F2,F10或特定服务器功能键)。
- 找到与 CPU 虚拟化技术 (Intel VT-x/AMD-V) 和 I/O 虚拟化 (Intel VT-d/AMD-Vi或IOMMU) 相关的选项。
- 务必同时启用 VT-x/AMD-V和VT-d/AMD-Vi (IOMMU)。
- 查找与 Interrupt Remapping相关的选项并将其启用。
- 保存 BIOS/UEFI 设置并重启服务器进入 ESXi。
第二步:在 ESXi 主机上启用 PCIe 设备直通
- 登录 ESXi Host Client: 在浏览器中访问 ESXi 主机的管理 IP 地址 (如 https://your-esxi-host-ip/)。
- 导航到硬件设置: 
  - 点击左侧导航栏中的 主机。
- 点击顶部选项卡 管理。
- 在“硬件”部分下,选择 PCI 设备。
 
- 点击左侧导航栏中的 
- 查看可直通设备列表: 你将看到 ESXi 检测到的所有 PCIe 设备列表,注意“供应商”、“设备名称”、“设备 ID” 以及最重要的 直通列状态。
- 筛选并找到目标物理网卡: 
  - 根据供应商 (如 Intel Corporation,Mellanox Technologies) 和设备名 (如Ethernet Controller X710) 识别你要直通的网卡。
- 注意设备的 设备 ID(格式如0000:xx:yy.z),这有助于精确定位,通常物理网卡会显示为Network controller类型。
 
- 根据供应商 (如 
- 切换直通状态: 
  - 找到目标物理网卡对应的行。
- 点击 直通列下的切换开关(通常是 “已禁用” 状态)。
- 将其切换为 已启用。
- 重要提示: 启用直通后,该设备立即脱离 ESXi 控制,如果这块网卡当前正被 ESXi 管理接口 (vmk0) 或任何虚拟交换机使用,网络连接会立即中断! 请确保: 
    - 这块网卡没有被配置为任何 vmkernel适配器 (如管理、vMotion、存储网络) 的上行链路。
- 这块网卡没有绑定到任何虚拟交换机 (vSwitch或Distributed Switch)。
- 强烈建议使用 ESXi 主机的其他物理网卡(未启用直通的)来承载管理网络,以避免启用直通时失去连接,或者通过本地控制台 (iDRAC, iLO, KVM) 操作。
 
- 这块网卡没有被配置为任何 
 
- 确认更改: 系统可能会弹出警告提示你启用直通的风险(网络中断等),确认后更改生效。
- 重启 ESXi 主机 (必需): 启用或禁用 PCI 设备直通后,必须重启 ESXi 主机才能使更改完全生效,在 PCI 设备页面顶部通常会有提示,点击提示中的重新引导按钮或在操作>电源菜单中选择重新引导。不要跳过此步。
第三步:将直通的物理网卡添加到虚拟机

- 确保目标虚拟机已关闭电源。
- 在 ESXi Host Client 中编辑虚拟机设置: 
  - 在左侧导航栏点击 虚拟机。
- 从列表中选择目标虚拟机。
- 点击 操作>编辑设置。
 
- 在左侧导航栏点击 
- 添加新硬件: 
  - 在虚拟机设置窗口底部,点击 添加其他设备下拉按钮。
- 选择 PCI 设备。
 
- 在虚拟机设置窗口底部,点击 
- 选择要添加的直通网卡: 
  - 在新增的 PCI 设备硬件项下,会有一个下拉菜单。
- 点击下拉菜单,你会看到所有已启用直通且当前未被其他虚拟机占用的 PCI 设备列表。
- 从中选择你之前启用了直通的目标物理网卡(通过供应商、设备名或设备 ID 确认)。
 
- 在新增的 
- 配置设备选项 (可选但推荐): 
  - 预留所有客户机内存 (锁定): 强烈建议勾选此项! 这确保虚拟机有足够且锁定的物理内存供直通设备使用,对于性能和稳定性非常重要,尤其是使用 SR-IOV 或需要大量 DMA 的卡时,但这会增加虚拟机启动所需的内存预留量。
- 延迟敏感度: 如果虚拟机对低延迟有极致要求(如高频交易),可以尝试设置为 高,但需评估对主机资源的影响。
 
- 保存更改: 点击 保存按钮完成虚拟机设置的修改。
第四步:在虚拟机操作系统中安装驱动并配置网络
- 启动虚拟机。
- 登录虚拟机操作系统。
- 识别新硬件: 
  - Windows: 通常会自动弹出“发现新硬件”向导,或可以在“设备管理器”中看到带有黄色感叹号的未知设备或直接显示网卡型号。
- Linux: 使用 lspci命令查看新添加的 PCI 设备,应该能看到对应的网卡(如Ethernet controller: Intel Corporation Ethernet Controller X710 ...),使用dmesg | grep -i eth或ip link show查看新出现的网络接口 (如ens160,enp0s16或传统的ethX)。
 
- 安装制造商提供的驱动程序: 
  - 必须从网卡制造商(如 Intel, Mellanox, Broadcom)官网下载适用于你虚拟机操作系统的最新版驱动程序。
- 不要尝试使用 VMware Tools 提供的 vmxnet3或其他虚拟网卡驱动。
- 按照制造商提供的说明安装驱动。
 
- 配置网络: 
  - 像在物理服务器上一样,在虚拟机操作系统中为新识别到的物理网络接口配置 IP 地址、子网掩码、网关、DNS 等网络参数(通过图形界面或命令行如 ifconfig/ip,netplan,nmtui)。
 
- 像在物理服务器上一样,在虚拟机操作系统中为新识别到的物理网络接口配置 IP 地址、子网掩码、网关、DNS 等网络参数(通过图形界面或命令行如 
- 测试网络连通性: 使用 ping,traceroute等工具测试虚拟机通过直通物理网卡与外界的网络连接是否正常。
关键注意事项与最佳实践:
- 规划先行: 仔细规划哪块物理网卡用于直通。绝对不能将承载 ESXi 管理网络 (vmk0) 的网卡直通给虚拟机,否则会失去主机连接!确保至少有一块独立网卡专门用于 ESXi 管理。
- 备份: 在对 ESXi 主机 BIOS 或配置进行重大更改(尤其是启用直通)之前,做好 ESXi 主机配置的备份。
- 稳定性: 确保 BIOS/UEFI 中的 VT-d/AMD-Vi和Interrupt Remapping已正确启用,使用服务器供应商推荐的网卡和固件版本。
- 内存预留: 务必为使用直通设备的虚拟机勾选 预留所有客户机内存 (锁定)。
- 隔离组 (IOMMU Group): 有时一块 PCIe 网卡可能与其他设备(如 USB 控制器)在同一个 IOMMU 组中,启用直通时,整个组都会被直通,需要确认是否允许这样,高级用户可能需要调整 BIOS 设置或使用 ACS 覆盖(ESXi/Hardware 支持)来分割组。
- vMotion 限制: 清晰认识到直通设备对 vMotion 的限制,如果业务需要迁移,要么避免使用直通,要么确保严格的硬件一致性并配置 EVC。
- 监控: 在虚拟机操作系统中使用原生工具监控直通网卡的状态、性能指标和错误计数。
- 固件更新: 更新物理网卡固件时,需要关闭使用它的虚拟机,并在 ESXi 主机上临时禁用该网卡的直通(需要重启 ESXi),然后进行固件刷新,完成后重新启用直通并重启 ESXi。
通过 PCIe 直通将物理网卡直接分配给 ESXi 中的虚拟机,能够为特定工作负载提供卓越的网络性能和硬件级隔离,这一过程需要严格的硬件兼容性检查(CPU VT-d/AMD-Vi、BIOS 设置、网卡支持)、谨慎的操作步骤(启用直通后必须重启 ESXi 主机、预留虚拟机内存)以及对限制条件(如 vMotion、管理网卡隔离)的深刻理解,成功实施后,虚拟机将能如同物理服务器一样直接控制并使用该物理网络接口卡。

参考资料与引用来源:
- VMware官方文档:Configuring PCI Devices for Passthrough
 https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.vsphere.hostclient.doc/GUID-3B2C938F-0F61-4919-A6A0-14744B0F8C3D.html
- VMware知识库文章 (KB):Requirements for using DirectPath I/O passthrough on an ESXi/ESX host (1003)
 https://kb.vmware.com/s/article/1003
- VMware知识库文章 (KB):Enabling Passthrough on a PCI device and assigning it to a virtual machine (1021341)
 https://kb.vmware.com/s/article/1021341
- Intel VT-d 技术概述
 https://www.intel.com/content/www/us/en/architecture-and-technology/virtualization/vt-directed-io-spec.html
- AMD I/O Virtualization Technology (AMD-Vi)
 https://www.amd.com/en/support/io-virtualization
(注意:实际操作中,请务必查阅你所使用的具体 ESXi 版本、服务器硬件和网卡型号对应的最新官方文档)
 
  
			