VMware 中的 GPU 直通 (vDGA):完整指南

最后更新: 14/01/2026
作者: 艾萨克
  • VMware 中的 GPU 直通 (vDGA/VMDirectPath I/O) 将完整的物理 GPU 映射到虚拟机,以实现接近原生性能。
  • 它的使用需要满足严格的要求。 硬件 虚拟机上的(VT-d/AMD-V、IOMMU、MMIO 64 位)和 EFI/UEFI 固件。
  • 启用 vDGA 会导致使用直通模式 GPU 的虚拟机失去一些关键的 vSphere 功能,例如 vMotion、DRS 和快照。
  • 与 vGPU 和其他解决方案相比,vDGA 优先考虑专用性能,而不是灵活性和在多个虚拟机之间共享 GPU 的能力。

VMware 上的 vDGA GPU 直通

在 VMware 中将物理 GPU 直接连接到虚拟机。 在处理大量图形任务时,这种改变会带来巨大的不同。 IA 或者用于 3D 渲染。从模拟显卡切换到通过直通(vDGA / VMDirectPath I/O)直接访问显卡,可以使虚拟机的性能更接近物理机,但作为交换,它也增加了一些要求和限制,这些要求和限制在开始之前应该非常清楚。

此外,在当前的生态系统中,虚拟化环境中使用 GPU 的方式有多种并存: 专用直通、共享虚拟GPU以及BitFusion或GPU分区等技术了解每项技术的作用、适用场景以及如何在 vSphere/ESXi 中进行配置(以及与 Hyper-V DDA 等类似技术的关系)是避免在硬件或所选虚拟机管理程序版本方面陷入困境的关键。

VMware 中的 GPU 直通(vDGA / VMDirectPath I/O)是什么?

VMware 中的 GPU 直通,也称为 vDGA 或 VMDirectPath I/O在这种运行模式下,安装在 ESXi 主机上的物理显卡直接分配给虚拟机。客户操作系统不再使用由虚拟机管理程序模拟的图形适配器,而是将 GPU 视为几乎直接插入物理主板的图形适配器。

这个快捷方式允许虚拟机利用 图形芯片的所有功能、显存和高级特性 例如,它可以原生支持 CUDA、OpenCL、Direct3D 和 OpenGL 等技术,几乎不会因虚拟机管理程序而增加额外开销。在 VMware 实验室测试中,与在裸机上运行相同的 GPU 相比,性能通常会损失 4-5% 左右。

实际上,使用GPU直通意味着 该显卡完全专用于单个虚拟机。多个虚拟机之间没有细粒度的资源分配,也没有像 vGPU 解决方案那样在 ESXi 上加载第三方软件层来共享显卡。 NVIDIA公司 网格。

需要注意的是,这种方法与其他在虚拟化中使用 GPU 的方法有所不同,例如: NVIDIA vGPU(共享 vGPU)、Hyper-V 或 BitFusion 类解决方案上的 RemoteFX/分区这些技术旨在利用不同的虚拟化或远程重定向技术,将一个 GPU 或一组 GPU 分配到多台机器上。

在 VMware 领域,当我们谈论 vDGA 时,我们本质上是在描述这一点。 将GPU的PCIe设备直接分配给虚拟机 使用 VMDirectPath I/O,它既有优点(性能),也有缺点(移动性和高可用性限制)。

VMware 的 VMDirectPath GPU 架构

在 vSphere 中使用 GPU 直通的优势

改用vDGA的主要原因是: 图形和计算性能非常接近物理计算机。通过省略 PCIe 设备的大部分虚拟化层,模拟 GPU 的典型瓶颈消失了,虚拟机可以更流畅地运行游戏、3D 应用程序或 AI 引擎。

在集成显卡或默认模拟虚拟显卡性能远不能满足需求的情况下,这一点尤为明显: 高级图形设计、CAD、3D建模与渲染、视频编辑、动画和游戏开发它在训练严重依赖 CUDA 或同等技术的机器学习模型和 AI 工作负载方面也至关重要。

另一个明显的优势是数据中心层面硬件使用的灵活性更高。无需再像以前那样拥有…… 每个用户或每个项目一个物理工作站可以将一台容量充足的 ESXi 主机分配给多个虚拟机,每个虚拟机都可以拥有自己的 GPU 直通,并可以调整计划或应对高峰需求。

在某些环境下,尤其是在已有空闲 PCIe 插槽的服务器的情况下, 按用户或项目计费 与维护一批功能强大的物理工作站相比,这可能成本更低,尤其是在不需要每天 24 小时使用显卡,并且可以根据工作高峰期重新配置显卡的情况下。

最后,在安全性和运营方面也存在间接好处:通过维护图形工作负载 在隔离的虚拟机中如果出现问题(例如漏洞利用、驱动程序问题、配置错误),只要遵守直通的限制(我们稍后会看到),就更容易控制影响,恢复到以前的快照或从备份中恢复。

GPU直通与vGPU及其他替代方案

在 VMware 生态系统中,有多种方式可以利用显卡,并非所有方式都将显卡完全分配给单个虚拟机。最常见的方式包括: vDGA / VMDirectPath I/O、vGPU(NVIDIA GRID 或其他)以及远程访问/计算解决方案,例如 BitFusion.

  如何逐步禁用网络浏览器中的自动完成功能

在直接直通模式 (vDGA) 下,GPU 被分配 仅限虚拟机计算核心和显存不会在多个虚拟机之间共享,虚拟机管理程序的作用几乎不存在,它只是将 PCIe 设备路由到虚拟机。这是最容易理解的方案,也是最接近配备独立显卡的物理服务器的方案。

在 vGPU 方法中,需要使用专门的软件(例如 VMware vSphere 上的 NVIDIA GRID vGPU它在控制器级别处理 GPU 虚拟化,并公开 GPU 的虚拟实例,这些实例可以同时分配给多个虚拟机。每个虚拟机都能看到 GPU 的一个“切片”,这些切片拥有固定或共享的资源。

vGPU允许多个虚拟桌面或服务器共享一张显卡,这在以下方面非常有用: VDI、轻量级加速办公环境、零售或酒店行业的一线图形工作站或者在用户间图形使用峰值不均衡的情况下。作为交换,这种方式会带来一些开销,并且无法达到像将整个物理 GPU 专用于单个虚拟机那样的峰值性能。

还有一些解决方案,例如 BitFusion Flexdirect 及类似技术这使得可以通过网络从不同的虚拟机使用 GPU,非常适合 AI 和 HPC 工作负载,因为在这些工作负载中,GPU 更像是远程计算资源,而不是用户图形界面的显卡。

选择 vDGA、vGPU 或远程 GPU 型号 这取决于你是否需要充分利用单个机器的 GPU(直通),是否想将昂贵的显卡分配给许多具有中等工作负载的用户(vGPU),或者关键在于协调 GPU 池以进行分布式计算(BitFusion 等)。

在 ESXi 上使用 vDGA 的硬件要求

在 VMware 中规划 GPU 直通部署之前,您需要确保: 该硬件平台满足一系列条件 这不仅仅是“将显卡插入服务器”那么简单。

首先,ESXi主机主板的处理器和芯片组必须支持 使用 IOMMU 进行虚拟化。 在 英特尔 这是通过英特尔的 VT-x 和 VT-dy 技术实现的,也是通过 AMD 的 AMD-V 和 IOMMU 技术实现的。服务器的 BIOS/UEFI 通常提供相应的选项。 激活虚拟化扩展 I/O。

其次,你需要检查支撑板。 MMIO 内存映射大于 4 GB (有时也称为“4G以上解码”、“4G以上内存映射I/O”或类似名称)。这对于高端GPU来说尤其重要,例如: 特斯拉P100、V100 及同等芯片在其 BAR(基地址寄存器)中声明了非常大的内存区域。

有些高端显卡可以映射 超过 16 GB 的 MMIO 空间因此,除了演奏之外 BIOS然后,需要调整 vSphere 中高级虚拟机设置中的某些参数,以便虚拟机能够使用该 GPU 启动而不会出现资源不足错误。

当然,GPU本身也必须是 与服务器平台兼容 并获得主机制造商(戴尔、HPE、 联想 Lenovo等等)在直通模式下使用时。实际上,大多数现代 PCIe GPU 都能正常工作,但建议查看兼容性列表,特别是对于 GRID 显卡或非常新的型号。

软件要求和版本兼容性

在软件层面,需要明确的是: VMware 在 vSphere 6.x 及更高版本中支持 vDGA然而,一些用户报告称,某些硬件组合存在特定问题(例如,戴尔 R720 服务器中的 NVIDIA GRID GPU 和 ESXi 6.x)。

在这些情况下,通常会看到诸如“设备已被使用”之类的错误,或者出现表明设备已在使用中的症状。 从 ESXi 5.5 升级到 6.x 后,直通功能停止工作。但实际上,这是由于特定的漏洞、PCI 设备管理或驱动程序的变化,而不是官方停止支持。

使用 GPU 直通的客户操作系统必须具备 虚拟机内已安装官方厂商驱动程序 (NVIDIA、AMD、Intel),因为在使用 VMDirectPath I/O 时,ESXi 不会为该显卡加载任何特定的驱动程序;虚拟机管理程序只是将设备暴露给客户机。

此外,虚拟机必须配置为启动到 EFI 或 UEFI 模式 当使用声明了大型 MMIO 内存区域的 GPU 时,这一点至关重要:错误的虚拟机固件可能会导致故障。 引导 或者 GPU 无法从客户操作系统正确初始化。

在客户端,如果通过以下方式访问虚拟机: 远程桌面(RDP 或其他协议)需要激活相应的策略,以便客户系统在远程会话中使用硬件图形适配器,而不是使用没有加速功能的通用驱动程序。

  Windows 更新在 Windows 7 中不起作用。我该怎么办?

VMware 中的 GPU 直通配置

配置 ESXi 主机以在直通模式下使用 GPU

第一个实际步骤是准备…… 将 GPU 暴露为 DirectPath I/O 设备的 vSphere/ESXi 服务器这包括访问 BIOS,检查主机上的 PCI 清单,并标记该卡以便将其分配给虚拟机。

如果 GPU 需要较大的 MMIO 内存区域(16 GB 或更多),则需要在服务器的 BIOS/UEFI 中查找类似这样的选项。 “高于 4G 解码”或“高于 4G 的 PCI 64 位资源处理” 并激活它们。具体名称因制造商而异,但通常可以在 PCI 设置或高级资源部分找到。

使用这些设置启动 ESXi 后,您可以在 vSphere Client 中转到相应的主机并进行访问。 “配置 → 硬件 → PCI 设备 → 编辑” 要查看检测到的 PCI 设备列表,您将看到 NVIDIA、AMD 或类似的显卡以及服务器的其他 PCI 硬件。

如果 GPU 尚未启用 DirectPath I/O,只需选中该复选框即可。 入口处的传递箱 在该列表中进行选择。保存更改时,vSphere 会提示您重启主机以应用配置,因为虚拟机管理程序需要预留并准备设备,以便重新分配给虚拟机。

重启后,返回到该部分 “配置 → 硬件 → PCI 设备” 将显示一个名为“可供虚拟机使用的 DirectPath I/O PCI 设备”的窗口,其中列出了所有可用于虚拟机的设备,包括 GPU,以及在许多情况下,像 Mellanox 这样的高级网络适配器。

准备和配置虚拟机

主机准备就绪后,下一步是创建或调整将使用 GPU 的虚拟机。首先要确保虚拟机已正确配置。 它采用合适的 EFI/UEFI 固件创建。尤其是在高端 GPU 和高 MMIO 的场景下。

在 vSphere 客户端中,只需选择虚拟机,然后转到 “编辑设置 → 虚拟机选项 → 启动选项” 并确认“固件”字段中选择了“EFI”或“UEFI”。如果没有选择,则需要进行更改(在某些情况下,如果虚拟机或操作系统不支持热插拔,则需要重新创建虚拟机或操作系统)。

当使用直通功能且卡映射的 MMIO 空间超过 16 GB 时,建议调整虚拟机配置中的一些高级参数,这些参数可通过以下方式访问: “编辑设置 → 虚拟机选项 → 高级 → 配置参数 → 编辑配置”您可以在此处添加与 pciPassthru 相关的密钥,以控制地址空间的保留方式。

具体来说,通常会启用 64 位 MMIO,并为该区域定义一个大小,该大小由以下方式计算得出: 虚拟机将分配多少个高端GPU?通常的经验法则是将 16 乘以 GPU 的数量,并将结果向上取整到下一个 2 的幂(例如,两个这样的 GPU 将最终得到 64 GB 的 64 位 MMIO)。

调整这些参数后,即可执行安装或验证安装是否成功。 客户操作系统支持 EFI/UEFI,并且能够处理相关的内存大小和 GPU。目前,显卡尚未连接到虚拟机;环境只是在进行准备,以便连接后,一切能够顺利启动,不会因资源不足或固件不兼容而出现错误。

使用 VMDirectPath I/O 将 GPU 分配给虚拟机

一旦主机将 GPU 标记为可用于 DirectPath I/O 并且虚拟机配置正确,就可以开始执行操作了。 将该卡与该虚拟机进行物理关联。此步骤必须在虚拟机完全断电的情况下进行。

在 vSphere 客户端中,选择虚拟机并输入 点击“编辑设置”查看虚拟硬件在设备列表中,如果GPU尚未列出,您可以点击“添加新设备”并选择“PCI设备”。然后,选择与显卡对应的PCI设备(例如,主机上检测到的NVIDIA或AMD显卡)。

配置保存后,虚拟机将在其硬件上显示类似这样的信息。 与特定 GPU 关联的“PCI 设备 0”从现在开始,当客户操作系统启动时,它将看到一个与物理显卡对应的额外 PCIe 适配器。

虚拟机必须具备以下条件: 保留分配给它的所有内存在 vSphere 中,此设置位于“编辑设置 → 虚拟硬件 → 内存”中,将“预留”值设置为虚拟机配置的 RAM 容量。如果没有此完整预留,PCI 直通可能会失败或出现间歇性问题。

  交通灯超时已过期 |解决方案

启动虚拟机后,在系统上 Linux 可以通过以下方式验证 GPU 的存在: comandos 类型 lspci | grep nvidia而在Windows系统中,它会出现在“显示适配器”下。 设备管理器同时看到 VMware 模拟图形适配器和专用物理 GPU 是正常的。

最后一步是在访客设备上安装以下软件: 驱动程序 GPU制造商官员应从 NVIDIA、AMD 或 Intel 网站下载驱动程序,避免使用通用驱动程序或提供的驱动程序。 Windows更新这可能并非针对传递场景进行优化。

vSphere 的限制和功能与 vDGA 不兼容

VMware 中 GPU 直通的缺点是: 平台的一些高级功能丢失了。 通过将物理设备直接分配给虚拟机来实现。这是获得接近原生性能所要付出的代价。

第一个重大牺牲是 vMotion 和 DRS启用直通模式的虚拟机无法热迁移到其他主机,因为显卡已物理锁定到原始服务器。涉及在集群中主机之间移动虚拟机的自动负载均衡策略也无法使用。

功能例如 传统快照或某些高可用性机制 对于该特定虚拟机而言,由于它依赖于非常特殊的物理硬件,因此冻结和恢复复杂状态的能力会受到影响。

另一个需要考虑的方面是,在这种模式下, GPU 不被多个虚拟机共享。如果同一台机器上需要多个具有图形加速功能的桌面或服务器,则每个虚拟机需要一张显卡;或者,也可以使用 vGPU 模型,将显卡虚拟化到多个实例中。

在支持方面,可能存在一些特殊情况,例如: 某些硬件和驱动程序的组合可能会导致问题。一些用户在特定服务器(例如 Dell R720)上使用 NVIDIA GRID 卡升级到 ESXi 6.x 时观察到,在这种情况下,建议查看 VMware 和 GPU 制造商的文档,并在必要时提交支持案例。

最后,需要指出的是,某些与图形交互的技术或服务,例如: 远程桌面、Windows 中的 Linux 子系统或高级操作系统功能如果检测到您在虚拟机中使用 GPU 直通功能,它们可能会干扰 NVIDIA 驱动程序或导致“代码 43”错误。

其他虚拟机管理程序中的 GPU 直通:与 Hyper-V 并行

虽然本文重点是 VMware,但了解以下方面也很有价值: 其他虚拟机管理程序(例如) 使用 KVM 和 virt-manager 进行虚拟化)满足将物理 GPU 分配给虚拟机的相同需求因为术语和工具虽然会改变,但基本思想是相似的。

在 Hyper-V 中,VMware VMDirectPath I/O 的等效项是 使用DDA(离散器件分配)进行直接器件分配该技术允许将特定的 PCIe 设备(例如 GPU 或 NVMe)直接映射到 Windows 虚拟机中,其控制级别和性能与 ESXi 中的直通类似。

早期版本的 Windows Server 使用了这项技术。 RemoteFX的 提供GPU虚拟化功能,允许多个虚拟机共享一张显卡。 El Temppo由于安全问题和性能限制(例如每个虚拟机 1GB 显存上限和 30 FPS),微软弃用了 RemoteFX,并将 DDA 作为专用 GPU 场景的主要途径。

在 Windows 10 和 Windows 11尤其是一些合辑,已经出现了对……的支持 GPU 分区以及 WSL2 和 Windows Sandbox 中的复用机制但是,它的配置通常涉及复杂的脚本和将驱动程序从主机复制到虚拟机,这不像在 vSphere 中分配设备那么直接。

了解这些替代方案能让我们明白: 通过直接的 PCIe 通道提供接近原生 GPU 访问的理念 虽然每个虚拟机管理程序都有自己的细微差别、命令和兼容性限制,但它在多个虚拟机管理程序中都很常见。

整个直通、vGPU 和 DDA 生态系统表明,只要配置得当并配备合适的硬件, 在内部使用强大的GPU是完全可行的。 生产用虚拟机 对于从要求苛刻的图形桌面到人工智能和高性能计算等各种工作负载,始终要假设您必须放弃传统虚拟化的某些便利,并密切关注驱动程序、虚拟机管理程序版本和 GPU 制造商的支持。

硬件虚拟化
相关文章:
如何逐步从 BIOS 或 UEFI 启用虚拟化