前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >openstack passthrough配置手册

openstack passthrough配置手册

作者头像
惠伟
发布2021-02-24 11:18:21
9421
发布2021-02-24 11:18:21
举报
文章被收录于专栏:虚拟化笔记虚拟化笔记

配置BIOS

BIOS中enable vt-d

配置内核参数

grep IOMMU /boot/config_3.10.0-957.27.2.el7.x86_64

如果内核默认没有打开CONFIG_INTEL_IOMMU_DEFAULT_ON则需要配置内核的启动参数

intel_iommu=on。如果为了非pci passthrough device的性能则需要配置内核参数iommu=pt。

可以看intel_iommu默认没有打开,需要添加内核参数

sudo vim /boot/grub2/grub.cfg

在对应行添加两个参数intel_iommu=on iommu=pt

然后sudo reboot机器,等机器重启完全执行sudo dmesg | grep IOMMU

执行sudo dmesg | grep DMAR

如果能看到” DMAR: IOMMU enabled”和“DMAR: Intel(R) Virtualization Technology for Directed I/O”那就可以放心了,机器已经具备passthrough的基本条件了

确认要passthrough的网卡

这个机器上总共了4块网卡

分别看这几块网卡的名字

可以看到eth0和eth1已经被占用,eth2和eth3空闲,我们就拿eth2来passthrough吧

千万要小心,不要把正在使用的网卡passthrough掉,一定要规划好

看一下eth2的iommu_group,和group中的其它设备,一个group的设备必须同时passthrough,只passthrough其中一个会导致失败,这group中只有一个设备,所以没什么问题。

配置openstack

  • 配置controller上的nova-scheduler

controller上的nova-sheduler的配置文件中增加PciPassthroughFilter

[filter_scheduler]

enabled_filters = AvailabilityZoneFilter, ComputeFilter, ComputeCapabilitiesFilter, ImagePropertiesFilter, ServerGroupAntiAffinityFilter, ServerGroupAffinityFilter, PciPassthroughFilter

available_filters = nova.scheduler.filters.all_filters

重启,然后查看运行状态

  • 配置controller上的nova-api

在配置文件中增加一个alias

[pci]

alias = { "vendor_id":"15b3", "product_id":"1015", "device_type":"type-PF", "name":"mellanox-0" }

其中的vendor_id和product_id来自于compute节点要passthrough的网卡,如下图

重启,然后查看运行状态

  • 配置compute节点上的nova-compute

[pci]

passthrough_whitelist={"vendor_id":"15b3", "product_id":"1015","address":"0000:04:00.0","physical_network": "provider"}

alias={"vendor_id":"15b3","product_id":"1015","device_type":"type-PF","name":"mellanox-0"}

这儿的physical_network在创建 tenant network是要用到,就是--provider-physical-network 选项指定的值,创建VM时要指定此tenant network,每个passthrough的网卡要对应一个physical_network。neutron中physical_network是写到配置文件ml2_conf.ini中的,例如flat_networks = physnet1和vlan_ranges = physnet2:1:1000。

重启,然后查看运行状态

创建VM

  • 创建flavor

openstack flavor create --ram 1024 --disk 32 --vcpus 2 --property "pci_passthrough:alias"="mellanox-0:1" passthrough-flavor

其中的"pci_passthrough:alias"="mellanox-0:1"是必须传的参数,mellanox-0就是nova-api中配置的,1表示passthrough一个网卡

  • 启动VM

openstack --debug server create --flavor passthrough-flavor --image CentOS-7-x86_64-GenericCloud.raw --network provider --wait passthrough-server

在计算节点看一下qemu进程的参数,发现有vfio-pci绑定了pci 04:00.0

登录到VM发现有一个mellanox网卡,加载的驱动是mlx5_core

遗留问题

网卡没有使能SRIOV,刚开始"device_type"配置为"type-PCI",发现nova-scheduler的PciPassthroughFilter把所有compute都过滤掉了,导致VM怎么都创建不成功。compute节点上nova-compute resource_tracker上报时是type-PCI,调试了一下nova-scheduler的PciPassthroughFilter,它要求的类型是type-PF,然后把device_type修改成type-PF就行了,但总觉得不对劲,就应该是type-PCI,看一下代码

这是type-PCI 设备libvirt看到的信息

这是type-PF 设备libvirt看到的信息

这是type-VF 设备libvirt看到的信息

修改为如下代码:

把这代码提交给社区,看社区怎么说

https://review.opendev.org/#/c/695416/

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 配置BIOS
  • 配置内核参数
  • 确认要passthrough的网卡
  • 配置openstack
  • 创建VM
  • 遗留问题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档