6.2. 配置 SR-IOV
要使用单一根 I/O 虚拟化(SR-IOV)部署 Red Hat OpenStack Platform (RHOSP),配置具有实例可以请求直接访问的 SR-IOV 功能的共享 PCIe 资源。
以下 CPU 分配、内存分配和 NIC 配置是示例,可能与您的用例不同。
流程
-
以
stack
用户的身份登录 undercloud。 Source
stackrc
文件:source ~/stackrc
[stack@director ~]$ source ~/stackrc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 生成名为
roles_data_compute_sriov.yaml
的新角色数据文件,其中包含Controller
和ComputeSriov
角色:openstack overcloud roles \ generate -o /home/stack/templates/roles_data_compute_sriov.yaml \ Controller ComputeSriov
(undercloud)$ openstack overcloud roles \ generate -o /home/stack/templates/roles_data_compute_sriov.yaml \ Controller ComputeSriov
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ComputeSriov
是您的 RHOSP 安装提供的自定义角色,除了默认的计算服务外,还包括NeutronSriovAgent
、NeutronSriovHostConfig
服务。要准备 SR-IOV 容器,在生成
overcloud_images.yaml
文件时包括neutron-sriov.yaml
和roles_data_compute_sriov.yaml
文件。sudo openstack tripleo container image prepare \ --roles-file ~/templates/roles_data_compute_sriov.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-sriov.yaml \ -e ~/containers-prepare-parameter.yaml \ --output-env-file=/home/stack/templates/overcloud_images.yaml
$ sudo openstack tripleo container image prepare \ --roles-file ~/templates/roles_data_compute_sriov.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-sriov.yaml \ -e ~/containers-prepare-parameter.yaml \ --output-env-file=/home/stack/templates/overcloud_images.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如需有关容器镜像准备的更多信息,请参阅 Director 安装和使用指南中的准备容器镜像。
在环境文件目录中,创建
/usr/share/openstack-tripleo-heat-templates/environments/network-environment.yaml
文件的副本:cp /usr/share/openstack-tripleo-heat-templates/environments/network-environment.yaml /home/stack/templates/network-environment-sriov.yaml
$ cp /usr/share/openstack-tripleo-heat-templates/environments/network-environment.yaml /home/stack/templates/network-environment-sriov.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在您的
network-environment-sriov.yaml
文件的parameter_defaults
下添加以下参数,为您的集群和硬件配置 SR-IOV 节点:NeutronNetworkType: 'vlan' NeutronNetworkVLANRanges: - tenant:22:22 - tenant:25:25 NeutronTunnelTypes: ''
NeutronNetworkType: 'vlan' NeutronNetworkVLANRanges: - tenant:22:22 - tenant:25:25 NeutronTunnelTypes: ''
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要确定每个 PCI 设备类型的
vendor_id
和product_id
,请在具有 PCI 卡的物理服务器上使用以下命令之一:要从部署的 overcloud 返回
vendor_id
和product_id
,请使用以下命令:lspci -nn -s <pci_device_address>
# lspci -nn -s <pci_device_address> 3b:00.0 Ethernet controller [0200]: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ [<vendor_id>: <product_id>] (rev 02)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您还没有部署 overcloud,要返回物理功能(PF)的
vendor_id
和product_id
,请使用以下命令:openstack baremetal introspection data save <baremetal_node_name> | jq '.inventory.interfaces[] | .name, .vendor, .product'
(undercloud) [stack@undercloud-0 ~]$ openstack baremetal introspection data save <baremetal_node_name> | jq '.inventory.interfaces[] | .name, .vendor, .product'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在
network-environment-sriov.yaml
文件中为 SR-IOV 计算节点配置特定于角色的参数:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意NovaVcpuPinSet
参数现已弃用,它被用于专用固定工作负载的NovaComputeCpuDedicatedSet
替代。在
network-environment-sriov.yaml
文件中为 SR-IOV 计算节点配置 PCI 透传设备:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<vendor_id
> 替换为 PCI 设备的供应商 ID。 -
将
<product_id
> 替换为 PCI 设备的产品 ID。 -
将
<NIC_address
> 替换为 PCI 设备的地址。有关如何配置address
参数的详情,请参考 Configuring the Compute Service for Instance Creation 指南中的 Guidelines for configuringNovaPCIPassthrough
部分。 使用 PCI 设备所在物理网络的名称替换
<physical_network>
。注意当您配置 PCI 透传时,不要使用
devname
参数,因为 NIC 的设备名称可能会改变。要在 PF 上创建网络服务(neutron)端口,请指定vendor_id
、product_id
,以及NovaPCIPassthrough
中的 PCI 设备地址,并使用--vnic-type direct-physical
选项创建端口。要在虚拟功能(VF)上创建网络服务端口,请在NovaPCIPassthrough
中指定vendor_id
和product_id
,并使用--vnic-type direct
选项创建端口。vendor_id
和product_id
参数的值可能会在物理功能(PF)和 VF 上下文之间有所不同。有关如何配置NovaPCIPassthrough
的更多信息,请参阅 Configuring the Compute Service for Instance Creation 指南中的 Guidelines for configuringNovaPCIPassthrough
。
-
将
在
compute.yaml
网络配置模板中配置启用的 SR-IOV 接口。要创建 SR-IOV VF,将接口配置为独立 NIC:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意numvfs
参数替换网络配置模板中的 NeutronSriovNum
VFs 参数。部署后,红帽不支持修改NeutronSriovNumVFs
参数或numvfs
参数。如果在部署后修改任何参数,则可能会导致在该 PF 上有 SR-IOV 端口的运行实例中断。在这种情况下,您必须硬重启这些实例,使 SR-IOV PCI 设备再次可用。确保默认过滤器列表包含值
AggregateInstanceExtraSpecsFilter
:NovaSchedulerDefaultFilters: ['AvailabilityZoneFilter','ComputeFilter','ComputeCapabilitiesFilter','ImagePropertiesFilter','ServerGroupAntiAffinityFilter','ServerGroupAffinityFilter','PciPassthroughFilter','AggregateInstanceExtraSpecsFilter']
NovaSchedulerDefaultFilters: ['AvailabilityZoneFilter','ComputeFilter','ComputeCapabilitiesFilter','ImagePropertiesFilter','ServerGroupAntiAffinityFilter','ServerGroupAffinityFilter','PciPassthroughFilter','AggregateInstanceExtraSpecsFilter']
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
运行
overcloud_deploy.sh
脚本。