PVE 8 开启SR-IOV
什么是SR-IOV?这里引用Oracle的说明
SR-IOV 技术是一种基于硬件的虚拟化解决方案,可提高性能和可伸缩性。SR-IOV 标准允许在虚拟机之间高效共享 PCIe(Peripheral Component Interconnect Express,快速外设组件互连)设备,并且它是在硬件中实现的,可以获得能够与本机性能媲美的 I/O 性能。SR-IOV 规范定义了新的标准,根据该标准,创建的新设备可允许将虚拟机直接连接到 I/O 设备。
简单来说,允许将一个PCIe设备虚拟化成多个设备,且每个虚拟化出来的设备都可以获得与物理设备相近的性能
如果显卡开启SR-IOV就可以给多台虚拟机同时配上显卡
网卡之类的设备也支持SR-IOV,但是不如显卡这么有用(毕竟虚拟化出来的网卡性能也没差多少,还不需要自己安装驱动)
前置条件
- BIOS中开启VMX(VT-X)
Advanced — CPU Configuration — Intel (VMX) Virtualization Technology
- 开启VT-D(位于显卡设置中)
Advanced — Graphics Configuration — VT-d
其他诸如CPU超频,XMP之类请自行设定
安装PVE过程中无需其他操作,请按各类教程自行安装
- 已经配置软件源
开始配置直通SR-IOV
1.修改GRUB
修改/etc/default/grub文件的GRUB_CMDLINE_LINUX_DEFAULT项,自行选择文本编辑工具
quiet intel_iommu=on iommu=pt i915.enable_guc=3 i915.max_vfs=7
添加以下内容,完成图如下
2.安装驱动
参照https://github.com/strongtz/i915-sriov-dkms
安装headers,用于安装驱动
apt update && apt install pve-headers-$(uname -r)
安装驱动编译需要软件包
apt install build-* dkms
克隆GitHub库
git clone https://github.com/strongtz/i915-sriov-dkms
替换字符串
sed -i 's/@_PKGBASE@/i915-sriov-dkms/;s/@PKGVER@/6.1/' i915-sriov-dkms/dkms.conf
移动到指定位置
mv i915-sriov-dkms /usr/src/i915-sriov-dkms-6.1
编译并安装驱动
dkms install --force -m i915-sriov-dkms -v 6.1
检查一下驱动安装情况
dkms status
正常情况下应该只有一行
i915-sriov-dkms/6.1, 6.2.16-3-pve, x86_64: installed
如果有多行or有报错请移除错误的驱动(如果没改命令应该不会变)
dkms remove i915-sriov-dkms/6.1
一次移除不干净就用移除全部驱动(驱动名字自己改)
dkms remove i915-sriov-dkms/6.1 --all
3.更新 GRUB 与 initrramfs
update-grub && update-initramfs -u
4.安装sysfsutils(这一步只有宿主机需要执行!!!)
apt install sysfsutils
查找iGPU所在总线
lspci | grep VGA
我的GPU在00:02(我已经完成了驱动的安装,还没安装的只会显示出一个,而且不会有.1.2.3这些)
把这行命令中的00:02替换成自己的
echo “devices/pci0000:00/0000:00:02.0/sriov_numvfs = 7” > /etc/sysfs.conf
5.确认驱动情况
重启系统 后再次运行
lspci | grep VGA
查看是否出现多个设备
注意,不要直通.0设备,即0000:00:02.0设备,不要勾选全部功能,配置参考如下