2.5. マルチパス設定

マルチパスを使用してサーバーノードおよびストレージアレイ間の複数の I/O パスを単一のデバイスに設定することで、冗長性が得られると共にパフォーマンスが向上します。マルチパスは、新規および既存のオーバークラウドデプロイメントに設定することができます。

Graphic depicts the logical input/output data paths of a Red Hat OpenStack Platform deployment configured using cinder multipath I/O

2.5.1. 新規デプロイメントでのマルチパス設定

新規オーバークラウドデプロイメントでマルチパスを設定するには、以下の手順を実施します。

既存のオーバークラウドデプロイメントでマルチパスを設定する方法は、「既存デプロイメントでのマルチパス設定」を参照してください。

前提条件

オーバークラウドのコントローラーノードおよびコンピュートノードは、Red Hat Enterprise Linux Server のリポジトリーにアクセスできる必要があります。詳しくは、Director Installation and UsageDownloading the base cloud image を参照してください。

手順

  1. オーバークラウドを設定します。

    注記

    詳細は、director のインストールと使用方法CLI ツールを使用した基本的なオーバークラウドの設定 を参照してください。

  2. heat テンプレートを更新してマルチパスを有効にします。

    parameter_defaults:
      NovaLibvirtVolumeUseMultipath:  true
      NovaComputeOptVolumes:
        - /etc/multipath.conf:/etc/multipath.conf:ro
        - /etc/multipath/:/etc/multipath/:rw
      CinderVolumeOptVolumes:
        - /etc/multipath.conf:/etc/multipath.conf:ro
        - /etc/multipath/:/etc/multipath/:rw
  3. (オプション) Block Storage (cinder) を Image サービス (glance) のバックエンドとして使用する場合には、以下の手順も完了する必要があります。

    1. 次の GlanceApiOptVolumes 設定をヒートテンプレートに追加します。

      parameter_defaults:
        GlanceApiOptVolumes:
          - /etc/multipath.conf:/etc/multipath.conf:ro
          - /etc/multipath/:/etc/multipath/:rw
    2. 次の方法で ControllerExtraConfig パラメーターを設定します。

      parameter_defaults:
        ControllerExtraConfig:
          glance::config::api_config:
            default_backend/cinder_use_multipath:
              value: true
      注記
      default_backendGlanceBackendID ヒートテンプレートのデフォルト値の両方が一致していることを確認してください。
  4. 設定したすべてのバックエンドについて、use_multipath_for_image_xfertrue に設定します。

    parameter_defaults:
      ExtraConfig:
        cinder::config::cinder_config:
          <backend>/use_multipath_for_image_xfer:
            value: true
  5. オーバークラウドをデプロイします。

    $ openstack overcloud deploy
    注記

    オーバークラウドパラメーターを使用してオーバークラウドを作成する方法は、director のインストールと使用方法CLI ツールを使用した基本的なオーバークラウドの設定 を参照してください。

  6. コンテナーを実行する前に、すべてのコントローラーノードおよびコンピュートノードにマルチパスをインストールします。

    $ sudo dnf install -y device-mapper-multipath
    注記

    director にはフックのセットが用意されており、初回のブートが完了してコア設定が開始する前に、特定ノードロールのカスタム設定を行うことができます。オーバークラウドのカスタム設定についての詳しい情報は、オーバークラウドの高度なカスタマイズ事前設定: 特定のオーバークラウドロールのカスタマイズ を参照してください。

  7. すべてのコントローラーノードおよびコンピュートノードでマルチパスデーモンを設定します。

    $ mpathconf --enable --with_multipathd y --user_friendly_names n --find_multipaths y
    注記

    このコード例により、ほとんどの環境で機能する基本的なマルチパス設定が作成されます。ただし、一部のストレージベンダーはハードウェア固有の最適化した設定を使用しているので、ベンダーに推奨事項を問い合わせてください。マルチパスについての詳細は、Device Mapper Multipath の設定 を参照してください。

  8. すべてのコントローラーノードおよびコンピュートノードで以下のコマンドを実行して、パーティションが作成されないようにします。

    $ sed -i "s/^defaults {/defaults {\n\tskip_kpartx yes\n\trecheck_wwid yes/" /etc/multipath.conf
    注記

    skip_kpartxyes に設定すると、コンピュートノード上の kpartx がデバイス上に自動的にパーティションを作成しなくなり、不要なデバイスマッパーエントリーを避けることができます。設定属性の詳細は、Device Mapper Multipath の設定DM Multipath 設定ファイルの編集 を参照してください。

  9. すべてのコントローラーノードおよびコンピュートノードでマルチパスデーモンを起動します。

    $ systemctl enable --now multipathd

2.5.2. 既存デプロイメントでのマルチパス設定

ワークロードがマルチパス機能を使用できるように、既存のデプロイメントでマルチパスを設定します。

注記

既存のデプロイメントでマルチパスを設定した後に作成する新しいワークロードは、デフォルトでマルチパスに対応しています。既存のワークロードがある場合は、これらのインスタンスでマルチパスを有効にするには、インスタンスを退避して復元する必要があります。

新規オーバークラウドデプロイメントでマルチパスを設定する方法は、「新規デプロイメントでのマルチパス設定」を参照してください。

前提条件

オーバークラウドのコントローラーノードおよびコンピュートノードは、Red Hat Enterprise Linux Server のリポジトリーにアクセスできる必要があります。詳しくは、Director Installation and UsageDownloading the base cloud image を参照してください。

