05
2024
08
15:32:39

在Proxmox VE 8下开启vGPU – Tesla P4为例

1、对于 Proxmox VE 8,需要使用16.0+版本的 vGPU 驱动程序,低版本的驱动程序不支持 Linux 6.x 内核。

vGPU
vGPU 技术通过将硬件 GPU 分割成多个虚拟 GPU 以支持多个虚拟机。每个虚拟 GPU 可以被分配给不同的虚拟机,从而使多个虚拟机拥有“独显”。

2、关于 PVE 使用 GPU 有三种方法:
显卡直通
普通显卡 + vGPU-unlock
数据中心显卡 vGPU

3、NVIDIA® 虚拟 GPU 软件支持的 GPU(NVIDIA® Virtual GPU Software Supported GPUs)

4、物理宿主机
主板 BIOS 需要开启 IOMMU / VT-d、Above 4G Decoding、SR-IOV。

IOMMU 是一种地址映射技术,而 VT-d 是 Intel 对该技术的别称;Above 4G Decoding 关系到 PCI-E 设备 RAM 的 64 位寻址能力,通常用于需要让 CPU 访问全部显存的场景,使用 vGPU 时推荐开启;SR-IOV 允许一个 PCI-E 设备被多个虚拟机使用,常用于网卡等设备共享。

PVE 物理宿主机配置

mportant; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; padding: 0px !important; background: none !important; border-radius: 0px !important; border: 0px !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; position: static !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; direction: ltr !important; box-shadow: none !important; display: inline !important; color: rgb(0, 130, 0) !important;"># 把下面几行追加到 /etc/modules 里,用于加载所需的内核模块
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
  
# 屏蔽开源驱动
echo "blacklist nouveau" >> /etc/modprobe.d/pve-blacklist.conf
  
# 开启IOMMU
#编辑grub,请不要盲目改。根据自己的环境,选择设置
vi /etc/default/grub
#在里面找到:
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
#然后修改为:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
#如果是amd cpu请改为:
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"
#如果是需要显卡直通,建议在cmdline再加一句video=vesafb:off video=efifb:off video=simplefb:off,加了之后,pve重启进内核后停留在一个画面,这是正常情况
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt video=vesafb:off video=efifb:off video=simplefb:off"
 
修改完成之后,直接更新grub
update-grub
 
注意,如果此方法还不能开启iommu,请修改
 /etc/kernel/cmdline文件
并且使用proxmox-boot-tool refresh 更新启动项
  
# 安装依赖包
apt install build-essential dkms mdevctl pve-headers-$(uname -r)
  
# 重启机器
reboot
 
重启之后,在终端输入
dmesg | grep iommu
出现如下例子。则代表成功
 
[ 1.341100] pci 0000:00:00.0: Adding to iommu group 0
[ 1.341116] pci 0000:00:01.0: Adding to iommu group 1
[ 1.341126] pci 0000:00:02.0: Adding to iommu group 2
[ 1.341137] pci 0000:00:14.0: Adding to iommu group 3
[ 1.341146] pci 0000:00:17.0: Adding to iommu group 4

5、安装 NVIDIA Host 驱动
NVIDIA 官网的驱动是非公开的,需要注册 NVIDIA 商业账户才可访问;
vGPU16.7 KVM 驱动 NVIDIA-GRID-Linux-KVM-535.183.04-53...
链接:https://pan.baidu.com/s/181yNg67-nr1u5kF6unjrIQ?pwd=w3lh
提取码:w3lh

# 本次安装环境:PVE版本7.4-3,Linux内核版本5.15.107-2,驱动版本15.1
chmod +x NVIDIA-Linux-x86_64-430.67-vgpu-kvm.run
./NVIDIA-Linux-x86_64-430.67-vgpu-kvm.run
  
# 安装过程完成后可以使用以下命令验证
$ dkms status
nvidia, 525.85.07, 5.15.107-2-pve, x86_64: installed
$ nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.85.07    Driver Version: 525.85.07    CUDA Version: N/A      |
|-------------------------------+----------------------+----------------------+
| 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 P4            On   | 00000000:81:00.0 Off |                    0 |
| N/A   53C    P8    12W /  75W |   1899MiB /  7680MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

6、划分 PCI-E 设备给虚拟机
通过 mdevctl types | grep '^[^ ]*$' 查看所有生成了 mdev 的 PCI 设备 ID,然后通过 PVE 网页控制台给虚拟机分配 PCI 设备,设备选择刚才查到的设备 ID。该处的 MDev 字段,后面半段的数字为显存容量,字母为 vGPU 类型,这里选 Q 全能型即可,显存按需分配。

7、Debian 系统安装vGPU。

# 禁用 nouveau 并安装必须软件包
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
apt install build-essential gcc-multilib dkms mdevctl
update-initramfs -k all -u
reboot
  
# 重启完成后安装 Guest 驱动
chmod +x NVIDIA-Linux-x86_64-430.63-grid.run
./NVIDIA-Linux-x86_64-430.63-grid.run
  
# 验证安装是否成功
dkms status
nvidia-smi
nvidia-smi -q | grep License # 查看授权,Unlicensed (Unrestricted) 表示未授权
 
8、安装授权
使用管理员身份启动 PowerShell 执行如下命令
# <ls-hostname-or-ip>为你的授权服务IP端口
curl.exe --insecure -L -X GET https://<dls-hostname-or-ip>/-/client-token -o "C:\Program Files\NVIDIA Corporation\vGPU Licensing\ClientConfigToken\client_configuration_token_$($(Get-Date).tostring('dd-MM-yy-hh-mm-ss')).tok"
  
Restart-Service NVDisplay.ContainerLocalSystem
 
Linux
root 执行如下命令
# <ls-hostname-or-ip>为你的授权服务IP端口
curl --insecure -L -X GET https://<dls-hostname-or-ip>/-/client-token -o /etc/nvidia/ClientConfigToken/client_configuration_token_$(date '+%d-%m-%Y-%H-%M-%S').tok
  
service nvidia-gridd restart
 
9、查看授权
Windows
使用管理员身份启动 PowerShell 执行如下命令
nvidia-smi.exe -q | Select-String License # 查看授权状态
 
Linux
root 执行如下命令
nvidia-smi -q | grep License # 查看授权状态




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://www.hqyman.cn/post/7400.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: