6.2. 配置 SR-IOV


要使用单一根 I/O 虚拟化(SR-IOV)部署 Red Hat OpenStack Platform (RHOSP),配置具有实例可以请求直接访问的 SR-IOV 功能的共享 PCIe 资源。

注意

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

流程

  1. stack 用户的身份登录 undercloud。
  2. Source stackrc 文件:

    [stack@director ~]$ source ~/stackrc
    Copy to Clipboard Toggle word wrap
  3. 生成名为 roles_data_compute_sriov.yaml 的新角色数据文件,其中包含 ControllerComputeSriov 角色:

    (undercloud)$ openstack overcloud roles \
     generate -o /home/stack/templates/roles_data_compute_sriov.yaml \
     Controller ComputeSriov
    Copy to Clipboard Toggle word wrap

    ComputeSriov 是您的 RHOSP 安装提供的自定义角色,除了默认的计算服务外,还包括 NeutronSriovAgentNeutronSriovHostConfig 服务。

  4. 要准备 SR-IOV 容器,在生成 overcloud_images.yaml 文件时包括 neutron-sriov.yamlroles_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
    Copy to Clipboard Toggle word wrap

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

  5. 在环境文件目录中,创建 /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
    Copy to Clipboard Toggle word wrap
  6. 在您的 network-environment-sriov.yaml 文件的 parameter_defaults 下添加以下参数,为您的集群和硬件配置 SR-IOV 节点:

      NeutronNetworkType: 'vlan'
      NeutronNetworkVLANRanges:
        - tenant:22:22
        - tenant:25:25
      NeutronTunnelTypes: ''
    Copy to Clipboard Toggle word wrap
  7. 要确定每个 PCI 设备类型的 vendor_idproduct_id,请在具有 PCI 卡的物理服务器上使用以下命令之一:

    • 要从部署的 overcloud 返回 vendor_idproduct_id,请使用以下命令:

      # 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 Toggle word wrap
    • 如果您还没有部署 overcloud,要返回物理功能(PF)的 vendor_idproduct_id,请使用以下命令:

      (undercloud) [stack@undercloud-0 ~]$ openstack baremetal introspection data save <baremetal_node_name> | jq '.inventory.interfaces[] | .name, .vendor, .product'
      Copy to Clipboard Toggle word wrap
  8. network-environment-sriov.yaml 文件中为 SR-IOV 计算节点配置特定于角色的参数:

      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
        NovaComputeCpuDedicatedSet: '1-19,21-39'
        NovaReservedHostMemory: 4096
    Copy to Clipboard Toggle word wrap
    注意

    NovaVcpuPinSet 参数现已弃用,它被用于专用固定工作负载的 NovaComputeCpuDedicatedSet 替代。

  9. network-environment-sriov.yaml 文件中为 SR-IOV 计算节点配置 PCI 透传设备:

      ComputeSriovParameters:
        ...
        NovaPCIPassthrough:
          - vendor_id: "<vendor_id>"
            product_id: "<product_id>"
            address: <NIC_address>
            physical_network: "<physical_network>"
        ...
    Copy to Clipboard Toggle word wrap
    • <vendor_id > 替换为 PCI 设备的供应商 ID。
    • <product_id > 替换为 PCI 设备的产品 ID。
    • <NIC_address > 替换为 PCI 设备的地址。有关如何配置 address 参数的详情,请参考 Configuring the Compute Service for Instance Creation 指南中的 Guidelines for configuring NovaPCIPassthrough 部分。
    • 使用 PCI 设备所在物理网络的名称替换 <physical_network>

      注意

      当您配置 PCI 透传时,不要使用 devname 参数,因为 NIC 的设备名称可能会改变。要在 PF 上创建网络服务(neutron)端口,请指定 vendor_idproduct_id,以及 NovaPCIPassthrough 中的 PCI 设备地址,并使用 --vnic-type direct-physical 选项创建端口。要在虚拟功能(VF)上创建网络服务端口,请在 NovaPCIPassthrough 中指定 vendor_idproduct_id,并使用 --vnic-type direct 选项创建端口。vendor_idproduct_id 参数的值可能会在物理功能(PF)和 VF 上下文之间有所不同。有关如何配置 NovaPCIPassthrough 的更多信息,请参阅 Configuring the Compute Service for Instance Creation 指南中的 Guidelines for configuring NovaPCIPassthrough

  10. compute.yaml 网络配置模板中配置启用的 SR-IOV 接口。要创建 SR-IOV VF,将接口配置为独立 NIC:

                 - type: sriov_pf
                    name: p7p3
                    mtu: 9000
                    numvfs: 10
                    use_dhcp: false
                    defroute: false
                    nm_controlled: true
                    hotplug: true
                    promisc: false
    
                  - type: sriov_pf
                    name: p7p4
                    mtu: 9000
                    numvfs: 10
                    use_dhcp: false
                    defroute: false
                    nm_controlled: true
                    hotplug: true
                    promisc: false
    Copy to Clipboard Toggle word wrap
    注意

    numvfs 参数替换网络配置 模板中的 NeutronSriovNum VFs 参数。部署后,红帽不支持修改 NeutronSriovNumVFs 参数或 numvfs 参数。如果在部署后修改任何参数,则可能会导致在该 PF 上有 SR-IOV 端口的运行实例中断。在这种情况下,您必须硬重启这些实例,使 SR-IOV PCI 设备再次可用。

  11. 确保默认过滤器列表包含值 AggregateInstanceExtraSpecsFilter

    NovaSchedulerDefaultFilters: ['AvailabilityZoneFilter','ComputeFilter','ComputeCapabilitiesFilter','ImagePropertiesFilter','ServerGroupAntiAffinityFilter','ServerGroupAffinityFilter','PciPassthroughFilter','AggregateInstanceExtraSpecsFilter']
    Copy to Clipboard Toggle word wrap
  12. 运行 overcloud_deploy.sh 脚本。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat