KVM虚拟机配置PCI网卡直通

PCI直通

PCI PathThrough 是一种让虚拟机从主机控制 PCI 设备的机制。与使用虚拟化硬件相比,具有一些优势,例如更低的延迟、更高的性能或其他功能。

但是,如果您将设备传递到虚拟机,则无法再在主机或任何其他 VM 中使用该设备。

由于直通是一项需要硬件支持的功能,因此提前检查,并做好准备以使其工作。

硬件

包括CPU 和主板在内的硬件都需要支持IOMMU  I / O内存 管理单元 )中断重映射。

一般来说,带有 VT-d 的 Intel 系统和带有 AMD-Vi 的 AMD 系统都支持这一点。但由于硬件的差异以及兼容性不佳的驱动程序,不能保证所有网卡环境可以开箱即用。

此外,服务器级硬件通常比消费级硬件有更好的兼容性,但即便如此,当前许多系统也可以支持这一点。

如果您有其他特殊设置,可咨询您的硬件供应商,以检查他们是否支持 Linux 下的此功能。

配置

如果确保您的硬件支持直通,您将需要进行一些配置以启用 PCI 直通。

IOMMU

首先,必须在 BIOS/UEFI 中启用 IOMMU 支持。大多数情况下,该选项被命名为IOMMUVT-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

查看有输出即为成功。

End

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>