手順

  1. すべてのコントローラーノードおよびコンピュートノードにマルチパスがインストールされていることを確認します。

    $ rpm -qa | grep device-mapper-multipath
    
    device-mapper-multipath-0.4.9-127.el8.x86_64
    device-mapper-multipath-libs-0.4.9-127.el8.x86_64

    マルチパスがインストールされていない場合は、すべてのコントローラーノードおよびコンピュートノードにインストールします。

    $ sudo dnf install -y device-mapper-multipath
  2. すべてのコントローラーノードおよびコンピュートノードでマルチパスデーモンを設定します。

    $ mpathconf --enable --with_multipathd y --user_friendly_names n --find_multipaths y
    注記

    このコード例により、ほとんどの環境で機能する基本的なマルチパス設定が作成されます。ただし、一部のストレージベンダーはハードウェア固有の最適化した設定を使用しているので、ベンダーに推奨事項を問い合わせてください。マルチパスについての詳細は、Device Mapper Multipath の設定 を参照してください。

  3. すべてのコントローラーノードおよびコンピュートノードで以下のコマンドを実行して、パーティションが作成されないようにします。

    $ sed -i "s/^defaults {/defaults {\n\tskip_kpartx yes\n\trecheck_wwid yes/" /etc/multipath.conf
    注記

    skip_kpartxyes に設定すると、コンピュートノード上の kpartx がデバイス上に自動的にパーティションを作成しなくなり、不要なデバイスマッパーエントリーを避けることができます。設定属性の詳細は、Device Mapper Multipath の設定DM Multipath 設定ファイルの編集 を参照してください。

  4. すべてのコントローラーノードおよびコンピュートノードでマルチパスデーモンを起動します。

    $ systemctl enable --now multipathd
  5. heat テンプレートを更新してマルチパスを有効にします。

    parameter_defaults:
      NovaLibvirtVolumeUseMultipath:  true
      NovaComputeOptVolumes:
        - /etc/multipath.conf:/etc/multipath.conf:ro
        - /etc/multipath/:/etc/multipath/:rw
      CinderVolumeOptVolumes:
        - /etc/multipath.conf:/etc/multipath.conf:ro
        - /etc/multipath/:/etc/multipath/:rw
  6. (オプション) Block Storage (cinder) を Image サービス (glance) のバックエンドとして使用する場合には、以下の手順も完了する必要があります。

    1. 次の GlanceApiOptVolumes 設定をヒートテンプレートに追加します。

      parameter_defaults:
        GlanceApiOptVolumes:
          - /etc/multipath.conf:/etc/multipath.conf:ro
          - /etc/multipath/:/etc/multipath/:rw
    2. 次の方法で ControllerExtraConfig パラメーターを設定します。

      parameter_defaults:
        ControllerExtraConfig:
          glance::config::api_config:
            default_backend/cinder_use_multipath:
              value: true
      注記
      default_backendGlanceBackendID ヒートテンプレートのデフォルト値の両方が一致していることを確認してください。
  7. 設定したすべてのバックエンドについて、use_multipath_for_image_xfertrue に設定します。

    parameter_defaults:
      ExtraConfig:
        cinder::config::cinder_config:
          <backend>/use_multipath_for_image_xfer:
            value: true
  8. 以下のコマンドを実行してオーバークラウドを更新します。

    $ openstack overcloud deploy
    注記

    openstack overcloud deploy コマンドを実行してマルチパスをインストールおよび設定する場合、--templates--roles-file-e (すべての環境ファイル用)、および --timeout など、オーバークラウドのデプロイに使用した以前のロールファイルおよび環境ファイルをすべて渡す必要があります。以前のロールファイルおよび環境ファイルをすべて渡さないと、オーバークラウドのデプロイメントで問題が発生する可能性があります。オーバークラウドパラメーターの使用についての詳細は、director のインストールと使用方法CLI ツールを使用した基本的なオーバークラウドの設定 を参照してください。

2.5.3. マルチパス設定の確認

以下の手順で、新規または既存のオーバークラウドデプロイメントのマルチパス設定を確認する方法を説明します。

手順

  1. 仮想マシンを作成します。
  2. 暗号化されていないボリュームを仮想マシンに割り当てます。
  3. インスタンスが含まれるコンピュートノードの名前を取得します。

    $ nova show INSTANCE | grep OS-EXT-SRV-ATTR:host

    INSTANCE をブートした仮想マシンの名前に置き換えます。

  4. インスタンスの virsh 名を取得します。

    $ nova show INSTANCE | grep instance_name

    INSTANCE をブートした仮想マシンの名前に置き換えます。

  5. コンピュートノードの IP アドレスを取得します。

    $ . stackrc
    $ nova list | grep compute_name

    compute_namenova show INSTANCE コマンドの出力に表示される名前に置き換えます。

  6. 仮想マシンを実行するコンピュートノードに SSH 接続します。

    $ ssh heat-admin@COMPUTE_NODE_IP

    COMPUTE_NODE_IP をコンピュートノードの IP アドレスに置き換えます。

  7. virsh を実行するコンテナーにログインします。

    $ podman exec -it nova_libvirt /bin/bash
  8. コンピュートノードインスタンスで以下のコマンドを入力し、cinder ボリュームホストの場所でマルチパスが使用されていることを確認します。

    virsh domblklist VIRSH_INSTANCE_NAME | grep /dev/dm

    VIRSH_INSTANCE_NAMEnova show INSTANCE | grep instance_name コマンドの出力に置き換えます。

    インスタンスに /dev/dm- 以外の値が表示されている場合、接続は非マルチパスであるため、nova shelve および nova unshelve コマンドを使用して接続情報を更新する必要があります。

    $ nova shelve <instance>
    $ nova unshelve <instance>
    注記

    複数の種別のバックエンドがある場合には、すべてのバックエンド上のインスタンスおよびボリュームを検証する必要があります。これは、各バックエンドが返す接続情報が異なる可能性があるためです。