Centos 7 + Openstack + PCI passthrough(透传)

本文档详细介绍了在Centos 7上安装Openstack并配置PCI passthrough的过程,包括解决iommu_group问题、开启硬件虚拟化、验证内核模块支持、设备解绑和Openstack配置。特别提醒,当控制节点兼做计算节点时,不能透传其GPU以避免VNC服务失效。
摘要由CSDN通过智能技术生成

0.遇到的问题

a.多个设备在同一个iommu_group的问题,多见于显卡

error:please ensure all devices within the iommu_group are bound to their vfio bus driver

需要将多个设备全部解绑定,解决方案见参考文档7,8


b.当控制节点同时作为计算节点使用

不可将控制节点显卡(GPU)透传到VM,否则在dashboard-console中VNC服务将不可用


1.确认硬件支持虚拟化技术及PCI passthrough

由于需要硬件支持,先要确认CPU及主板(motherboard)是否支持Intel或AMD的硬件辅助虚拟化功能,可以查看官方的硬件支持列表,或者在BIOS中查看相关选项。也可在参考文档3中进行查询(文档所列并不完整,找不的可以到官方支持列表查询),Intel CPU可以在参考文档5链接中查询。

还需要支持PCI passthrough的硬件设备。


2.在BIOS中打开硬件辅助虚拟化功能支持

主要是VT(VT-x)及VT-d支持,需要将相关支持设置为enable

这两个选项一般在BIOS中Advance下CPU和System或相关条目中设置。

以Intel为例:

VT:  Intel Virtualization Technology

VT-d:  Intel VT for Directed I/O


3.确认内核集成 pci-stub/vfio,DMAR,IOMMO这几个模块

a. 确认内核支持iommu

$ cat /proc/cmdline | grep iommu

如果没有输出结果,添加intel_iommu=on到grub的启动参数

如果你想在系统启动时加载一个内核参数,需修改GRUB的配置模板(/etc/default /grub),添加"名称=值”的键值对到GRUB_CMDLINE_LINUX变量,添加多个时用空格隔开,例如GRUB_CMDLINE_LINUX="...... name=value"(如果没有GRUB_CMDLINE_LINUX变量时,用GRUB_CMDLINE_LINUX_DEFAULT替代即可),然后使用grub2-mkconfig -o /boot/grub2/grub.cfg更新grub.cfg文件



b. 使用dmesg | grep -i DMAR -i IOMMO来判断 (DMAR与IOMMO都必须有)。

$ dmesg | grep -e DMAR -e IOMMU

     ...

     DMAR:DRHD base: 0x000000feb03000 flags: 0x0

IOMMU feb03000: ver 1:0 cap c9008020e30260 ecap 1000

     ...


也可以使用命令   find /sys/kernel/iommu_groups/ -type l    来确认


4.确认pci设备驱动信息并从host默认驱动程序中解绑,以备虚拟机透传使用

a. 查看pci设备信息

$ lspci -nn

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值