我的 Proxmox GPU 直通设置
我在 Proxmox VE 上使用 NVIDIA 显卡进行 GPU 直通的个人笔记和配置。包括我用于高性能虚拟机的确切设置。
技术栈: Proxmox VE, NVIDIA, QEMU, VFIO
查看代码 我的 Proxmox GPU 直通设置
这些是我在 Proxmox VE 家庭实验室上设置 GPU 直通的个人笔记。我分享这个配置是因为我花了好几天才让它正常工作,这些是对我的硬件有效的确切步骤。
为什么我需要这个
我想把多台物理机器整合到一台 Proxmox 服务器中,同时保持 GPU 性能,用于:
- 具有近乎原生性能的游戏 Windows 虚拟机
- 使用 CUDA 加速的 ML/AI 实验
- 视频编码项目
- 测试 GPU 加速应用程序
我的硬件设置
- Proxmox VE 8.1
- 启用 VT-d 的 Intel CPU
- 支持 IOMMU 的华硕主板
- 用于直通的 NVIDIA RTX 3080
- 用于 Proxmox 主机显示的集成显卡
我的配置步骤
1. BIOS 设置
我在 BIOS 的 Advanced > CPU Configuration 下启用了 VT-d。这很关键 - 没有它,什么都不会工作。
2. GRUB 配置
这是我在系统的 /etc/default/grub 中添加的内容:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"然后更新 GRUB:
update-grub注意:如果你有 AMD CPU,使用 amd_iommu=on。
3. 加载 VFIO 模块
编辑 /etc/modules:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd4. 黑名单 GPU 驱动
创建 /etc/modprobe.d/blacklist.conf:
blacklist nouveau
blacklist nvidia
blacklist nvidiafb
blacklist nvidia_drm5. 更新 initramfs
update-initramfs -u -k all验证 IOMMU 组
重启后,检查 IOMMU 组:
#!/bin/bash
for d in /sys/kernel/iommu_groups/*/devices/*; do
n=${d#*/iommu_groups/*}; n=${n%%/*}
printf 'IOMMU Group %s ' "$n"
lspci -nns "${d##*/}"
done你的 GPU 应该在它自己的 IOMMU 组中,或者只与它的音频设备在一起。
虚拟机配置
- 在 Proxmox 网页界面添加 PCI 设备
- 如果 GPU 有音频,启用”All Functions”
- 将机器类型设置为
q35 - 在虚拟机配置中添加
hostpci0行:
hostpci0: 0000:01:00,pcie=1,x-vga=1常见问题
虚拟机启动时黑屏
- 尝试在虚拟机内核参数中添加
video=efifb:off - 确保 Proxmox 主机有第二个 GPU
Windows 中的代码 43
- 在虚拟机配置中添加 vendor-id:
vendor-id=1234567890ab - 隐藏 KVM:
args: -cpu host,kvm=off
性能差
- 启用 MSI 中断
- 对存储和网络使用
virtio驱动 - 固定 CPU 核心以获得更好性能
我的结果
配置好一切后,我现在运行着:
- Windows 11 虚拟机用于游戏,约 95% 的原生 RTX 3080 性能
- 带 CUDA 的 Ubuntu 虚拟机用于 AI/ML 实验
- 大多数游戏稳定 4K 60+ FPS
- 可以在虚拟机之间重新分配 GPU 而无需重启主机
这个设置已经稳定运行了几个月。
有用的资源
这些资源帮助我解决了问题:
- Proxmox VE 官方文档
- Arch Wiki GPU 直通指南
- 我完整的配置文件和自动化脚本在上面链接的 GitHub 仓库中
最后更新:2025年11月 我的设置:Proxmox VE 8.1 + NVIDIA RTX 3080 状态:生产就绪且稳定