6.2. SR-IOV の設定
Single Root I/O Virtualization (SR-IOV) と共に Red Hat Open Stack Platform (RHOSP) をデプロイするには、インスタンスが直接アクセスを要求できる SR-IOV 機能を持つ共有 PCIe リソースを設定します。
以下に示す CPU 割り当て、メモリーの確保、および NIC の設定は一例であり、実際のユースケースとは異なる場合があります。
手順
-
アンダークラウドに
stack
ユーザーとしてログインします。 stackrc
ファイルを取得します。[stack@director ~]$ source ~/stackrc
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
サービスが含まれます。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 Installation and UsageのPreparing container imagesを参照してください。
環境ファイルディレクトリーに
/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
network-environment-sriov.yaml
ファイルのparameter_defaults
に次のパラメーターを追加して、クラスターとハードウェア設定の SR-IOV ノードを設定します。NeutronNetworkType: 'vlan' NeutronNetworkVLANRanges: - tenant:22:22 - tenant:25:25 NeutronTunnelTypes: ''
各 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'
network-environment-sriov.yaml
ファイルで SR-IOV Compute ノードのロール固有のパラメーターを設定します。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
に置き換えられました。network-environment-sriov.yaml
ファイルで SR-IOV Compute ノードの 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
パラメーターの設定方法に関する情報は、Configuring the Compute Service for Instance CreationのGuidelines for configuringNovaPCIPassthrough
を参照してください。 <physical_network>
を、PCI デバイスが配置されている物理ネットワークの名前に置き換えます。注記NIC のデバイス名は変更される可能性があるため、PCI パススルーを設定する場合は
devname
パラメーターを使用しないでください。PF で Networking サービス (neutron) ポートを作成するには、NovaPCIPassthrough
にvendor_id
、product_id
、および PCI デバイスアドレスを指定し、--vnic-type direct-physical
オプションでポートを作成します。Virtual Function (VF) に Networking サービスのポートを作成するには、NovaPCIPassthrough
でvendor_id
とproduct_id
を指定し、--vnic-type direct
オプションを使用してポートを作成します。vendor_id
およびproduct_id
パラメーターの値は、Physical Function (PF) コンテキストと VF コンテキストの間で異なる場合があります。NovaPCIPassthrough
を設定する方法の詳細については、Configuring the Compute Service for Instance Creationガイドの Guidelines for configuringNovaPCIPassthrough
を参照してください。
-
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 デバイスを再び利用可能にする必要があります。デフォルトフィルターのリストに、値
AggregateInstanceExtraSpecsFilter
が含まれる状態にします。NovaSchedulerDefaultFilters: ['AvailabilityZoneFilter','ComputeFilter','ComputeCapabilitiesFilter','ImagePropertiesFilter','ServerGroupAntiAffinityFilter','ServerGroupAffinityFilter','PciPassthroughFilter','AggregateInstanceExtraSpecsFilter']
-
overcloud_deploy.sh
スクリプトを実行します。