在 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 版本、服务器硬件和网卡型号对应的最新官方文档)
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/16948.html