1 PVE 与 NVIDIA 驱动版本配套
内核版本决定可用的 vGPU 软件分支与 Host 驱动版本,选错会导致 DKMS 编译失败或 nvidia-smi 找不到设备。按下表选型(数据取自 Proxmox 官方 wiki,2026-04 更新):
| pve-manager | 内核 | vGPU 软件分支 | NVIDIA Host 驱动 |
|---|---|---|---|
| 8.4.1 | 6.8.12-11-pve | 18.3 | 570.158.02 |
| 8.4.1 | 6.11.11-2-pve | 18.3 | 570.158.02 |
| 8.4.1 | 6.14.5-1-bpo12-pve | 18.3 | 570.158.02 |
| 9.2.2 | 7.0.2-6-pve | 19.5 | 580.159.01 |
| 9.2.2 | 7.0.2-6-pve | 20.1 | 595.71.03 |
选型原则:
- 用当前稳定版 PVE 配对应分支的最新驱动。同一分支内较新的驱动也能兼容相同或更早的内核。
- NVIDIA 自 vGPU 18.0 起才官方支持 PVE,PVE 9.x 至少用 18.3,不要再用 15.x/16.x。
- Guest 驱动版本需与 Host 驱动匹配,对应关系查 NVIDIA vGPU 文档。
6.8 及更新内核、GRID 17.3+ 改变了驱动的底层接口,主机上的
qemu-server必须 ≥ 8.2.6。先做第 2 步升级即可满足。
vGPU 是 NVIDIA 授权功能,Host/Guest 驱动需在 NVIDIA 企业门户下载(选 Linux KVM),生产环境需购买 vGPU 授权。
2 升级 PVE 到新版本
登录主机 Shell(SSH 或 Web 界面的节点 Shell),执行升级脚本(换 USTC 源、apt update、dist-upgrade 三步合一):
curl -o- http://vdi.doracloud.cn:9000/software/pveupdate.sh | bash
完成后 reboot 重启,让新内核生效。
图 2-1:脚本结束时输出源更新与版本升级日志,随后提示重启。
升级前,确认 BIOS 已开启 VT-d/AMD-Vi、SR-IOV、Above 4G Decoding、ARI(Ampere 及更新的卡需要 SR-IOV 与 ARI)。
3 运行 pve-nvidia-vgpu-helper 准备环境
从 pve-manager 8.3.4 起,PVE 内置 pve-nvidia-vgpu-helper。旧版本先手动安装:
apt install pve-nvidia-vgpu-helper
执行准备命令:
pve-nvidia-vgpu-helper setup
该命令自动完成屏蔽 nouveau、安装内核头文件、DKMS 等准备工作。提示是否安装缺失的包时输入 y。看到以下信息即完成:
All done, you can continue with the NVIDIA vGPU driver installation.
图 3-1:setup 末尾打印 “All done…” 提示,表示准备就绪。
之前若加载过 nouveau 驱动,执行后须重启一次,确保它不再加载。后续若安装可选内核,需同时装对应的
proxmox-headers-X.Y包,DKMS 才能工作。
4 安装 NVIDIA vGPU Host 驱动
从 NVIDIA 门户获取与第 1 节匹配的 Host 驱动包(下载时 Hypervisor 选 Linux KVM),通过 SCP/WinSCP 拷到主机。以 580.159.01 为例:
chmod +x NVIDIA-Linux-x86_64-580.159.01-vgpu-kvm.run
./NVIDIA-Linux-x86_64-580.159.01-vgpu-kvm.run --dkms
安装步骤说明:
--dkms参数确保内核升级后自动重建模块。- 安装器询问是否用 DKMS 注册内核模块源时选
yes。 - 安装完成后
reboot重启。
重启后查看显卡状态:
nvidia-smi
输出正确显示 GPU 型号、显存和驱动版本即安装成功。
图 4-1:nvidia-smi 列出显卡型号、显存与 Driver Version。
开启 Secure Boot 时,模块必须签名。先
apt install shim-signed grub-efi-amd64-signed mokutil,再用--dkms --skip-module-load安装并在签名提示选no,随后用dkms build/dkms install --force重建模块,并把/var/lib/dkms/mok.pub密钥通过 MOK 导入 UEFI(开机需物理显示或 IPMI 确认)。
5 启用 SR-IOV(Ampere 及更新的显卡)
Pascal/Turing 老卡跳过本节。Ampere 及更新的显卡需启用 SR-IOV 才能切分 vGPU。pve-nvidia-vgpu-helper 提供开机自启服务,取代了手写 systemd 服务:
systemctl enable --now pve-nvidia-sriov@ALL.service
把 ALL 换成具体 PCI ID(如 0000:01:00.0)可只对单卡启用。该服务在 vGPU 守护进程和虚拟机自启之前运行,--now 使其立即生效。
验证虚拟功能已生成:
lspci -d 10de:
物理卡(如 01:00.0)之外出现多个 virtual function(01:00.4、01:00.5 …)即成功。
图 5-1:lspci -d 10de: 在物理卡下方列出多行同型号 3D controller,即 SR-IOV 切出的虚拟功能。
6 验证与对接 DoraCloud
6.1 在 PVE 中创建 Resource Mapping
进入 数据中心 → Resource Mappings 新建映射,勾选 Use with mediated devices,选中该卡的全部虚拟功能。虚拟机启动时自动取用第一个可用功能,同时支持热迁移与权限隔离。
图 6-1:Resource Mapping 编辑界面勾选 “Use with mediated devices” 并全选虚拟功能。
查询某映射可创建的 vGPU 类型:
pvesh get /nodes/NODENAME/hardware/pci/MAPPINGNAME/mdev
6.2 DoraCloud 桌面池配置
DoraCloud 连接 PVE 后自动发现 vGPU 资源。配置步骤:
- 安装 DoraCloud,从远程镜像仓库下载带 vGPU 驱动的模板(如 win10LTSC2021)。模板缺驱动时编辑模板安装 Guest 驱动。
- 在桌面池中选 GPU 型号与 vGPU 类型;多种切分规格时引用对应的 Resource Mapping。
图 6-2:DoraCloud 桌面池编辑界面选中 GPU 型号与 vGPU 切分规格。
同一颗 GPU 芯片同一时间只能启用一种切分模式,且同卡上每个 vGPU 显存必须相等。
7 常见故障排查
| 现象 | 可能原因 | 处理方法 |
|---|---|---|
DKMS 编译失败 / nvidia-smi 报 No devices |
驱动版本与内核不匹配 | 按第 1 节表格换驱动 |
setup 后驱动仍加载 nouveau |
未重启 | 执行后重启一次 |
lspci -d 10de: 无虚拟功能 |
SR-IOV 未启用 | 执行第 5 节的服务,确认 BIOS 已开 SR-IOV/ARI |
| vGPU 启动失败、IOMMU 分组异常 | 主板将 GPU 并入同组 | BIOS 开 ACS Enable,参见 KB0037 |
| Windows 客户机蓝屏、vGPU 失效 | Windows 快速启动导致混合关机 | 关闭快速启动,或 Powercfg -h off |
| Secure Boot 下模块无法加载 | 模块未签名 | 用 MOK 导入密钥后重建 DKMS 模块 |
| 工作站卡(A5000 等)查不到 vGPU | 仍处于显示输出模式 | 用 Display Mode Selector 切到关闭显示模式,先确保该卡未接显示器 |
参考来源:Proxmox 官方 wiki《NVIDIA vGPU on Proxmox VE》。