Proxmox VE 8.4.0显卡直通完整指南:NVIDIA Tesla T4 实战
前言:
PCIe Passthrough 技术允许虚拟机直接访问物理GPU设备,绕过宿主机系统,从而获得接近原生性能的图形处理能力。
目前我已在服务器完成了proxmox8.4.0的安装,并且安装了带有NVIDIA Tesla T4的显卡。现在我需要将显卡直接直通到一台vm实例上面。
1. 确认硬件和BIOS支持
- 检查显卡兼容性:Tesla T4是数据中心显卡,完全支持PCIe直通,非常适合虚拟化环境。
- 启用IOMMU:进入服务器BIOS,启用
Intel VT-d
(如果是Intel CPU)或AMD-Vi
(如果是AMD CPU)。 - 验证系统信息
# 输出确认当前proxmox server 是基于debian 12 版本的 8.4.0 proxmox操作系统
cat /etc/os-release
pveversion -v
# 显卡信息lspci -nnk|grep "NVIDIA"
2. 配置Proxmox主机
① 修改GRUB参数,检查和启用IOMMU支持
# 备份原始配置
cp /etc/default/grub{,.bak}
# 编辑GRUB配置
vi /etc/default/grub
在GRUB_CMDLINE_LINUX_DEFAULT
中添加(使用默认,pve版本为8.4.0):
# 修改 GRUB_CMDLINE_LINUX_DEFAULT 配置为
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt initcall_blacklist=sysfb_init pcie_acs_override=downstream"# 注意:pve 7.2 以前版本使用
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt video=efifb:off,vesafb:off pcie_acs_override=downstream"
说明:
video=efifb:off
用于禁用主机对GPU的显示输出,确保虚拟机独占GPU。
intel_iommu=on
启用Intel平台的IOMMU支持。
iommu=pt
仅对直通设备启用IOMMU,减少性能开销。
initcall_blacklist=sysfb_init
防止宿主机占用显卡帧缓冲区。
pcie_acs_override=downstream
解决某些PCIe设备的ACS限制问题。
注意 :
对于AMD平台,需将intel_iommu=on
替换为amd_iommu=on
更新GRUB:
update-grub
② 加载VFIO模块
vi /etc/modules
添加以下内容:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
reboot 重启 proxmox 主机
验证IOMMU是否启用:
IOMMU(Input-Output Memory Management Unit)是硬件辅助的虚拟化技术,为PCI设备直通提供必要的内存管理和隔离功能。
dmesg | grep -E "DMAR|IOMMU"
③ 验证并配置VFIO绑定Tesla T4
验证VFIO模块:
dmesg | grep -i vfio
vi /etc/modprobe.d/vfio.conf
添加(使用你的显卡PCI ID):
options vfio-pci ids=10de:1eb8 disable_vga=1
获取ID方法:
lspci -nn | grep -i tesla
输出示例:
c3:00.0 3D controller [0302]: NVIDIA Corporation TU104GL [Tesla T4] [10de:1eb8] (rev a1)
验证是否支持,中断重映射
dmesg | grep 'remapping'
屏蔽显卡驱动 :
在proxmox主机屏蔽掉显卡的驱动:
echo "# NVIDIA" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nvidiafb" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nvidia_drm" >> /etc/modprobe.d/blacklist.conf
echo "" >> /etc/modprobe.d/blacklist.conf
####其他有用的配置:
# 允许不安全的中断
echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/iommu_unsafe_interrupts.conf# 为 NVIDIA 卡添加稳定性修复和优化
echo "options kvm ignore_msrs=1 report_ignored_msrs=0" > /etc/modprobe.d/kvm.conf
④ 更新initramfs并重启
# 更新内核引导文件并重启宿主机:
update-initramfs -k all -u
reboot
3. 验证IOMMU配置
重启后检查IOMMU组:
for iommu_group in $(find /sys/kernel/iommu_groups/ -maxdepth 1 -mindepth 1 -type d); doecho "IOMMU Group $(basename "$iommu_group"):"lspci -nns "$(cat "$iommu_group/devices/*/uevent" | grep -oP 'PCI_SLOT_NAME=\K.*')"
done | grep -i tesla
确保Tesla T4的所有设备(3D控制器和音频设备)在同一IOMMU组中。
4. VM实例添加显卡
等待宿主机启动后完成如下操作!
① 添加Tesla T4显卡
这里使用了登录web控制台增加pci设备的方式,当然也可以shell登录宿主机使用命令添加的方式!
以VM实例104为例:点击vm 实例-硬件-添加-PCI设备-原始设备,找到tesla设备选中,添加:
② 验证vm实例挂载显卡成功
登录vm 实例,使用如下命令确认vm实例成功挂载了显卡设备
lspci | grep -i vga
lspci -nn | grep NVIDIA
ok到这里 显卡就完成了 显卡直通的相关操作!
5. 安装Ubuntu驱动
② 安装NVIDIA驱动
# 添加NVIDIA仓库
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update# 安装CUDA Toolkit(包含驱动)
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda-repo-ubuntu2204-12-1-local_12.1.1-530.30.02-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2204-12-1-local_12.1.1-530.30.02-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2204-12-1-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt update
sudo apt install cuda-drivers# 重启虚拟机
sudo reboot
③ 验证GPU识别
nvidia-smi
输出应显示Tesla T4信息:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 530.30.02 Driver Version: 530.30.02 CUDA Version: 12.1 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Tesla T4 On | 0000C3:00.0 Off | 0 |
| N/A 34C P8 9W / 70W | 0MiB / 15360MiB | 0% Default |
| | | N/A |
+-----------------------------------------------------------------------------+
6. 常见问题解决
-
虚拟机无法启动:
- 检查Proxmox日志:
journalctl -xe | grep qemu
- 尝试取消"主GPU"勾选。
- 检查Proxmox日志:
-
驱动安装失败:
- 确保禁用了Ubuntu的nouveau驱动:
sudo bash -c "echo 'blacklist nouveau' > /etc/modprobe.d/blacklist-nvidia-nouveau.conf" sudo bash -c "echo 'options nouveau modeset=0' >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf" sudo update-initramfs -u
- 确保禁用了Ubuntu的nouveau驱动:
-
NVIDIA-SMI显示错误:
- 检查内核模块是否正确加载:
lsmod | grep nvidia
- 重新安装驱动:
sudo apt purge cuda-drivers && sudo apt install cuda-drivers
- 检查内核模块是否正确加载:
优化建议
- 启用MIG(多实例GPU):Tesla T4支持将GPU分割为多个独立实例,可通过
nvidia-smi mig
命令配置。 - 安装cuDNN:用于深度学习加速,需从NVIDIA官网下载并安装。
- 监控GPU使用:在虚拟机内使用
nvidia-smi
或nvtop
监控GPU状态。
完成上述步骤后,Ubuntu虚拟机将能够完全利用Tesla T4的计算能力,适用于AI推理、高性能计算等工作负载。