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

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

最近我刚升级了我的 NAS 主机,并且购买了一块 Tesla P4 显卡。我想把 vGPU 分配给虚拟机上的 Jellyfin 容器硬解使用,经过几天的研究,我简单总结了使用方法。关于如何使用硬解,我会在下一篇文章中进行说明。

术语说明

简单介绍后面内容中的几个术语:

  • vGPUvGPU 技术通过将硬件 GPU 分割成多个虚拟 GPU 以支持多个虚拟机。每个虚拟 GPU 可以被分配给不同的虚拟机,从而使多个虚拟机拥有“独显”。
  • vGPU-unlock从硬件上来看,同代的数据中心显卡和消费者显卡 GPU 架构是一样的,只是驱动层限制了支持的特性。通过修改型号与宿主驱动等方式,将消费级显卡伪装成具有相同核心型号的专业卡,使得普通消费者显卡也可以支持虚拟化;对于虚拟机,同时在 vGPU 启动前后进行 hook,绕过特定检查、汇报虚假结果等,使得虚拟机的 vGPU 能正常启动。目前支持的消费卡型号可以参考此文章
  • vGPU 授权机制在宿主机上,驱动无需授权。不过,只有企业级 GPU 能够被 vGPU 宿主机驱动所识别,消费级显卡无法合法地用于 vGPU 硬件。在虚拟机上,使用 vGPU 客户端驱动需要获得 NVIDIA 授权。不同能力的 vGPU 子设备被分为 A、B、C、Q 四类,并对应不同的授权费用。未获得授权的驱动会逐渐降低 vGPU 子设备的性能,最终导致无法使用。在几种 vGPU 类型中,覆盖应用场景最广的是 Q 型 vGPU,授权为 vWS。

安装流程

关于 PVE 使用 GPU 有三种方法:

  • 显卡直通
  • 普通显卡 + vGPU-unlock
  • 数据中心显卡 vGPU

Tesla P4 是数据中心卡,原生支持 vGPU 功能,所以本文不涉及 vGPU-unlock,如需了解可以参考 PolloLoco 的 NVIDIA vGPU Guide

宿主机

  • 主板 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 宿主机配置
# 把下面几行追加到 /etc/modules 里,用于加载所需的内核模块
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
 
# 屏蔽开源驱动
echo "blacklist nouveau" >> /etc/modprobe.d/pve-blacklist.conf
 
# 开启IOMMU,参考:https://foxi.buduanwang.vip/yj/561.html
## AMD主板可能需要修改为:quiet amd_iommu=on iommu=pt pcie_acs_override=downstream,否则部分PCI设备可能会在同一个分组内,直通时会直通整个设备
 
# 安装依赖包
apt install build-essential dkms mdevctl pve-headers-$(uname -r)
 
# 重启机器
reboot
  • 安装 NVIDIA Host 驱动
  • NVIDIA 官网的驱动是非公开的,你需要注册 NVIDIA 商业账户才可访问;当然你也可以去网上寻找驱动包,比如:APQA 网盘GitHub 等
# 本次安装环境: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 |
+-------------------------------+----------------------+----------------------+
 
  • 划分 PCI-E 设备给虚拟机
  • 通过 mdevctl types | grep '^[^ ]*$' 查看所有生成了 mdev 的 PCI 设备 ID,然后通过 PVE 网页控制台给虚拟机分配 PCI 设备,设备选择刚才查到的设备 ID。该处的 MDev 字段,后面半段的数字为显存容量,字母为 vGPU 类型,这里选 Q 全能型即可,显存按需分配。
在Proxmox VE下开启vGPU - Tesla P4为例

虚拟机

下面来到虚拟机的部分,从下载的驱动包内,找到文件名包含 grid 的对应系统驱动包,上传至虚拟机。

Windows

双击运行直接根据引导安装即可,安装完成后打开 PowerShell,输入命令:

nvidia-smi.exe # 验证是否安装成功
nvidia-smi.exe -q | Select-String License # 查看授权,Unlicensed (Unrestricted) 表示未授权

至此驱动安装已经完成,下一节再来解决授权的问题。

Linux

此处以 Debian 系统演示,理论兼容 Ubuntu。其他发行版的用户请酌情微调命令。

# 和宿主安装驱动相似,禁用 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) 表示未授权
在Proxmox VE下开启vGPU - Tesla P4为例

至此驱动方面的安装已经完成,下面来获取授权。

授权流程

授权方法分为如下几种方式:

  1. 向 NVIDIA 申请 90 天 free license(NVIDIA 中国只面向企业用户发放免费授权,个人可以尝试去海外官网申请),到期后购买 license
  2. Rust-based vgpu_unlock,通过 vGPU 伪装,从而可以在虚拟机使用不需要授权的消费级显卡驱动,此方式是唯一支持消费级显卡的方式
  3. vGPU_LicenseBypass,此方式将不限制性能的时间从 20 分钟延长为一天,并且每天定时重启驱动,以达成一直不受限的目地,但不适合需要长时间运行 GPU 的场景
  4. FastAPI-DLS,此方式通过模拟正规流程的激活服务器,对虚拟机进行许可证授权,支持容器部署

对于原生支持 vGPU 的显卡而言,使用 FastAPI-DLS 为最优解,整套方案除授权服务器虚假外与正规流程无异。而且只要不更新虚拟机驱动,证书验证算法不变,理论具有等同于正规授权的稳定性。

搭建授权服务器

  1. 首先安装容器环境,此步略过。
  2. 启动容器,原项目需要自行创建证书,这里使用一个二次封装的免证书容器镜像。
# 此处的DLS_URL与DLS_PORT是后续生成授权文件,告知Guest如何访问授权容器IP地址和端口
docker run -d -e DLS_URL=10.0.0.6 -e DLS_PORT=443 -p 443:443  makedie/fastapi-dls

获取授权

Windows使用管理员身份启动 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
nvidia-smi.exe -q | Select-String License # 查看授权状态

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
nvidia-smi -q | grep License # 查看授权状态
在Proxmox VE下开启vGPU - Tesla P4为例

文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/11303

(0)
凯影的头像凯影
上一篇 2024年2月19日 上午11:30
下一篇 2024年2月20日 下午2:46

相关推荐

  • LAMP环境下部署DiscuzQ

    一、安装Apachae yum安装Apache,并设置开机自启动 在网页浏览器输入ip地址,查看Apache是否正常 二、安装配置 MariaDB 执行以下命令,查看系统中是否已安装 MariaDB。 rpm -qa | grep -i mariadb       返回结果类似如下内容,则表示已存在 MariaDB。 &nbsp…

    2022年12月6日
    87000
  • Linux系统部署BBR服务器加速软件

    一、BBR加速软件介绍  BBR简介:  BBR是谷歌的黑科技,也可以理解为用来加速网络的软件,如果服务器在海外,会发现丢包率很高,线路还会时断时续。所以,不用点黑科技,肯定是没办法使用。而BBR加速能充分利用网络带宽 BBR的作用就是尽量跑满带宽,并且尽量不要有排队的情况。BBR可以起到单边加速TCP连接的效果。通俗来讲就是最大化利用网络上瓶颈线路的带宽。…

    2023年12月1日
    49500
  • 如何解决Windows server系统开机自动进入修复模式而无法正常启动的问题

    相信大家都会碰到这样一个问题,Windows系统重启之后自动进入修复而不去正常启动,如下图 那么我们该如何去解决呢 第一步:根据它的选项,进入到修复模式,然后点击下一步 第二步:输入登录的账户密码,然后就会有三个系统恢复的选项,我们选择命令提示符,依次输入以下命令 然后等待出现以下信息 到此,我们重新启动系统,就可以正常进入到桌面系统了,如果你想之后的系统重…

    2022年6月13日
    2.3K00
  • linux 文件挂载配置错误解决办法

    linux中挂载命令经常能够用到,特别是配置开机自动挂载的时候,一不留神就配置错误了,这样造成的后果就是重启过后就会发现系统起不来了!!! 首先进行模拟测试 格式化磁盘 mkfs.ext4 /dev/sdb1 挂载磁盘 mount /dev/sdb1 /mnt 修改配置文件并进行破环 vi /etc/fstab 重启验证后发现不能远程登录,系统进入救援模式!…

    2023年9月27日
    48700
  • Windows Server 2012和2016从Evaluation评估版升级到正式版方法(附带产品密钥/key)

    解析说明:什么叫做Evaluation评估板? 微软试用版的系统叫做评估板,使用时间是180天。过期之后就会提示你需要激活。需要永久激活系统首先要转为正式版。 升级总共两个步骤,如果卡住在10%,建议重新安装正式版。 第一步 操作成功完成。 其中ServerDatacenterEval去掉Eval后,就是当前的Edition ID 第二步 下面附上正式版安装…

    2022年12月23日
    93100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

在线咨询: QQ交谈

邮件:712342017@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

关注微信