跳转到内容

虚拟机里的显卡:直通、DDA 与 Windows 来宾能用到什么

核验于 2 分钟阅读

把显卡交给 Windows 虚拟机的三种方式、各自支持什么,以及决定它能否启动的 IOMMU/vBIOS 问题。

测试环境Pro (26H2) / Server · 版本号 26300.9457 / 26100.33650 · x64
E1
版本号
26300.9457 / 26100.33650
版本
Pro (26H2) / Server
架构
x64
支持
文档(E1)
证据
E1官方文档
核验日期
2026-10-29
页面类型
概念

“虚拟机里的显卡”有三种完全不同的东西,不能互换:

方式 来宾拿到什么 典型用途
DDA(离散设备分配) 一整块物理显卡,独占 Hyper-V、工作站虚拟机
完整 PCIe 直通 一整块物理显卡,独占 Proxmox/KVM、游戏虚拟机
虚拟 GPU(vGPU/GPU-P) 受支持显卡的一个切片 VDI、多会话

三种情况下来宾都看到真实显卡驱动,宿主都失去这张卡(vGPU 除外,它需要授权且限定平台)。

  1. 固件与 hypervisor 都开启 IOMMU。没有它就没有直通。
  2. 显卡必须独占一个 IOMMU 组——与芯片组或网卡同组就无法隔离。
  3. 来宾需要该卡的驱动——与裸机同一个驱动。
  4. vBIOS——部分消费级卡在虚拟机里不初始化,除非提供 vBIOS 或厂商开关。
  5. 配置过程中这张卡不能是宿主唯一的显示输出。
终端窗口
Get-PnpDevice -Class Display | Select-Object FriendlyName,Status,InstanceId
Get-CimInstance Win32_VideoController | Select-Object Name,DriverVersion,AdapterRAM

来宾里的 InstanceId 仍像 PCI 设备,这在直通下是正常的。Status : Error 通常意味着驱动绑上了但卡没初始化。

Windows Server 来宾:DDA 的具体要求

Section titled “Windows Server 来宾:DDA 的具体要求”

DDA 是 Hyper-V 上受支持的路径:

  • 显卡从宿主卸载并分配给一台虚拟机;
  • 分配/移除时虚拟机必须关机;
  • 来宾内部要装厂商驱动;
  • 部分服务器 GPU 支持分区(GPU-P),需要厂商支持与授权。

DDA 不是“显卡共享”:一张卡,同一时刻一台虚拟机。

  • 游戏:KVM + vBIOS + 宿主用另一张卡时效果不错;延迟取决于显示路径(looking-glass、HDMI 直通,或直通卡上直接接显示器)。
  • 计算(CUDA/ROCm):通常最简单——不需要显示路径。
  • 视频编码:需要来宾内的厂商编码器支持;部分消费级驱动在虚拟机里禁用编码。
现象 常见原因
带设备时虚拟机起不来 IOMMU 未开,或设备在共享组里
来宾能启动,显卡报 43/31 vBIOS 或驱动拒绝虚拟机
能用到重启 宿主回收了设备,或驱动更新
宿主失去显示 唯一的显卡被分配走了
性能极低 链路宽度/速率降级,或走了软件渲染

直通显卡的 43 错误是驱动策略拒绝,不是硬件故障——修复方式因厂商/驱动而异,部分消费级卡根本不支持。

终端窗口
# 宿主(Proxmox 示例):IOMMU 是否开启、设备如何分组
# dmesg | grep -e DMAR -e IOMMU
# for d in /sys/kernel/iommu_groups/*; do echo "IOMMU group ${d##*/}"; done

Windows 宿主上,设备管理器 → 查看 → 依连接排序设备 能看出显卡挂在哪个 PCIe 根端口下,对应你要对付的分组。

E1。DDA 与 GPU-P 的要求有微软文档依据。实验室宿主没有独显分配给虚拟机,未尝试直通——本文刻意不发布任何性能数字。

来源