当前位置: 首页 > news >正文

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. 常见问题解决

  1. 虚拟机无法启动

    • 检查Proxmox日志:journalctl -xe | grep qemu
    • 尝试取消"主GPU"勾选。
  2. 驱动安装失败

    • 确保禁用了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
      
  3. 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-sminvtop监控GPU状态。

完成上述步骤后,Ubuntu虚拟机将能够完全利用Tesla T4的计算能力,适用于AI推理、高性能计算等工作负载。

相关文章:

  • MLA (Multi-head Attention Layer) 详细说明
  • python通过curl访问deepseek的API调用案例
  • 07_Java中的锁
  • MySQL入门指南:从安装到客户端工具全解析
  • STM32 ADC 模数转换器详解:原理、配置与应用
  • Python核心数据类型全解析:字符串、列表、元组、字典与集合
  • 笔试模拟 day9
  • JVM之虚拟机运行
  • 飞搭系列 | 多对多关系一键配置, 轻松驾驭复杂场景
  • 小白的LLM学习记录(一)
  • Linux动态库静态库总结
  • 运行Spark程序-在shell中运行1
  • 如何通过外卖系统源码打造本地O2O外卖配送生态?全链路技术解析
  • Java练习题:String
  • python文件打包成exe文件
  • SQLMesh信号机制详解:如何精准控制模型评估时机
  • 笔记项目 day02
  • 【日撸 Java 300行】Day 14(栈)
  • Pytorch学习笔记(二十二)Audio - Audio I/O
  • 数据工具:数据同步工具、数据血缘工具全解析
  • 白玉兰奖征片综述丨动画的IP生命力
  • 四部门:强化汛期农业防灾减灾,奋力夺取粮食和农业丰收
  • 宝通科技:与宇树合作已签约,四足机器人在工业场景落地是重点商业化项目
  • 特朗普开启第二任期首次外访:中东行主打做生意,不去以色列
  • 山东鄄城发生一起交通事故,造成4人死亡、2人受伤
  • 外交部:中方愿根据当事方意愿,为化解乌克兰危机发挥建设性作用