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 コンピュートノードのロール固有のパラメーターを設定します。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 コンピュートノードの 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スクリプトを実行します。