KVM虚拟机配置PCI网卡直通
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
查看有输出即为成功。
End
相关文章
- 【愚公系列】2021年12月 攻防世界-简单题-MOBILE-009(RememberOther)
- yii2美化url(www.yii2.com/site/index)
- VSCode拉取git分支报错:v1.1.0 (would clobber existing tag)的解决方法
- yii2 apache配置虚拟域名
- React的Fragment标签有什么作用
- 黑科技抢先尝 | Windows全新终端初体验(附代码Build全过程)
- yii2实现分页功能
- 程会玩 | 无需自行编译也能玩转 Windows Terminal
- 更换jsdelivr为自建CDN
- 关于 redisCommand 以及 redisReply
- 更换网站字体为鸿蒙字体
- 开源跨平台软件
- 只需3步,即可将你的Chromium Edge 浏览器设置成中文
- GitHub 代理加速
- Docker 常用命令汇总
- Typecho实现文章点赞功能
- 宝塔Linux面板解决跨域问题
- 我用Zdog画了一个Canvas
- 基于Nexus搭建私服
- 允许Docker使用无权限验证的Docker Registry