PCI直通
PCI PathThrough 是一种让虚拟机从主机控制 PCI 设备的机制。与使用虚拟化硬件相比,具有一些优势,例如更低的延迟、更高的性能或其他功能。
但是,如果您将设备传递到虚拟机,则无法再在主机或任何其他 VM 中使用该设备。
由于直通是一项需要硬件支持的功能,因此提前检查,并做好准备以使其工作。
硬件
包括CPU 和主板在内的硬件都需要支持IOMMU ( I / O内存 管理单元 )中断重映射。
一般来说,带有 VT-d 的 Intel 系统和带有 AMD-Vi 的 AMD 系统都支持这一点。但由于硬件的差异以及兼容性不佳的驱动程序,不能保证所有网卡环境可以开箱即用。
此外,服务器级硬件通常比消费级硬件有更好的兼容性,但即便如此,当前许多系统也可以支持这一点。
如果您有其他特殊设置,可咨询您的硬件供应商,以检查他们是否支持 Linux 下的此功能。
配置
如果确保您的硬件支持直通,您将需要进行一些配置以启用 PCI 直通。
首先,必须在 BIOS/UEFI 中启用 IOMMU 支持。大多数情况下,该选项被命名为IOMMU或VT-d,但请查看您的主板手册以了解您需要启用的确切选项。
然后,必须在 内核命令行上激活 IOMMU 。
命令行参数为:
-
对于英特尔 CPU:
intel_iommu = 开启
-
对于 AMD CPU,它应该自动启用。
例:在CentOS中配置/etc/default/grub
1、在如下配置项中添加intel_iommu=on
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet intel_iommu=on"
2、更新生效
grub2-mkconfig -o /boot/grub2/grub.cfg
3、重启节点
reboot
4、查看IOMMU状态是否开启
# cat /proc/cmdline | grep intel_iommu
# dmesg | grep -i iommu
5、PCI直通配置方法
a. 识别设备
# virsh nodedev-list --tree |grep pci
b. 获取设备xml
# virsh nodedev-dumpxml pci_0000_65_00_0
c. detach分离设备
# virsh nodedev-dettach pci_0000_65_00_0
已分离设备 pci_0000_65_00_0
d. 在KVM通过修改xml文件或virt-manager管理工具给虚机添加PCI设备
通过virt-manager管理工具添加PCI设备方法:
在新建的虚拟机配置项下选择“Add Hardware > PCI Host Device”,将PCI设备添加到VM中,启动虚拟机,新建的VM中就有对应的PCI设备。
故障处理:
PCI绑定或启动报错
error: unsupported configuration: host doesn't support passthrough of host PCI devices
解决办法:
开启Bios中CPU的虚拟化,并修改grub参数
# vim /boot/efi/EFI/centos/grub.cfg
# 找到kernel的两个位置,在末尾添加intel_iommu=on
重启服务器后,输入以下命令
lsmod | grep iommu
查看有输出即为成功。文章来源:https://www.toymoban.com/news/detail-786424.html
End文章来源地址https://www.toymoban.com/news/detail-786424.html
到了这里,关于KVM虚拟机配置PCI网卡直通的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!