PVE7.4英伟达GPU虚拟化测试

一、vGPU介绍

vGPU的产生背景还是和计算机虚拟化背景有相似之处,都为了充分提高硬件资源的使用率而设计。目前市面上主要有 intel、amd、nvidia三家主流厂商提供相关技术,本文分主要介绍vGPU原理和Nvidia vGPU在Proxmox VE7.4版本的部署过程。

Nvidia vGPU支持的显卡

具体型号请参考下面链接 Supported Products - NVIDIA Docs

例如:A10、A16、A30、A40、P4、P40、P100、T4、RTX A5000、RTX A6000等等。

不同的平台系统支持也不一致,在此不在列举。

二、Nvidia vGPU PVE节点环境准备

1、配置软件源安装必要依赖

#source.list使用清华源

deb https://mirrors.ustc.edu.cn/debian bullseye main contrib non-free

deb https://mirrors.ustc.edu.cn/debian bullseye-updates main contrib non-free

deb https://mirrors.ustc.edu.cn/debian bullseye-backports main contrib non-free

deb https://mirrors.ustc.edu.cn/debian-security/ bullseye-security main contrib non-free

deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-octopus/ bullseye main

#pve-install-repo.list使用清华源

deb https://mirrors.ustc.edu.cn/proxmox/debian/pve/ bullseye pve-no-subscription
  1. 安装必要的依赖
apt install dkms build-essential pve-headers pve-headers-`uname -r` dkms jq uuid-runtime -y

2、调整内核参数

禁用nouveau 驱动,使Nvidia显卡不被其占用,从而能够顺利安装Nvidia vGPU驱动。

echo  "blacklist nouveau" >>/etc/modprobe.d/disable-nouveau.confecho  "options nouveau modeset=0" >>/etc/modprobe.d/disable-nouveau.conf
  1. 3、允许不安全中断

echo" options vfio_iommu_type1 allow_unsafe_interrupts=1" >/etc/modprobe.d/iommu_unsafe_interrupts.conf

echo "options kvm ignore_msrs=1" > /etc/modprobe.d/kvm.conf

4、开启IOMMU

编辑/etc/default/grub,在cmdline中添加iommu参数 如下

#我这边平台是intel_cpu,amd平台自行查阅

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"

  1. 5、更新内核以应用内核参数

update-initramfs -k all -u
  1. 6、最后使用更新系统引导,重启系统

update-grub
​​​​​​​reboot

三、Nvidia vGPU  Host主机驱动安装

PVE为KVM平台需要下载KVM版本的驱动,我这里已经准备好相关驱动程序(由于开心版授权许可的问题,我们选择535版本的驱动)

1、切换显卡为无显示模式

RTX A6000带有HDMI和DP接口出厂设置为显示输出模式,使用vGPU需要切换为无显示模式

使用英伟达提供的显示模式切换工具切换为无显示模式,执行切换工具,根据提示选择切换为无显示模式,忘了截图( ̄□ ̄||),很简单看一眼就明白

./displaymodeselector

2、上传文件至节点并赋权

chmod +x NVIDIA-Linux-x86_64-535.161.05-vgpu-kvm.run

3、以dkms方式安装并重启系统

./NVIDIA-Linux-x86_64-535.161.05-vgpu-kvm.run --dkms
  1. 4、检查安装情况,重启系统

~# dkms status
nvidia, 535.161.05, 5.15.158-1-pve, x86_64: installed

reboot

5、配置SR-IOV

 NVIDIA GPU(在基于 Ampere 架构的 GPU)上,必须先启用 SR-IOV,然后才能使用 vGPU。 可以使用 NVIDIA 的脚本执行此操作sriov-manage

/usr/lib/nvidia/sriov-manage -e <pciid | ALL>

由于该配置重启节点后会丢失,我制作了一个服务用于重启服务器后重新启用配置

cat <<EOF >/usr/local/lib/systemd/system/nvidia-sriov.service

[Unit]

Description=Enable NVIDIA SR-IOV

After=network.target nvidia-vgpud.service nvidia-vgpu-mgr.service

Before=pve-guests.service

[Service]

Type=oneshot

ExecStartPre=/bin/sleep 5 #为避免vGPU相关服务未启动完成导致重新启用配置失败,使用延时配置,实测5秒正常

ExecStart=/usr/lib/nvidia/sriov-manage -e ALL

[Install]

WantedBy=multi-user.target

EOF
  1. 6、重载服务配置,启用服务

systemctl daemon-reload
systemctl enable --now nvidia-sriov.service

四、Nvidia vGPU  Guest主机分配vGPU和驱动安装

​​​​​​​1、分配规则

  1. 同一张卡上,同显存的C和Q可以同时分配。
  2. 同一张卡上,不能同时分配不同显存的vGPU
  3. 不同卡上,不同显存可以同时分配,但必须满足上一原则。

2、查看vGPU设备

lspci -d 10de:

查看vGPU设备配置类型,使用以下工具查询支持的设备类型(部分设备类型截图)

mdevctl types

3、为客户机分配vGPU(Web界面)

  1. 虚拟机机型修改为Q35,以便启用PCIE。
  2. 选择vGPU设备,选择MDev设备类型,建议选择Q类型的vGPU(分配遵循1.1规则)打开高级选项卡,主GPU选项不中(选中后控制台VNC界面无显示)

五、Guest主机驱动安装

1、Windows

  1. 安装536.25_grid_win10_win11_server2019_server2022_dch_64bit_international.exe(已在win10 验证)
  2. 把下载的 token 文件放进虚拟机的 C:\Program Files\NVIDIA Corporation\vGPU Licensing\ClientConfigToken 文件夹内
  3. 重启NVDisplay.ContainerLocalSystem 服务
  4. 检查授权,显示授权到期时间则为vGPU已正确部署,

2、Linux

以Ubuntu为例 (Nv驱动和内核有较强的相关性,升级内核将有很大概率导致驱动无法安装或正常使用)

  1. 安装必要组件
    sudo apt update && sudo apt dist-upgrade && sudo apt install gcc make -y
  2. 安装驱动程序
    sudo chmod +x NVIDIA-Linux-x86_64-535.183.01-grid.run
    
    ./ NVIDIA-Linux-x86_64-535.183.01-grid.run
  3. 安装许可,许可文件存放路径
    /etc/nvidia/ClientConfigToken/client_configuration_token.tok
  4. 重启服务
    sudo systemctl restart nvidia-gridd

nvidia-smi -q

六、授权服务器安装

请参考官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值