Proxmox VE 双 RTX 2080 Ti 显卡直通配置本文以一台自用 Proxmox VE 9.2.2 主机为例记录 GT 730 留给宿主机、双 RTX 2080 Ti 直通 Ubuntu 虚拟机的完整过程。1. 硬件拓扑本机安装三张 NVIDIA 显卡宿主机 PCI 地址设备用途04:00.0GeForce GT 730PVE 宿主机显示07:00.0RTX 2080 Ti 22 GB直通给 Ubuntu08:00.0RTX 2080 Ti 22 GB直通给 Ubuntu物理连接RTX 2080 Ti 1PCIe x16 RTX 2080 Ti 2PCIe x1 GT 730PCIe x1 双 2080 Ti通过 NVLink 桥连接2. 确认 PVE 识别三张显卡执行lspci-nn|grep-EiVGA compatible controller|3D controller|Display controller本机结果04:00.0 NVIDIA GK208B [GeForce GT 730] 07:00.0 NVIDIA TU102 [GeForce RTX 2080 Ti] 08:00.0 NVIDIA TU102 [GeForce RTX 2080 Ti]查看 NVIDIA 的全部 PCI 功能lspci-nn|grep-invidia一张 RTX 2080 Ti 通常包含.0 VGA/3D 控制器 .1 HDMI 音频 .2 USB 3.1 控制器 .3 USB Type-C UCSI 控制器3. 检查 PCIe 链路fordevin$(lspci-D|awk/VGA compatible controller|3D controller|Display controller/{print $1});doecho$devlspci-s$dev-vv|grep-ELnkCap:|LnkSta:done本机初始结果GT 730PCIe x1 RTX 2080 Ti 07:00PCIe x1 RTX 2080 Ti 08:00PCIe x16空闲状态下链路速度可能显示为 2.5 GT/s这是 PCIe 节能降速。通道宽度更能反映物理连接状态。4. 检查 IOMMU 分组执行find/sys/kernel/iommu_groups/-typel|sort-V也可以只查看目标设备find/sys/kernel/iommu_groups/-typel|sort-V|\grep-E04:00|07:00|08:00本机初始状态08:00.008:00.3位于独立 IOMMU 组07:00.007:00.3与 SATA、USB、网卡、GT 730、PCIe 桥混在同一组。完整混组中包含AMD SATA 控制器 AMD USB 控制器 多个 PCIe 桥 Realtek 千兆网卡 GT 730 RTX 2080 Ti该组绝不能整体直通否则可能导致系统盘或数据盘掉线管理网卡断开PVE 无法启动或失联。5. 为什么使用 ACS Override主板芯片组没有提供足够细粒度的 ACS 隔离因此多个下游 PCIe 设备被合并到同一个 IOMMU 组。对于自用、可信虚拟机环境可以使用pcie_acs_overridedownstream,multifunction让内核把设备拆分成更细的逻辑 IOMMU 组。必须注意ACS Override 不会改变真实硬件拓扑它只是覆盖内核的分组策略会降低设备间的硬件 DMA 隔离保证不适合多租户或运行不可信虚拟机的场景。本机是自用 PVE 主机因此接受这一风险。6. 确认引导方式执行[-d/sys/firmware/efi]echoUEFI||echoLegacy BIOSproxmox-boot-tool statuscat/proc/cmdlinegrep-E^GRUB_CMDLINE_LINUX_DEFAULT|^GRUB_CMDLINE_LINUX/etc/default/grub本机结果UEFI BOOT_IMAGE/boot/vmlinuz-7.0.2-6-pve GRUB_CMDLINE_LINUX_DEFAULTquiet虽然系统使用 UEFI但实际引导器是 GRUB因此需要修改/etc/default/grub7. 启用 ACS Override7.1 备份 GRUB 配置cp-a/etc/default/grub\/root/grub.backup.$(date%F-%H%M%S)7.2 修改内核参数编辑nano/etc/default/grub把GRUB_CMDLINE_LINUX_DEFAULTquiet改成GRUB_CMDLINE_LINUX_DEFAULTquiet pcie_acs_overridedownstream,multifunction7.3 更新 GRUBupdate-grub检查参数是否写入grep-Fpcie_acs_overridedownstream,multifunction\/boot/grub/grub.cfg|head7.4 重启reboot8. 验证 ACS Override重启后检查cat/proc/cmdline应包含pcie_acs_overridedownstream,multifunction查看日志dmesg|grep-EiACS override|ACS overrides|IOMMU|AMD-Vi检查显卡分组fordevin\0000:04:00.0 0000:04:00.1\0000:07:00.0 0000:07:00.1 0000:07:00.2 0000:07:00.3\0000:08:00.0 0000:08:00.1 0000:08:00.2 0000:08:00.3dogroup$(basename$(readlink-f/sys/bus/pci/devices/$dev/iommu_group))printf%-14s Group %-4s $dev$grouplspci-s${dev#0000:}done本机最终结果GT 730 VGA Group 21 GT 730 Audio Group 22 RTX 2080 Ti 07:00.0 Group 24 RTX 2080 Ti 07:00.1 Group 25 RTX 2080 Ti 07:00.2 Group 26 RTX 2080 Ti 07:00.3 Group 27 RTX 2080 Ti 08:00.0 Group 28 RTX 2080 Ti 08:00.1 Group 29 RTX 2080 Ti 08:00.2 Group 30 RTX 2080 Ti 08:00.3 Group 31此时两张 2080 Ti 已经与 SATA、网卡和 GT 730 分离。9. 配置 VFIO9.1 加载 VFIO 模块编辑nano/etc/modules加入vfio vfio_iommu_type1 vfio_pci9.2 确认设备 ID两张 RTX 2080 Ti 的设备 ID10de:1e04 显卡 10de:10f7 HDMI 音频 10de:1ad6 USB 3.1 控制器 10de:1ad7 USB Type-C UCSIGT 730 使用不同 ID10de:1287 显卡 10de:0e0f HDMI 音频因此可以按 ID 绑定两张 2080 Ti而不影响 GT 730。9.3 创建 VFIO 配置nano/etc/modprobe.d/vfio.conf写入options vfio-pci ids10de:1e04,10de:10f7,10de:1ad6,10de:1ad7 softdep nouveau pre: vfio-pci softdep snd_hda_intel pre: vfio-pci softdep xhci_pci pre: vfio-pci不要全局 blacklistnouveau否则宿主机的 GT 730 也可能失去驱动。9.4 更新 initramfsupdate-initramfs-u-kall然后重启reboot10. 验证 VFIO 绑定fordevin\04:00.0 04:00.1\07:00.0 07:00.1 07:00.2 07:00.3\08:00.0 08:00.1 08:00.2 08:00.3doecho$devlspci-nnk-s$dev|grep-E\VGA|Audio|USB|Serial|Kernel driver in usedone预期结果04:00.0 → nouveau 04:00.1 → snd_hda_intel 07:00.007:00.3 → vfio-pci 08:00.008:00.3 → vfio-pci这说明GT 730 继续由 PVE 宿主机使用两张 2080 Ti 已由 VFIO 接管两张计算卡可以交给虚拟机。11. 虚拟机直通配置虚拟机建议使用BIOSOVMFUEFI Machineq35 CPU Typehost在管理界面进入虚拟机 → 硬件 → 添加 → PCI 设备添加0000:07:00 0000:08:00勾选PCI-Express All Functions本机配置效果hostpci0: 0000:07:00,pcie1 hostpci1: 0000:08:00,pcie1对于纯 CUDA 计算理论上只直通.0显卡功能也可以。若不需要 HDMI 音频和 Type-C可以只添加 GPU 主功能。12. BIOS 关键配置必须确认SVMEnabled IOMMUEnabled Above 4G DecodingEnabled CSMDisabled本次实际故障添加双卡后虚拟机黑屏PVE NoVNC 无显示虚拟机看似内存占满。最终解决开启 Above 4G Decoding 关闭 CSM多张大显存显卡需要更大的 MMIO 地址空间Above 4G Decoding非常关键。13. 回退 ACS Override如果启用 ACS Override 后系统无法正常启动可在 GRUB 菜单中选中启动项按e临时编辑删除pcie_acs_overridedownstream,multifunction按CtrlX或F10临时启动。进入系统后恢复/etc/default/grub然后执行update-grubreboot14. 最终架构PVE 宿主机 └─ GT 730 Ubuntu 虚拟机 ├─ RTX 2080 Ti 22 GB └─ RTX 2080 Ti 22 GB └─ NVLink最终实现GT 730 保留给宿主机两张 2080 Ti 完整直通ACS Override 解决芯片组混组问题双卡在虚拟机内可使用 CUDA 和 NVLink。