PVE 7.4-17 中开启vGPU显卡虚拟化

要为VM提供图形引擎,一般分为3种:
1、软件模拟图形-性能差
2、显卡直通-性能最好,一个虚拟机独享一个显卡
3、vGPU-性能好,多个虚拟机共享一个显卡

目前市面上的主流GPU厂家有intel、amd、nvidia,本篇文章主要介绍nvidia的显卡虚拟化,使用环境介绍:

操作系统:debain 11.5

PVE:7.4.-17

Nvidia:P40 24G 两片

PVE的安装我们本节略去,主要讨论vGPU的设置

一:配置软件源

rm /etc/apt/sources.list
rm /etc/apt/sources.list.d/*
echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free">>/etc/apt/sources.list
echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free">>/etc/apt/sources.list
echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free">>/etc/apt/sources.list
echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free">>/etc/apt/sources.list
echo "deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian bullseye pve-no-subscri 

二:安装必要的软件包

apt install dkms  git build-essential pve-kernel-5.15 pve-headers-5.15 dkms cargo jq uuid-runtime -y 

三:配置内核

echo vfio >> /etc/modules
echo vfio_iommu_type1 >> /etc/modules
echo vfio_pci >> /etc/modules
echo vfio_virqfd >> /etc/modules
echo  "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
echo "options kvm ignore_msrs=1" > /etc/modprobe.d/kvm.conf
update-initramfs -k all -u 

四:配置引导

#编辑grub,根据自己的环境,选择设置
vim /etc/default/grub
#在里面找到:
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
#然后修改为:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
#更新引导
update-grub 

安装完后,重启服务器

五:为debian安装显卡虚拟驱动

1、相关依赖

#安装gcc和g++
sudo apt update
sudo apt install gcc g++

#查看版本
gcc --version
g++ --version

sudo apt install make
sudo apt install make-guile

#查看make版本
make -v

2、禁用系统自带Nvidia驱动

#首先,编辑黑名单配置。
vim /etc/modprobe.d/blacklist.conf
#在文件的最后添加下面两行。在第三步通过echo加入的,请打开文件验证是否正确添加。

blacklist nouveau
options nouveau modeset=0

#然后,输入下面的命令更新并重启。

update-initramfs -u
reboot

#重启后输入下面的命令验证是否禁用成功,成功的话这行命令不会有输出。
lsmod | grep nouveau

#重启服务器后使用apt卸载已有的驱动,命令如下。
apt-get purge nvidia*

3、下载虚拟驱动

注意这里下载的不是普通的nvidia驱动,而是要下载vgpu驱动,下载地址如下:

https://foxi.buduanwang.vip/pan/foxi/Virtualization/vGPU/

PVE 7.4-17 中开启vGPU显卡虚拟化_第1张图片

下载最新版本的vGPU驱动。这里注意一下,grid版本是给vm用的,kvm版是给PVE用的。

4、安装vGPU驱动

chmod +x NVIDIA-Linux-x86_64-510.85.03-vgpu-kvm.run
sh -c ./NVIDIA-Linux-x86_64-510.85.03-vgpu-kvm.run --dkms

六:安装vgpu_unlock

这一步本人多次偿试基本上没有办法离线安装,大家可以参考我的那编squid代理网络设置,实现代理访问github。会魔法的小伙伴也可以自行想办法。

cd /opt && git clone https://github.com/mbilker/vgpu_unlock-rs.git 
cd /opt/vgpu_unlock-rs
cargo build --release

PVE 7.4-17 中开启vGPU显卡虚拟化_第2张图片

发现仍有报错,不过也没关系,后面也一样能成功。根据存放位置在下方的配置中对应修改。 

mkdir /etc/systemd/system/{nvidia-vgpud.service.d,nvidia-vgpu-mgr.service.d}
echo -e "[Service]\nEnvironment=LD_PRELOAD=/opt/vgpu_unlock-rs/target/release/libvgpu_unlock_rs.so" > /etc/systemd/system/nvidia-vgpud.service.d/vgpu_unlock.conf
echo -e "[Service]\nEnvironment=LD_PRELOAD=/opt/vgpu_unlock-rs/target/release/libvgpu_unlock_rs.so" > /etc/systemd/system/nvidia-vgpu-mgr.service.d/vgpu_unlock.conf
systemctl daemon-reload 

然后重启服务器

七:验证

1、验证PVE内核

uname -r
5.15.131-2-pve

2、使用mdevctl types 验证是否出现mdev设备

mdevctl types

PVE 7.4-17 中开启vGPU显卡虚拟化_第3张图片

八:将vGPU配置到VM

1、安装一台vm,操作系统我使用的ubuntu22.04

2、然后在“硬件”添加“PCI设备”

PVE 7.4-17 中开启vGPU显卡虚拟化_第4张图片

在设备中选择一片P40,MDev类型打开,向下拉,我选择了一个12G的vGPU。ROM-Bar要打勾。PCI-Express要打勾。

PVE 7.4-17 中开启vGPU显卡虚拟化_第5张图片

3、启动vm并安装vGPU驱动。

安装方法请参照第五节,使用驱动,注意在vm里要使用“NVIDIA-Linux-x86_64-510.85.02-grid.run”驱动。驱动安装完后,可以执行:

nvidia-smi

PVE 7.4-17 中开启vGPU显卡虚拟化_第6张图片

你可能感兴趣的:(运维)