在 Proxmox VE 上设置 GPU 直通
2026-07-24
GPU 直通技术使虚拟机能够直接访问物理 GPU,从而提升计算或图形处理任务的性能。本文将介绍如何在 Proxmox VE 上配置 GPU 直通。
什么是 Proxmox GPU 直通?
GPU 直通通过 VFIO 将主机的 GPU 绑定到虚拟机。主机内核会解除 GPU 的绑定,并将其交由客户机使用,从而实现接近原生的性能表现。Proxmox VE 利用 KVM 和 VFIO 模块来完成这一绑定过程。您必须确认硬件支持并配置 IOMMU。还需调整 BIOS 和内核设置,以确保主机将 GPU 的独占控制权交予虚拟机。
Proxmox 上 GPU 直通的先决条件
开始之前,请确认 CPU、主板、BIOS 和 GPU 均支持 GPU 直通。CPU 必须支持 IOMMU:Intel VT-d 或 AMD-Vi。BIOS 必须启用这些选项,以及 4G 解码或“高于 4G 解码”(Above 4G decoding)。
警告:将主机的主显卡直通给虚拟机可能导致主机失去响应,除非您具备带外管理能力(例如 IPMI 或基于 IP 的 KVM)。若直通的是主机控制台所依赖的唯一显卡,某些系统需禁用 CSM/传统启动模式。对于 UEFI 虚拟机,显卡固件(GPU ROM)必须支持 UEFI GOP;否则虽可使用 SeaBIOS 启动,但功能将受限。请加载 VFIO 模块:vfio、vfio_pci、vfio_iommu_type1(在较旧版本的 Proxmox 上还需加载 vfio_virqfd)。请确认 IOMMU 分组已将显卡及其配套音频设备单独隔离,避免与关键设备共享同一分组。可使用 Proxmox API 或命令 lspci -nnk 查看分组情况。
ACS 覆盖警告
部分硬件缺乏正确的 ACS 分组功能。您可添加 pcie_acs_override=downstream ,或使用 vfio_iommu_type1.allow_unsafe_interrupts=1。仅在必要时使用。ACS 覆盖可能带来安全或稳定性风险。建议优先选用支持原生隔离功能的硬件。
如何在 Proxmox 上设置 GPU 直通?
1. 主机配置
首先,在 BIOS 或 UEFI 中启用 IOMMU。启用“Intel VT-d”或“AMD IOMMU”,以及(如存在)“Above 4G decoding”。若主机控制台使用 UEFI 并通过 GPU 显示,则需禁用 CSM。然后重启进入 Proxmox VE。
安全地编辑 GRUB。对于 Intel 系统,请运行:
sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="[^"]*/& intel_iommu=on iommu=pt/' /etc/default/grub
对于AMD,请运行:
sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="[^"]*/& amd_iommu=on iommu=pt/' /etc/default/grub
如果需要启用 ACS 覆盖,请在空格后添加 pcie_acs_override=downstream。然后运行 update-grub 并重启系统。验证 IOMMU 是否已启用:cat /proc/cmdline | grep iommu 和 dmesg | grep -e DMAR -e AMD-Vi。您应能看到中断重映射已启用。
2. 加载和屏蔽模块
为 VFIO 创建专用的 modprobe 文件:
在较旧版本的 Proxmox 中,还需加载 vfio_virqfd。通过独立文件屏蔽 GPU 驱动程序。对于 NVIDIA:
echo "blacklist nouveau" > /etc/modprobe.d/blacklist-nouveau.confecho "blacklist nvidiafb" > /etc/modprobe.d/blacklist-nvidia.conf
适用于 AMD:
echo "blacklist amdgpu" > /etc/modprobe.d/blacklist-amdgpu.confecho "blacklist radeon" > /etc/modprobe.d/blacklist-radeon.conf
适用于 Intel 集成显卡:
echo "blacklist i915" > /etc/modprobe.d/blacklist-i915.conf
拉入黑名单后,重新生成 initramfs:update-initramfs -u。调试 initramfs 问题:journalctl -b 0 | grep vfio。重启并确认:lsmod | grep vfio。
3. 验证 IOMMU 分组
运行:
pvesh get /nodes/<nodename>/hardware/pci --pci-class-blacklist ""
或者检查 /sys/kernel/iommu_groups。识别显卡及其音频功能所属的组。确保该组内没有关键设备共用。若分组范围过宽,可在 GRUB 中启用 ACS 覆盖选项,然后重启并重新检查。通过日志确认 ACS 相关信息:dmesg | grep ACS。
使用 lspci -tv 命令将设备映射到 CPU 插槽,以优化 NUMA 局部性。选择与 GPU 所在 NUMA 节点一致的宿主机 CPU 和虚拟机 CPU 绑定策略。
4. 主机模块绑定(高级)
如果自动绑定失败,请在 VFIO 配置中指定 ID:
echo "options vfio-pci ids=1234:5678,abcd:ef01" > /etc/modprobe.d/vfio-ids.conf
请使用 lspci -nn 命令输出的供应商:设备 ID 替换此处。如有需要,请添加 softdep:
echo "softdep <drivername> pre: vfio-pci" > /etc/modprobe.d/<drivername>.conf
更新 initramfs 并重启。通过 lspci -nnk 确认 GPU 已绑定至 vfio-pci。
5. 虚拟机配置
在机器和固件设置中,选择q35芯片组;对于UEFI,请选择OVMF。确保固件变量分区大小≥1MB(Proxmox会自动处理)。请确认GPU ROM支持UEFI GOP;若不支持,则需使用SeaBIOS,但功能将受限。
在虚拟机的硬件选项卡中,点击添加,然后选择PCI 设备。选择 GPU 地址(例如:00:02.0)。如果音频设备是独立的,请勾选全部功能。启用PCIe(pcie=on)。如果这是唯一的 GPU,请勾选主 GPU(x-vga=on)。通过命令行界面操作:
qm set <VMID> -machine q35 -hostpci0 01:00.0,pcie=on,x-vga=on
多功能:
qm set 100 -hostpci0 01:00.0,rombar=0 -hostpci1 01:00.1
将此配置绑定到用于 GPU 任务的虚拟机。
6. 客户操作系统安装
正常安装客户操作系统。Windows 系统:为避免出现“错误代码 43”,请安装 NVIDIA 官方显卡驱动程序,版本号需为 465 或更高版本。隐藏虚拟机监视器:添加 CPU 参数:
args: -cpu 'host,kvm=off,hv_vendor_id=proxmox'
若供应商锁定驱动程序,请转储GPU的ROM,或在虚拟机高级设置中伪造设备ID。Linux系统:安装驱动程序,并测试CUDA/OpenCL或图形应用程序。需要将本地显示器连接至GPU,或在客户机内使用RDP/VNC;Proxmox控制台无法显示GPU输出。
别忘了备份您的虚拟机!
为确保在配置GPU直通或进行未来更新期间Proxmox虚拟机的安全,部署一套可靠的备份方案至关重要。Vinchin备份与恢复是一款专业的企业级虚拟机备份解决方案,支持Proxmox VE以及VMware、Hyper-V、XenServer、oVirt等主流虚拟化平台。凭借无代理备份、基于CBT的增量备份、即时恢复和自动调度等功能,Vinchin可帮助您以极少的操作投入,保障Proxmox虚拟环境的安全。无论您运行的是计算密集型工作负载,还是GPU加速型虚拟机,Vinchin都能确保您的数据与配置始终安全、可恢复。
要备份您的 Proxmox 虚拟机,请执行与该虚拟机关联的四个步骤:
1. 选择要备份的 Proxmox 虚拟机
2. 选择备份存储位置
3. 配置备份策略
4. 提交任务
Vinchin 拥有全球用户群和高评分。立即获取15天全功能免费试用。
下载免费试用版
适用于多种数据备份
* 15天全功能免费安全下载
Proxmox GPU直通常见问题解答
问题1:如何检查CPU的IOMMU支持?
A1:运行 dmesg | grep -e DMAR -e AMD-Vi,并查找是否启用了中断重映射。
Q2:如何在 IOMMU 组中隔离 GPU?
A2:仅在必要时使用 ACS 覆盖:将 pcie_acs_override=downstream 添加到 GRUB 并重启以分离设备。
问题3:控制台屏幕空白时,如何访问来宾显示界面?
A3:将显示器连接到GPU,或在客户操作系统内设置RDP/VNC。
Q4:直通GPU为何显示“错误 43”?
A4:隐藏 Hyper-V/KVM,使用最新驱动程序,伪造厂商/设备 ID,或在 GPU ROM 被锁定时转储其内容。
结论
在 Proxmox 上启用 GPU 直通可显著提升虚拟机性能。请依次完成硬件检测、BIOS 设置调整以及内核参数修改;加载 VFIO 模块,隔离 IOMMU 组,并将 GPU 绑定至 VFIO;配置虚拟机时,尽可能选用 q35 芯片组和 OVMF 固件;通过 CPU 亲和性设置与 NUMA 优化以获得最佳性能;针对“错误代码 43”、重置异常及日志问题进行故障排查;关键配置变更前务必做好备份。Vinchin 提供可靠的备份方案,全面保障您的虚拟机及数据安全。