Menu Close

6.2. SR-IOV の設定

Single Root I/O Virtualization(SR-IOV)で Red Hat OpenStack Platform(RHOSP)をデプロイするには、インスタンスが直接アクセスを要求することができる SR-IOV 機能を持つ共有 PCIe リソースを設定します。

注記

以下に示す CPU 割り当て、メモリーの確保、および NIC の設定は一例であり、実際のユースケースとは異なる場合があります。

手順

  1. アンダークラウドに stack ユーザーとしてログインします。
  2. stackrc ファイルを取得します。

    [stack@director ~]$ source ~/stackrc
  3. Controller および ComputeSriov ロールが含まれる roles_data_compute_sriov.yaml という名前の新規ロールデータファイルを生成します。

    (undercloud)$ openstack overcloud roles \
     generate -o /home/stack/templates/roles_data_compute_sriov.yaml \
     Controller ComputeSriov

    ComputeSriov は、RHOSP インストールで提供されるカスタムロールで、デフォルトの Compute サービスに加えて NeutronSriovAgent サービスであるNeutronSriovHostConfig サービスが含まれます。

  4. 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

    コンテナーイメージの準備に関する詳しい情報は、『 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
  6. network-environment-sriov.yaml ファイルの parameter_defaults セクションに以下のパラメーターを追加して、クラスターおよびハードウェア設定用の SR-IOV ノードを設定します。

      NeutronNetworkType: 'vlan'
      NeutronNetworkVLANRanges:
        - tenant:22:22
        - tenant:25:25
      NeutronTunnelTypes: ''
  7. 各 PCI デバイス種別の vendor _id および product_id を確認するには、PCI カードを持つ物理サーバーで以下のコマンドのいずれかを使用します。

    • デプロイしたオーバークラウドから vendor_id および product_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)
    • オーバークラウドをデプロイしていない場合は、Physical Function(PF)の vendor _id および product_id を返すには、以下のコマンドを使用します。

      (undercloud) [stack@undercloud-0 ~]$ openstack baremetal introspection data save <baremetal_node_name> | jq '.inventory.interfaces[] | .name, .vendor, .product'
  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
    注記

    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>"
        ...
    • <vendor_id> を PCI デバイスのベンダー ID に置き換えます。
    • <product_id> を PCI デバイスの製品 ID に置き換えます。
    • <NIC_address> を PCI デバイスのアドレスに置き換えます。address パラメーターの設定方法に関する情報は、『 インスタンス作成のための Compute サービス の設定』の「 NovaPCIPassthroughの設定に関するガイドライン 」を参照 してください。
    • <physical_network> を、PCI デバイスが配置されている物理ネットワークの名前に置き換えます。

      注記

      NIC のデバイス名は変更される可能性があるため、PCI パススルーを設定する場合は devname パラメーターを使用しないでください。PF で Networking サービス (neutron) ポートを作成するには、NovaPCIPassthroughvendor_idproduct_id、および PCI デバイスアドレスを指定し、--vnic-type direct-physical オプションでポートを作成します。Virtual Function(VF)に Networking サービスポートを作成するには、NovaPCIPassthroughvendor_id および product_id を指定し、--vnic-type direct オプションを使用してポートを作成します。vendor_id および product_id パラメーターの値は、Physical Function(PF)と VF コンテキストで異なる場合があります。NovaPCIPassthrough の設定方法についての詳細は、『 インスタンス作成のための Compute サービスの設定』の「 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
    注記

    numvfs パラメーターは、ネットワーク設定テンプレートの NeutronSriovNumVFs パラメーターに代わるものです。Red Hat では、デプロイ後の NeutronSriovNumVFs パラメーターまたは numvfs パラメーターの変更をサポートしません。デプロイ後にいずれかのパラメーターを変更すると、その PF に SR-IOV ポートを持つ実行中のインスタンスが中断する可能性があります。この場合、これらのインスタンスをハードリブートして、SR-IOV PCI デバイスを再び利用可能にする必要があります。

  11. デフォルトフィルターの一覧に、値 AggregateInstanceExtraSpecsFilter が含まれる状態にします。

    NovaSchedulerDefaultFilters: ['AvailabilityZoneFilter','ComputeFilter','ComputeCapabilitiesFilter','ImagePropertiesFilter','ServerGroupAntiAffinityFilter','ServerGroupAffinityFilter','PciPassthroughFilter','AggregateInstanceExtraSpecsFilter']
  12. overcloud_deploy.sh スクリプトを実行します。