要为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/
下载最新版本的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
发现仍有报错,不过也没关系,后面也一样能成功。根据存放位置在下方的配置中对应修改。
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
八:将vGPU配置到VM
1、安装一台vm,操作系统我使用的ubuntu22.04
2、然后在“硬件”添加“PCI设备”
在设备中选择一片P40,MDev类型打开,向下拉,我选择了一个12G的vGPU。ROM-Bar要打勾。PCI-Express要打勾。
3、启动vm并安装vGPU驱动。
安装方法请参照第五节,使用驱动,注意在vm里要使用“NVIDIA-Linux-x86_64-510.85.02-grid.run”驱动。驱动安装完后,可以执行:
nvidia-smi