> 虚拟化 Virtualization > Proxmox >

在Proxmox VE 7.1 中开启vGPU_unlock,实现显卡虚拟化

一:了解NVIDIA vGPU

下图是Nvidia vGPU的原理。在宿主机上安装vGPU驱动,使用nvidia vGPU管理器控制vGPU,随后创建多个mdev设备,也就是vGPU,用于直通到虚拟机,虚拟机使用Nvidia 驱动用于驱动vGPU。有点类似gvt-g。不过这里最重要的是NVIDIA vGPU管理器 。

在宿主机上安装好nvidia vgpu驱动之后,会有2个服务。

  • nvidia-vgpud.service
  • nvidia-vgpu-mgr.service

简单的解释下这2个服务在vgpu启动时的作用:

1、在使用vGPU卡的时候,正常逻辑是,开机之后,nvidia-vgpud 服务会查询内核中所有已安装的 GPU,并检查 vGPU 功能。如果找到支持 vGPU 的 GPU,则 nvidia-vgpu 会创建一个 MDEV 设备,系统会创建 /sys/class/mdev_bus 目录。

2、将这些设备分配给 VM,当 VM 启动时,它将打开 MDEV 设备。nvidia-vgpu-mgr 此时会使用 ioctl 与内核进行通信。当 nvidia-vgpu-mgr 询问 GPU 是否支持 vGPU 时,vgpu会回答是,随后尝试初始化 vGPU 设备。

目前vgpu_unlock项目只支持Time-sliced技术,也就是单GPU实例性能会动态分配。如一张P4,如果只有一个GPU实例,那么多获得接近100%的性能,同时2个GPU实例,会分别获得1/2的性能。

根据Nvidia vgpu限制,单GPU实例,最少1g显存。如P4 8G,最多有8个1G 显存的GPU实例同时运行

注意,Nvidia-vGPU授权是驱动授权,不是硬件授权。vgpu_unlock 这个项目并不能破解Nvidia-vGPU授权。

它这是使消费卡能够支持vGPU 技术,而不是破解了授权。需要授权,还是需要去nvidia购买!

 

 

二:了解vgpu_unlock原理

正如我们上说vgpu的启动流程。当然我们使用消费卡的时候,nvidia-vgpud这个服务会检测卡的类型,如果是消费卡,自然不会创建mdev设备。如果使用vgpu_unlock,此脚本会拦截nvidia-vgpud的调用,然后欺骗它,这是一张vGPU卡,快产生mdev设备信息吧!

将mdev设备直通给虚拟机,启动的时候,vgpu_unlock又会拦截nvdia-vgpu-mgr服务,告诉它,GPU支持vGPU,快初始化设备吧!

三:vGPU_unlock支持的显卡

请务必参考下面列表显卡,如果是专业卡,请和下面同代核心就行。

不支持30系!!!!!!!!!!

点击查看显卡列表

 

四:准备环境

4.1: 配置软件源


  • 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-subscription">>/etc/apt/sources.list
  •  
 

4.2 安装必要的软件包


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

安装mdevctl


  • wget -P /opt/ http://ftp.br.debian.org/debian/pool/main/m/mdevctl/mdevctl_0.81-1_all.deb
  • dpkg -i /opt/mdevctl_0.81-1_all.deb
 

4.3 配置内核


  • 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
 

4.4 配置引导


  • #编辑grub,请不要盲目改。根据自己的环境,选择设置
  • nano /etc/default/grub
  • #在里面找到:
  • GRUB_CMDLINE_LINUX_DEFAULT="quiet"
  • #然后修改为:
  • GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
  • #如果是amd cpu请改为:
  • GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"
  • #更新引导
  • update-grub
 

4.5 安装驱动

本内容需要 登录 后才能查看

附:笔记本也支持

(责任编辑:IT)