> 虚拟化 Virtualization > Proxmox >

PVE开启显卡虚拟化intel GVT-g

搞了个自动配置脚本,2步快速执行,脚本对zfs和btrfs启动的支持有问题,请勿用。


  • wget https://fastly.jsdelivr.net/gh/jiangcuo/foxi/gvtg.sh
  • bash gvtg.sh
 

终于搞到了一台实验机子。本次实验环境为

PVE: 6.2 CPU: g5400 主板: 铭瑄h110

 

注意,intel gvt-g技术,只支持5代以上桌面CPU或者4代以上服务器CPU。不支持11代以上CPU。J3XXX似乎支持,请自测

 

第一步:开启主板的虚拟化,这个自行在主板中开启。

第二步:开启PVE的直通功能

开启iommu和GVT-g支持

#开启iommu和gvt内核 
#编辑grub
vi /etc/default/grub
在里面找到:GRUB_CMDLINE_LINUX_DEFAULT="quiet"
然后修改为:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on i915.enable_gvt=1"

#update grub
update-grub

!!!注意,如果此方法还不能开启iommu,请修改

 /etc/kernel/cmdline文件

并且使用proxmox-boot-tool refresh 更新启动项

加载直通内核模块

echo vfio >> /etc/modules
echo vfio_iommu_type1 >> /etc/modules
echo vfio_pci >> /etc/modules
echo vfio_virqfd >> /etc/modules
echo kvmgt >> /etc/modules
update-initramfs -u 

第三步:重启主机

第四步:验证是否开启GVT

ls /sys/bus/pci/devices/0000:00:02.0/mdev_supported_types/  #自觉将00:02换成自己的。
#出现下面4个选项或者类似的即成功。
i915-GVTg_V5_1	i915-GVTg_V5_2	i915-GVTg_V5_4	i915-GVTg_V5_8

第五步:创建虚拟机

新建OVMF EFI虚拟机,把cpu类型设置成HOST。将主板设置成q35。安装好系统,开启远程桌面。关机,将虚拟机显卡设置成无。添加PCIE设备。

如上图所示,注意,看后面的显存。勾选高级里的ROM-BAR和pcie。主GPU不勾选。

开机之后,远程连接上去,安装好驱动即可。在远程桌面设置里,开启remotefx。(开启remotefx教程)。就可以看到显卡正在使用了。注意在连接的时候,一定要把体验设置成LAN

总结

开启简单,但是性能稍微有些弱了一点,GVT-G技术, 并不像s7150/nvidia k1那样,将显卡独立成几个模块,反而是共享显卡的性能。

我开了2个虚拟机,其中一个进行3D测试的时候,另外一台显卡占用竟然满载。

这确实是一个不好的地方,

2021.9.10更新

GVT-G支持4种vgpu模型,最大分辨率为1200P,参考https://wiki.archlinux.org/title/Intel_GVT-g

# ls /sys/devices/pci${GVT_DOM}/$GVT_PCI/mdev_supported_types
i915-GVTg_V5_1  # Video memory: <512MB, 2048MB>, resolution: up to 1920x1200
i915-GVTg_V5_2  # Video memory: <256MB, 1024MB>, resolution: up to 1920x1200
i915-GVTg_V5_4  # Video memory: <128MB, 512MB>, resolution: up to 1920x1200
i915-GVTg_V5_8  # Video memory: <64MB, 384MB>, resolution: up to 1024x768

2021.9.29更新

可参考bilibli视频

https://www.bilibili.com/video/BV1UV411W7gc/

2021.12.29更新

如果参考上面教程,不成功。请确保开启了IOMMU,同时确保pve-blacklist种没有包含i915,参考下面命令。

cat /etc/modprobe.d/* |grep blacklist

如果有i915,请删除这个条目,同时更新内核。重启之后再次确认

update-initramfs -u -k all

在群晖中使用gvt-g

请使用seabios和i440fx安装群晖。

将gvt-g添加到虚拟机上,将下面命令添加到args中。

-set 'device.hostpci0.addr=0x02'

这个args意思就是将hostpci0的pci地址,设置成0x02。所以注意,请确认自己的gvt-g是在hostpci几,如hostpci2,你就要改一下args,

 

(责任编辑:IT)