PVE 到 QM NVIDIA L20 GPU 直通完整实践手册(openEuler / AI Engine 标准 SOP)
适用场景:
Proxmox VE(PVE)宿主机
NVIDIA L20 / AD102GL GPU
openEuler 22 / 24 Guest
单卡直通(推荐生产)
AI 推理节点(vLLM / Docker GPU)
一、目标架构 宿主机
PVE(如:pm5)
板载 ASPEED 显卡负责宿主显示
2 × NVIDIA L20
VFIO 独占 GPU
虚拟机规划
VM116 → 63:00
VM117 → e1:00
Guest
openEuler 22 / 24
NVIDIA Driver
CUDA
Docker GPU Runtime
vLLM / DeepSeek / Qwen
二、PVE 宿主机准备(首次即可) 1)BIOS 配置 开启以下选项:
VT-d / Intel IOMMU = Enabled
Above 4G Decoding = Enabled
SR-IOV = Enabled(可选)
2)GRUB 开启 IOMMU 编辑:
修改:
1 GRUB_CMDLINE_LINUX_DEFAULT ="quiet intel_iommu=on iommu=pt"
生效:
3)加载 VFIO 模块 编辑:
写入:
1 2 3 4 vfio vfio_iommu_type1 vfio_pci vfio_virqfd
4)黑名单宿主 NVIDIA 驱动 1 2 3 4 5 cat > /etc/modprobe.d/pve-blacklist.conf <<EOF blacklist nouveau blacklist nvidia blacklist nvidiafb EOF
5)绑定 GPU 到 vfio-pci 查看 GPU Device ID:
1 lspci -nn | grep -i nvidia
无论GPU Virtualization Mode是整卡直通还是vGPU,虚拟机/物理机都应该出现类似 Nvidia 或 vGPU 的关键字。
示例输出:
1 2 63:00.0 3D controller [0302]: NVIDIA Corporation AD102GL [L20] [10de:26ba] e1:00.0 3D controller [0302]: NVIDIA Corporation AD102GL [L20] [10de:26ba]
写入 VFIO 配置:
1 echo 'options vfio-pci ids=10de:26ba disable_vga=1' > /etc/modprobe.d/vfio.conf
注意:这里必须写 vendor:device,不能写 PCI 地址。
6)刷新 initramfs 并重启 1 2 update-initramfs -u -k all reboot
7)验证宿主机绑定是否成功 1 2 lspci -nnk -s 63:00.0 lspci -nnk -s e1:00.0
必须看到:
1 Kernel driver in use: vfio-pci
三、QM 单卡直通标准实践 1)VM116 → 直通 63:00 1 2 3 4 5 6 7 8 qm set 116 -cpu x86-64-v2-AES qm set 116 -cores 64 qm set 116 -memory 65536 qm set 116 -hostpci0 0000:63:00 qm set 116 -boot order=scsi0\;net0 qm set 116 -delete bios qm set 116 -delete machine qm set 116 -delete vga
2)VM117 → 直通 e1:00 1 2 3 4 5 6 qm set 117 -cpu x86-64-v2-AES qm set 117 -cores 32 qm set 117 -memory 65536 qm set 117 -hostpci0 0000:e1:00 qm set 117 -boot order=scsi0\;net0 qm set 117 -delete vga
四、启动虚拟机验证 启动虚拟机:
1 2 qm start 116 qm start 117
进入验证:
1 lspci | grep -iE 'nvidia|vga|3d'
应看到:
1 NVIDIA Corporation AD102GL [L20]
五、Guest openEuler 驱动安装 安装英伟达驱动的依赖:
RedHat系:
1 yum install -y kernel-devel-$(uname -r) kernel-headers-$(uname -r) gcc make dkms
Debian系:
1 apt install -y linux-headers-$(uname -r) build-essential dkms
查看显卡型号:
1 lspci | grep -iE 'nvidia|vga|3d'
下载地址:https://www.nvidia.cn/Download/index.aspx
安装 NVIDIA 驱动:
无卡图例
安装流程 一般直接一路回车即可
安装完成后验证:
六、Docker GPU Runtime 安装完驱动后,还需要安装nvidia-container-toolkit以支持容器运行时:
Redhat系
1 2 3 4 5 6 7 8 9 10 11 12 13 // 添加 NVIDIA Container Toolkit 仓库 curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | tee /etc/yum.repos.d/nvidia-container-toolkit.repo // 如需使用国内镜像加速,替换为腾讯云源 sed -i 's/nvidia.github.io/mirrors.tencentyun.com/g' /etc/yum.repos.d/nvidia-container-toolkit.repo yum install -y nvidia-container-toolkit dnf install -y nvidia-container-toolkit // 配置 Docker 使用 NVIDIA 运行时 nvidia-ctk runtime configure --runtime=docker systemctl restart docker
Debian系
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 // 添加 NVIDIA 官方 GPG 密钥并配置源 curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \ sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg && \ curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | tee /etc/apt/sources.list.d/nvidia-container-toolkit.list // 如需使用国内镜像加速,替换为腾讯云源 sed -i 's/nvidia.github.io/mirrors.tencentyun.com/g' /etc/apt/sources.list.d/nvidia-container-toolkit.list apt update apt install -y nvidia-container-toolkit // 配置 Docker 使用 NVIDIA 运行时 nvidia-ctk runtime configure --runtime=docker systemctl restart docker
七、常见问题 1)vfio.conf 写错 错误示例:
正确示例:
2)PVE 控制台打不开 如果配置了:
PVE NoVNC 会报:
1 TASK ERROR: Failed to run vncproxy
建议: