Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

第3章 仮想ネットワークの SR-IOV サポートの設定

本章では、director を使用した Red Hat OpenStack Platform 11 環境への Single Root Input/Output Virtualization (SR-IOV) の設定について説明します。

以下の手順では、network-environment.yaml ファイルを更新して、カーネルの引数、SR-IOV ドライバー、PCI パススルーなどのパラメーターを追加します。また、compute.yaml ファイルも更新して SR-IOV インターフェースのパラメーターを追加してから、overcloud_deploy.sh スクリプトを実行して、その SR-IOV パラメーターを使用してオーバークラウドをデプロイする必要があります。

OpenStack NFV Config Tuning 426823 1116 JCS SR IOV

3.1. VLAN トンネリングを使用する単一 NIC の SR-IOV コンポーザブルロールの設定

本項では、OpenStack 環境向けに VLAN トンネリングを使用する SR-IOV 用のコンポーザブルロールを設定する方法について説明します。コンポーザブルロールの作成およびデプロイのプロセスには、以下の作業が含まれます。

  • role_data.yaml ファイルのローカルコピーで新規ロールを定義します。
  • network_environment.yaml ファイルを編集して、この新規ロールを追加します。
  • 更新したロールセットでオーバークラウドをデプロイします。

以下の例では、ComputeSriov は、コンピュートノード用のコンポーザブルロールで、サポートされている NIC が搭載されたノードでのみ SR-IOV を有効にします。Red Hat OpenStack Platform によって提供される既存のデフォルトロールセットは、/home/stack/roles_data.yaml ファイルに保管されます。

3.1.3. post-install.yaml の編集

  1. tuned の設定で CPU アフィニティーを指定するように設定します。

    ExtraConfig:
      type: OS::Heat::SoftwareConfig
      properties:
        group: script
        config:
          str_replace:
            template: |
              #!/bin/bash
    
              set -x
              FORMAT=$COMPUTE_HOSTNAME_FORMAT
              if [[ -z $FORMAT ]] ; then
                FORMAT="compute" ;
              else
                # Assumption: only %index% and %stackname% are the variables in Host name format
                FORMAT=$(echo $FORMAT | sed  's/\%index\%//g' | sed 's/\%stackname\%//g') ;
              fi
              if [[ $(hostname) == *$FORMAT* ]] ; then
                tuned_service=/usr/lib/systemd/system/tuned.service
                grep -q "network.target" $tuned_service
                if [ "$?" -eq 0 ]; then
                  sed -i '/After=.*/s/network.target//g' $tuned_service
                fi
                grep -q "Before=.*network.target" $tuned_service
                if [ ! "$?" -eq 0 ]; then
                  grep -q "Before=.*" $tuned_service
                  if [ "$?" -eq 0 ]; then
                    sed -i 's/^\(Before=.*\)/\1 network.target openvswitch.service/g' $tuned_service
                  else
                    sed -i '/After/i Before=network.target openvswitch.service' $tuned_service
                  fi
                fi
                systemctl daemon-reload
              fi
            params:
              $COMPUTE_HOSTNAME_FORMAT: {get_param: ComputeHostnameFormat}

3.2. SR-IOV 用のフレーバーの作成とインスタンスのデプロイ

NFV を実装する Red Hat OpenStack Platform デプロイメントの SR-IOV の設定を完了した後には、以下の手順に従ってフレーバーを作成してインスタンスをデプロイします。

  1. アグリゲートグループを作成して、SR-IOV 用にホストを追加します。

     # openstack aggregate create --zone=sriov sriov
     # openstack aggregate add host sriov compute-sriov-0.localdomain
  2. フレーバーを作成します。

    # openstack flavor create  m1.medium_huge_4cpu --ram 4096 --disk 150 --vcpus 4

    このコマンドでは、m1.medium_huge_4cpu はフレーバー名、4096 は MB 単位のメモリー容量、150 は GB 単位のディスク容量 (デフォルトでは 0 G)、4 は仮想 CPU 数を設定しています。

  3. フレーバーの追加のプロパティーを設定します。

    # openstack  flavor set --property hw:cpu_policy=dedicated --property  hw:mem_page_size=large --property hw:numa_nodes=1 --property hw:numa_mempolicy=preferred --property  hw:numa_cpus.0=0,1,2,3 --property hw:numa_mem.0=4096 m1.medium_huge_4cpu

    このコマンドでは、m1.medium_huge_4cpu はフレーバー名を指定しており、残りはそのフレーバーのその他のプロパティーを設定しています。

  4. インスタンスをデプロイします。

    # openstack server create --flavor m1.medium_huge_4cpu --availability-zone sriov --image rhel_7.3 --nic  port-id=<direct-port-id> sriov_vm

    このコマンドでは、m1.medium_huge_4cpu はフレーバーの名前または ID、sriov はサーバーのアベイラビリティーゾーン、rhel_7.3 はインスタンスの作成に使用するイメージ (名前または ID)、<direct-port-id> はサーバー上の NIC、sriov_vm はインスタンス名を設定します。

これで、NFV ユースケースの SR-IOV 向けインスタンスのデプロイが完了しました。