Closed lurenJBD closed 2 years ago
之前的版本只在显卡直通中添加分组参数。此次v2.3.0中将在配置硬件直接时直接添加此参数,并判断pve的版本,只在大于等于7的版本中添加此参数。
“但注意的是在虚拟机添加PCI设备选项中不要勾选所有功能!!!” 这个是何解?是所有PCI设备都不能勾选所有功能吗?还是只指网卡?
很抱歉,不按格式来汇报,但应该看完我写的内容,应该还是能明白,只需要添加一点内容就可以完成了
开启PVE硬件直通就是修改grub启动参数,开启内核对应功能,但参数中还有两个可选参数
iommu=pt
关于"iommu=pt"参数的说明一: iommu=pt并不会影响kvm/dpdk/spdk的性能,这三者本质上都是用户态驱动,iommu=pt只会影响内核驱动,能让内核驱动设备性能更高。 参考来源:IOMMU(二)-从配置说起 - 知乎 (zhihu.com) 关于"iommu=pt"参数的说明二: You should also append the iommu=pt parameter. This will prevent Linux from touching devices which cannot be passed through. 你还应该附加 iommu=pt 参数。这将防止Linux将不能直通的设备直通。 参考来源:PCI passthrough via OVMF - ArchWiki (archlinux.org)
以及
pcie_acs_override=downstream
关于"pcie_acs_override=downstream"参数的说明: 用于将iommu groups拆分,方便直通一些板载的设备
举例说明: iommu group 分离错误导致无法直通单个网口,在虚拟机中添加单个网口会将整个PCIe设备直通给虚拟机,或直通失败
实际操作:
先查看PCI设备,确定网卡所属的ID
lspci -k | grep Eth
shell运行后返回内容:
04:00.0 Ethernet controller: Intel Corporation Ethernet Controller 10-Gigabit X540-AT2 (rev 01) DeviceName: Intel Ethernet X540 #1 Subsystem: Super Micro Computer Inc Ethernet Controller 10-Gigabit X540-AT2 04:00.1 Ethernet controller: Intel Corporation Ethernet Controller 10-Gigabit X540-AT2 (rev 01) DeviceName: Intel Ethernet X540 #2 Subsystem: Super Micro Computer Inc Ethernet Controller 10-Gigabit X540-AT2 05:00.0 Ethernet controller: Intel Corporation Ethernet Controller 10-Gigabit X540-AT2 (rev 01) DeviceName: Intel Ethernet X540 #3 Subsystem: Super Micro Computer Inc Ethernet Controller 10-Gigabit X540-AT2 05:00.1 Ethernet controller: Intel Corporation Ethernet Controller 10-Gigabit X540-AT2 (rev 01) DeviceName: Intel Ethernet X540 #4 Subsystem: Super Micro Computer Inc Ethernet Controller 10-Gigabit X540-AT2 06:00.0 Ethernet controller: Intel Corporation Ethernet Controller 10-Gigabit X540-AT2 (rev 01) DeviceName: Intel Ethernet X540 #5 Subsystem: Super Micro Computer Inc Ethernet Controller 10-Gigabit X540-AT2 06:00.1 Ethernet controller: Intel Corporation Ethernet Controller 10-Gigabit X540-AT2 (rev 01) DeviceName: Intel Ethernet X540 #6 Subsystem: Super Micro Computer Inc Ethernet Controller 10-Gigabit X540-AT2
可以看到有6个ID,分别对应6个网口,而我的使用的硬件板载的三个X540-AT2网卡,每张网口有两个网口,正好是6个
查看iommu groups方法:
ls /sys/kernel/iommu_groups/*/devices
shell运行后返回内容:(仅展示网卡ID部分)
/sys/kernel/iommu_groups/1/devices: 0000:04:00.0 0000:04:00.1 0000:05:00.0 0000:05:00.1 0000:06:00.0 0000:06:00.1
iommu group 无法自动分离可以改/etc/default/grub里的内容为
intel处理器 修改后: GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream"
添加参数后,iommu_groups全部分离了(仅展示网卡ID部分)
/sys/kernel/iommu_groups/13/devices: 0000:04:00.0 /sys/kernel/iommu_groups/14/devices: 0000:04:00.1 /sys/kernel/iommu_groups/15/devices: 0000:05:00.0 /sys/kernel/iommu_groups/16/devices: 0000:05:00.1 /sys/kernel/iommu_groups/17/devices: 0000:06:00.0 /sys/kernel/iommu_groups/18/devices: 0000:06:00.1
刚刚好每个网口都在一个单独的iommu_groups,这样就可以单独的直通某个网口,而不是整个网卡设备了,但注意的是在虚拟机添加PCI设备选项中不要勾选所有功能!!!
PVE7.0之前的版本是需要替换有PCIe ACS 补丁的Linux内核才能正常将iommu group拆分,但本次使用的PVE版本为7.0-11并没有打补丁就能正常拆分iommu group 参考:解决j3455直通iommu分组问题,PVE内核编 其中有现成编译好的内核,下载替换即可,仅限PVE使用,其他Debian系统请自己测试
很抱歉,不按格式来汇报,但应该看完我写的内容,应该还是能明白,只需要添加一点内容就可以完成了
开启PVE硬件直通就是修改grub启动参数,开启内核对应功能,但参数中还有两个可选参数
以及
举例说明: iommu group 分离错误导致无法直通单个网口,在虚拟机中添加单个网口会将整个PCIe设备直通给虚拟机,或直通失败
实际操作:
先查看PCI设备,确定网卡所属的ID
shell运行后返回内容:
可以看到有6个ID,分别对应6个网口,而我的使用的硬件板载的三个X540-AT2网卡,每张网口有两个网口,正好是6个
查看iommu groups方法:
shell运行后返回内容:(仅展示网卡ID部分)
iommu group 无法自动分离可以改/etc/default/grub里的内容为
添加参数后,iommu_groups全部分离了(仅展示网卡ID部分)
刚刚好每个网口都在一个单独的iommu_groups,这样就可以单独的直通某个网口,而不是整个网卡设备了,但注意的是在虚拟机添加PCI设备选项中不要勾选所有功能!!!