6.2. 配置 SR-IOV
以下示例的 CPU 分配、内存分配和 NIC 配置可能与您拓扑和用例的不同。
生成内置的
ComputeSriov,以定义 OpenStack 集群中的节点,以运行NeutronSriovAgent、NeutronSriovHostConfig和默认计算服务。# openstack overcloud roles generate \ -o /home/stack/templates/roles_data.yaml \ Controller ComputeSriov在生成
overcloud_images.yaml时包括neutron-sriov.yaml和roles_data.yaml文件,以便 SR-IOV 容器已准备好。SERVICES=\ /usr/share/openstack-tripleo-heat-templates/environments/services openstack overcloud container image prepare \ --namespace=registry.redhat.io/rhosp13 \ --push-destination=192.168.24.1:8787 \ --prefix=openstack- \ --tag-from-label {version}-{release} \ -e ${SERVICES}/neutron-sriov.yaml \ --roles-file /home/stack/templates/roles_data.yaml \ --output-env-file=/home/stack/templates/overcloud_images.yaml \ --output-images-file=/home/stack/local_registry_images.yaml注意push-destination IP 地址是您之前使用
undercloud.conf配置文件中的local_ip参数设置的地址。如需有关容器镜像准备的更多信息,请参阅 Director 安装和使用。
要将
KernelAgs和TunedProfile参数包含在部署脚本中,请将/usr/share/openstack-tripleo-heat-templates/environments中的host-config-and-reboot.yaml文件包含在内。openstack overcloud deploy --templates \ … \ -e /usr/share/openstack-tripleo-heat-templates/environments/host-config-and-reboot.yaml \ ...根据集群需求以及硬件配置,在
parameter_defaults下配置 SR-IOV 节点的参数。这些设置通常添加到network-environment.yaml文件中。NeutronNetworkType: 'vlan' NeutronNetworkVLANRanges: - tenant:22:22 - tenant:25:25 NeutronTunnelTypes: ''在同一文件中,为 SR-IOV 计算节点配置特定于角色的参数。
注意NeutronSriovNumVFs参数很快将被弃用,而是使用网络配置模板中的numvfs属性。部署后,红帽不支持修改NeutronSriovNumVFs参数,也无法修改numvfs参数。已知在运行中的环境中更改任何参数,会导致在该 PF 上具有 SR-IOV 端口的所有运行实例永久中断。除非硬重启这些实例,否则 SR-IOV PCI 设备将无法对实例可见。ComputeSriovParameters: IsolCpusList: "1-19,21-39" KernelArgs: "default_hugepagesz=1GB hugepagesz=1G hugepages=32 iommu=pt intel_iommu=on isolcpus=1-19,21-39" TunedProfileName: "cpu-partitioning" NeutronBridgeMappings: - tenant:br-link0 NeutronPhysicalDevMappings: - tenant:p7p1 - tenant:p7p2 NeutronSriovNumVFs: - p7p1:5 - p7p2:5 NovaPCIPassthrough: - vendor_id: "8086" product_id: "1528" address: "0000:06:00.0" physical_network: "tenant" - vendor_id: "8086" product_id: "1528" address: "0000:06:00.1" physical_network: "tenant" NovaVcpuPinSet: '1-19,21-39' NovaReservedHostMemory: 4096注意在配置 PCI 透传时,不要使用
devname参数,因为 NIC 的设备名称可能会改变。反之,使用vendor_id和product_id,因为它们更稳定,或者使用NIC 的地址。有关如何配置NovaPCIPassthrough的更多信息,请参阅有关 配置NovaPCIPassthrough的指南。在
compute.yaml网络配置模板中配置启用的 SR-IOV 接口。确保接口被配置为独立 NIC,用于创建 SR-IOV 虚拟功能(VF):- type: interface name: p7p3 mtu: 9000 use_dhcp: false defroute: false nm_controlled: true hotplug: true - type: interface name: p7p4 mtu: 9000 use_dhcp: false defroute: false nm_controlled: true hotplug: true确保默认过滤器列表包含值
AggregateInstanceExtraSpecsFilter。NovaSchedulerDefaultFilters: ['AvailabilityZoneFilter','RamFilter','ComputeFilter','ComputeCapabilitiesFilter','ImagePropertiesFilter','ServerGroupAntiAffinityFilter','ServerGroupAffinityFilter','PciPassthroughFilter','AggregateInstanceExtraSpecsFilter']- 部署 overcloud。
TEMPLATES_HOME="/usr/share/openstack-tripleo-heat-templates"
CUSTOM_TEMPLATES="/home/stack/templates"
openstack overcloud deploy --templates \
-r ${CUSTOM_TEMPLATES}/roles_data.yaml \
-e ${TEMPLATES_HOME}/environments/host-config-and-reboot.yaml \
-e ${TEMPLATES_HOME}/environments/services/neutron-sriov.yaml \
-e ${CUSTOM_TEMPLATES}/network-environment.yaml