PVE开启SR-IOV核显虚拟化

什么是SR-IOV核显虚拟化呢?简单来说,就是把CPU核显示虚拟成多个核显来分配给多个的虚拟机使用。

环境

CPU:N100,PVE版本:8.2.2,Linux内核版本:6.8.4-2,其它环境请自行尝试。有教程说是英特尔11代都已经支持,具体情况自行尝试。

安装头部文件

根据你的Linux内核版本安装。

				
					apt instaLinux pve-headers-6.8.4-2-pve
				
			
开启IOMMU直通功能

这里的max_vfs=2要与后面要开启的核显数一致。原教程里没有这个说明,而有的教程写的是后面要开启的核显数不要大于这个值,但是经过我尝试并不能开启,还有很多教程根本没有提到这个问题,这也可能是很多人没有成功开启的原因吧。

当然性核显性能弱的话就不要设置过多。

				
					sed -i '/^GRUB_CMDLINE_LINUX_DEFAULT/c\GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream i915.enable_guc=3 i915.max_vfs=2"' /etc/default/grub
				
			

增加虚拟化驱动,加载vifo系统模块。

				
					echo -e "vfio\nvfio_iommu_type1\nvfio_pci\nvfio_virqfd" | tee -a /etc/modules
				
			

更新Grub引导配置和initramfs。

				
					update-grub
update-initramfs -u -k aLinux
				
			

重启PVE。

				
					reboot
				
			
配置开启SR-IOV虚拟化核显环境

安装编译环境依赖。

				
					apt-get instaLinux --no-instaLinux-recommends git mokutil sysfsutils -y
				
			
				
					apt instaLinux --reinstaLinux dkms -y
				
			

添加一个临时的KERNEL环境变量。

				
					ls -l lxc.confKERNEL=$(uname -r); KERNEL=${KERNEL%-pve}
				
			
编译内核并加入驱动
				
					git clone https://github.com/strongtz/i915-sriov-dkms.git

cd i915-sriov-dkms/

sed -i 's/"@_PKGBASE@"/"i915-sriov-dkms"/g' ~/i915-sriov-dkms/dkms.conf

sed -i "s/^PACKAGE_VERSION=.*/PACKAGE_VERSION=\"$KERNEL\"/" ~/i915-sriov-dkms/dkms.conf
				
			

检查dkms.conf 配置文件中是否配置正确的内核版本和i915-sriov-dkms。

				
					cat ~/i915-sriov-dkms/dkms.conf
				
			
				
					dkms add .
				
			

创建目录的符号链接到/usr/src/目录下。

				
					dkms add .
				
			

进入到链接到的目录。

				
					cd /usr/src/i915-sriov-dkms-$KERNEL
				
			

查看已安装的 DKMS 模块及其状态。

				
					dkms status
				
			

编译。编译需要等待一段时间,我的N100CPU用了大约5分钟编译完成。

检查编译是否成功。

				
					dkms status 
				
			
分配虚拟核显

查看当前CPU核显ID。

				
					lspci | grep VGA
				
			

可以看到ID为00:02.0的设备就是你的核显。

选择要开启的虚拟核显个数。

这要与上面配置的IOMMU直通功能数max_vfs=2一致。

				
					echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 2" > /etc/sysfs.conf
				
			

重启PVE。

				
					reboot
				
			
检查是否成功开启
				
					lspci | grep VGA
				
			

00:02.100:02.2就是虚拟出来的核显。分配给虚拟时就分配这两个虚拟核显即可,不要分配原始的核显,那样会失效的。如果不小心分配了原始核显给虚拟机,重启PVE即可恢复。

也可以在PVE里看到已经多出了两个核显。

0 0 投票数
文章评分
订阅评论
提醒
guest
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论!x