家庭服务器 篇三十四:All-In-One玩vGPU显卡虚拟化,上手Tesla P4
首先我不推荐Tesla P4这张显卡,既无主动散热、也无视频输出接口、性价比又低(性价比连矿渣40HX都不如)。显卡算上散热花了400元,买这张卡是因为我个人喜欢Tesla P4(功耗低、外观小巧,是我眼里颜值最高的显卡),更重要的是给All-In-One主机折腾vGPU显卡虚拟化。
本文介绍的是PVE环境下的Tesla P4显卡虚拟化设置,由于Tesla P4是专业卡本身支持vGPU,非专业卡的N卡则需要vGPU Unlock才能虚拟化,不在本文介绍范围内:
1、准备工作:PVE设置
PVE开启iommu(实现PCIE直通):
vim /etc/default/grub
#修改如下设置
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
#intel cpu 改为:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
#amd cpu改为:
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"
更新grub:
update-grub
加载vfio模块
echo vfio >> /etc/modules
echo vfio_iommu_type1 >> /etc/modules
echo vfio_pci >> /etc/modules
echo vfio_virqfd >> /etc/modules
更新内核参数
update-initramfs -k all -u
屏蔽开源显卡驱动,避免开机时显卡被系统加载
#AMD显卡
echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf
echo "blacklist amdgpu" >> /etc/modprobe.d/blacklist.conf
#NVIDIA显卡
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nvidiafb" >> /etc/modprobe.d/blacklist.conf
#INTEL核显
echo "blacklist snd_hda_intel" >> /etc/modprobe.d/blacklist.conf
echo "blacklist snd_hda_codec_hdmi" >> /etc/modprobe.d/blacklist.conf
echo "blacklist i915" >> /etc/modprobe.d/blacklist.conf
更新内核并重启
update-initramfs -k all -u
准备工作完毕!
2、PVE安装显卡host驱动
将显卡装上后就可以安装驱动了。计算卡驱动官网下载需要注册账户比较麻烦,可以网上找别人打包好的驱动。vGPU驱动分host(服务端)、client(客户端)两种驱动。PVE上需要安装host驱动。首先安装显卡驱动依赖环境:
apt install build-essential dkms mdevctl pve-headers-$(uname -r)
通过ssh上传驱动到PVE并安装,如之前安装了显卡驱动需要先卸载:
#如果之前安装了显卡驱动需要先卸载
apt-get remove --purge nvidia-*
#进入驱动所在目录,开始安装驱动
chmod +x NVIDIA-Linux-x86_64-535.54.06-vgpu-kvm.run
./NVIDIA-Linux-x86_64-535.54.06-vgpu-kvm.run
#重启pve
reboot
这样PVE已经安装好了驱动,接下来给虚拟机安装驱动前,先搭建好vGPU的授权服务。
3.搭建授权服务
vGPU客户端需要授权才可以正常使用驱动。个人去买商业授权有点不划算,所以用民间的授权大法:通过docker搭建授权服务。
找一台Linux设备,安装好docker环境,记下设备的局域网IP地址,开始搭建docker,下面2种方式任选其一:
3.1 makedie/fastapi-dls 镜像
makedie/fastapi-dls 是基于collinwebdesigns/fastapi-dls原版镜像修改的方案,不需要自己搭建openssl,所以操作比较简单。
一条命令就可以搭建好容器,注意修改实际的局域网IP:
docker run -d -e DLS_URL=192.168.31.20 -e DLS_PORT=1020 -p 1020:443 makedie/fastapi-dls
3.2 collinwebdesigns/fastapi-dls 镜像(原版)
collinwebdesigns/fastapi-dls 是原版镜像需要自己搭建openssl证书,所以服务器上不仅要安装docker还要安装好openssl
apt install openssl
服务器上创建证书:
WORKING_DIR=/opt/docker/fastapi-dls/cert
mkdir -p $WORKING_DIR
cd $WORKING_DIR
# create instance private and public key for singing JWT's
openssl genrsa -out $WORKING_DIR/instance.private.pem 2048
openssl rsa -in $WORKING_DIR/instance.private.pem -outform PEM -pubout -out $WORKING_DIR/instance.public.pem
# create ssl certificate for integrated webserver (uvicorn) - because clients rely on ssl
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout $WORKING_DIR/webserver.key -out $WORKING_DIR/webserver.crt
运行docker fastapi-dls服务:
docker run -e DLS_URL=192.168.31.128 -e DLS_PORT=1020 -p 1020:443 -v $WORKING_DIR:/app/cert collinwebdesigns/fastapi-dls:latest
访问 https://192.168.31.20:1020 查看授权服务是否正常运行:
4.虚拟机安装vGPU驱动及授权
首先在PVE上给虚拟机添加PCI设备,选择对应的显卡:
由于我要对显卡做划分,所以在MDev类型要选一下,我只打算划分2块,所以选的GRID P4-4Q(nvidia-65):
接下来在虚拟机上安装vGPU驱动及授权,将驱动发送到虚拟机上(根据不同系统可以采用smb共享或者ssh远程的方法操作)。就像正常在电脑上安装驱动即可。
安装好驱动后,获取vGPU授权:
Windows管理员权限运行 PowerShell 执行如下命令,注意修改认证服务器地址(同上面docker容器服务的地址):
# 下载授权文件
curl.exe --insecure -L -X GET https://192.168.31.20:1020/-/client-token -o "C:Program FilesNVIDIA CorporationvGPU LicensingClientConfigTokenclient_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 权限执行如下命令:
# 下载授权文件
curl --insecure -L -X GET https://192.168.31.20:1020/-/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
在Windows上安装好驱动后,在任务管理器里已经可以正常识别到显卡了,由于我把显卡做了划分,所以这里显示的显存为4G。
为了更好调用显卡可以通过moonlight+sunshine对虚拟机进行串流。
hanbrake可以正常调用到NVENC进行编码、可以正常安装CUDA、除了没有物理视频输出功能和一般显卡相同。
不过这张卡虽然功耗低,但是必须改造散热。由于还没有对显卡做散热改造,所以跑分和测试性能没意义,放在下次介绍吧!
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
六吉哥
校验提示文案
值友6539164670
校验提示文案
Xeon-E3
校验提示文案
红烧土豆
校验提示文案
不一样的牛粪
校验提示文案
值友看客
校验提示文案
顿啦爱你
校验提示文案
值友8974565270
校验提示文案
哪有那么易
校验提示文案
阿咸老哥
校验提示文案
企鹅巴耶夫
校验提示文案
企鹅巴耶夫
校验提示文案
男人的梦想
校验提示文案
绝版-sniper
校验提示文案
TimZhong
校验提示文案
笑饮农药
校验提示文案
李败五
代码应该是这个,不知道有没被吞
校验提示文案
值友6238923182
校验提示文案
值友6238923182
校验提示文案
李败五
代码应该是这个,不知道有没被吞
校验提示文案
笑饮农药
校验提示文案
TimZhong
校验提示文案
绝版-sniper
校验提示文案
男人的梦想
校验提示文案
企鹅巴耶夫
校验提示文案
企鹅巴耶夫
校验提示文案
值友看客
校验提示文案
阿咸老哥
校验提示文案
哪有那么易
校验提示文案
红烧土豆
校验提示文案
Xeon-E3
校验提示文案
值友6539164670
校验提示文案
值友8974565270
校验提示文案
顿啦爱你
校验提示文案
不一样的牛粪
校验提示文案
六吉哥
校验提示文案