6.2. 配置 SR-IOV


注意

以下示例的 CPU 分配、内存分配和 NIC 配置可能与您拓扑和用例的不同。

  1. 生成内置的 ComputeSriov,以定义 OpenStack 集群中的节点,以运行 NeutronSriovAgentNeutronSriovHostConfig 和默认计算服务。

    # openstack overcloud roles generate \
    -o /home/stack/templates/roles_data.yaml \
    Controller ComputeSriov
    Copy to Clipboard Toggle word wrap
  2. 在生成 overcloud_images.yaml 时包括 neutron-sriov.yamlroles_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
    Copy to Clipboard Toggle word wrap
    注意

    push-destination IP 地址是您之前使用 undercloud.conf 配置文件中的 local_ip 参数设置的地址。

    如需有关容器镜像准备的更多信息,请参阅 Director 安装和使用

  3. 要将 KernelAgsTunedProfile 参数包含在部署脚本中,请将 /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 \
    ...
    Copy to Clipboard Toggle word wrap
  4. 根据集群需求以及硬件配置,在 parameter_defaults 下配置 SR-IOV 节点的参数。这些设置通常添加到 network-environment.yaml 文件中。

      NeutronNetworkType: 'vlan'
      NeutronNetworkVLANRanges:
        - tenant:22:22
        - tenant:25:25
      NeutronTunnelTypes: ''
    Copy to Clipboard Toggle word wrap
  5. 在同一文件中,为 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
    Copy to Clipboard Toggle word wrap
    注意

    在配置 PCI 透传时,不要使用 devname 参数,因为 NIC 的设备名称可能会改变。反之,使用 vendor_idproduct_id,因为它们更稳定,或者使用 NIC 的地址。有关如何配置 NovaPCIPassthrough 的更多信息,请参阅有关 配置 NovaPCIPassthrough的指南

  6. 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
    Copy to Clipboard Toggle word wrap
  7. 确保默认过滤器列表包含值 AggregateInstanceExtraSpecsFilter

    NovaSchedulerDefaultFilters: ['AvailabilityZoneFilter','RamFilter','ComputeFilter','ComputeCapabilitiesFilter','ImagePropertiesFilter','ServerGroupAntiAffinityFilter','ServerGroupAffinityFilter','PciPassthroughFilter','AggregateInstanceExtraSpecsFilter']
    Copy to Clipboard Toggle word wrap
  8. 部署 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
Copy to Clipboard Toggle word wrap
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部