​PVE系列-开启GVT-g核显虚拟化​(Intel6-10代CPU)

前言-几句废话

可能更多的人需要的是显卡直通,就是将整个显卡直通给某一个虚拟机,然后将显示器直接插到视频输出口显示的是这台虚拟机的内容,然后再通过键盘、鼠标的直通,达到与一台实体机一样使用的效果。

核显虚拟化并不是这样,显卡虚拟化是通过将核心显卡虚拟化配置之后,可以分配给虚拟机,让虚拟机也可以使用核心显卡。并且,可以根据需要分配给多个虚拟机(不同的CPU能分配的虚拟核数不同)。

CPU支持情况

请参阅下表:

intel-cpu.png

注意,11代Alchemist代号并不支持SR-IOV,也不支持GVT-g​

配置步骤

前提条件:需要提前在主板BIOS开启虚拟化功能,才能开启硬件直通。在BIOS开启vt-d​。

开启硬件直通和GVT-g

使用文本编辑器(nano​ 或 vim 均可) 编辑配置文件 /etc/default/grub​

1
2
3
4
5
6
7
# vi /etc/default/grub

# 开启iommu分组和GVT-g,在里面找到:GRUB_CMDLINE_<a href="https://www.iigeek.com/archives/tag/linux"><b style="color:#378e3c">linux</b></a>_DEFAULT="quiet"项将其修改为
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt i915.enable_gvt=1 pcie_acs_override=downstream,multifunction"

# 更新grub
update-grub

加载内核模块

编辑配置文件 /etc/modules​

1
2
3
4
5
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
kvmgt

执行更新initramfs

1
2
3
4
5
# 更新initramfs
update-initramfs -u -k all

# 重启
reboot

验证是否开启核显GVT-g

1
2
3
4
5
6
ls /sys/bus/pci/devices/0000:00:02.0/mdev_supported_types

# 显示有2个或者更多即成功,UHD630核显最多可以开2个

i915-GVTg_V5_4 i915-GVTg_V5_8

创建核显GVT-g的Win虚拟机参数

按以下虚拟机参数模板建立好虚拟机,打上核显驱动就能正常使用核显了。

创建win10虚拟机(22H2)

名称:随便
光驱0挂载:Win安装ISO镜像
光驱1挂载:virtIO驱动ISO镜像
显示:VirtIO-GPU
机型:q35
BIOS:OVMF
EFI分区:UEFI(OVMF)需要
磁盘:SCSI 大小40G(按需设置,或硬盘直通)
CPU:host 核心数量4(按需设置)
内存:4G及以上
网络:virtIO(半虚拟化或网卡直通)网卡
添加PCI设备:核显GVT-g(勾选ROM-Bar和PCIE在Mdev类型中选择vgpu设备i915-GVTg_V5_8)
音频设备:ich9-intel-hda/后端驱动器:无

结束

Intel GVT-g是显卡虚拟化技术,不同于PCI-E设备直通,GVT-g可以虚拟出多个虚拟机的GPU,从而有效地在虚拟机中提供接近宿主机的图形性能,并且仍然让主机正常使用虚拟化的GPU。各有各的应用场景。

到这里这次折腾就结束了,效果如图。

windows-gpu.png

附:驱动下载

1
2
3
4
5
6
7
8
virtIO驱动ISO:
https://yun.yangwenqing.com/Linux/DD/virtio-win-0.1.229.iso

# 7-10代核显驱动:
https://www.intel.cn/content/www/cn/zh/download/776137/intel-7th-10th-gen-processor-graphics-<a href="https://www.iigeek.com/archives/tag/windows"><b style="color:#378e3c">**windows**</b></a>.html

# 11-13代核显驱动:
https://www.intel.cn/content/www/cn/zh/download/785597/intel-arc-iris-xe-graphics-windows.html