2.5. マルチパス設定
マルチパスを使用してサーバーノードおよびストレージアレイ間の複数の I/O パスを単一のデバイスに設定することで、冗長性が得られると共にパフォーマンスが向上します。マルチパスは、新規および既存のオーバークラウドデプロイメントに設定することができます。
2.5.1. 新規デプロイメントでのマルチパス設定
新規オーバークラウドデプロイメントでマルチパスを設定するには、以下の手順を実施します。
既存のオーバークラウドデプロイメントでマルチパスを設定する方法は、「既存デプロイメントでのマルチパス設定」を参照してください。
前提条件
オーバークラウドのコントローラーノードおよびコンピュートノードは、Red Hat Enterprise Linux Server のリポジトリーにアクセスできる必要があります。詳しくは、Director Installation and Usageの Downloading the base cloud image を参照してください。
手順
オーバークラウドを設定します。
注記詳細は、director のインストールと使用方法 の CLI ツールを使用した基本的なオーバークラウドの設定 を参照してください。
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
(オプション) Block Storage (cinder) を Image サービス (glance) のバックエンドとして使用する場合には、以下の手順も完了する必要があります。
次の
GlanceApiOptVolumes
設定をヒートテンプレートに追加します。parameter_defaults: GlanceApiOptVolumes: - /etc/multipath.conf:/etc/multipath.conf:ro - /etc/multipath/:/etc/multipath/:rw
次の方法で
ControllerExtraConfig
パラメーターを設定します。parameter_defaults: ControllerExtraConfig: glance::config::api_config: default_backend/cinder_use_multipath: value: true
- 注記
-
default_backend
とGlanceBackendID
ヒートテンプレートのデフォルト値の両方が一致していることを確認してください。
設定したすべてのバックエンドについて、
use_multipath_for_image_xfer
をtrue
に設定します。parameter_defaults: ExtraConfig: cinder::config::cinder_config: <backend>/use_multipath_for_image_xfer: value: true
オーバークラウドをデプロイします。
$ openstack overcloud deploy
注記オーバークラウドパラメーターを使用してオーバークラウドを作成する方法は、director のインストールと使用方法の CLI ツールを使用した基本的なオーバークラウドの設定 を参照してください。
コンテナーを実行する前に、すべてのコントローラーノードおよびコンピュートノードにマルチパスをインストールします。
$ sudo dnf install -y device-mapper-multipath
注記director にはフックのセットが用意されており、初回のブートが完了してコア設定が開始する前に、特定ノードロールのカスタム設定を行うことができます。オーバークラウドのカスタム設定についての詳しい情報は、オーバークラウドの高度なカスタマイズの 事前設定: 特定のオーバークラウドロールのカスタマイズ を参照してください。
すべてのコントローラーノードおよびコンピュートノードでマルチパスデーモンを設定します。
$ mpathconf --enable --with_multipathd y --user_friendly_names n --find_multipaths y
注記このコード例により、ほとんどの環境で機能する基本的なマルチパス設定が作成されます。ただし、一部のストレージベンダーはハードウェア固有の最適化した設定を使用しているので、ベンダーに推奨事項を問い合わせてください。マルチパスについての詳細は、Device Mapper Multipath の設定 を参照してください。
すべてのコントローラーノードおよびコンピュートノードで以下のコマンドを実行して、パーティションが作成されないようにします。
$ sed -i "s/^defaults {/defaults {\n\tskip_kpartx yes\n\trecheck_wwid yes/" /etc/multipath.conf
注記skip_kpartx
をyes
に設定すると、コンピュートノード上の kpartx がデバイス上に自動的にパーティションを作成しなくなり、不要なデバイスマッパーエントリーを避けることができます。設定属性の詳細は、Device Mapper Multipath の設定の DM Multipath 設定ファイルの編集 を参照してください。すべてのコントローラーノードおよびコンピュートノードでマルチパスデーモンを起動します。
$ systemctl enable --now multipathd
2.5.2. 既存デプロイメントでのマルチパス設定
ワークロードがマルチパス機能を使用できるように、既存のデプロイメントでマルチパスを設定します。
既存のデプロイメントでマルチパスを設定した後に作成する新しいワークロードは、デフォルトでマルチパスに対応しています。既存のワークロードがある場合は、これらのインスタンスでマルチパスを有効にするには、インスタンスを退避して復元する必要があります。
新規オーバークラウドデプロイメントでマルチパスを設定する方法は、「新規デプロイメントでのマルチパス設定」を参照してください。
前提条件
オーバークラウドのコントローラーノードおよびコンピュートノードは、Red Hat Enterprise Linux Server のリポジトリーにアクセスできる必要があります。詳しくは、Director Installation and Usageの Downloading the base cloud image を参照してください。
手順
すべてのコントローラーノードおよびコンピュートノードにマルチパスがインストールされていることを確認します。
$ 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
すべてのコントローラーノードおよびコンピュートノードでマルチパスデーモンを設定します。
$ mpathconf --enable --with_multipathd y --user_friendly_names n --find_multipaths y
注記このコード例により、ほとんどの環境で機能する基本的なマルチパス設定が作成されます。ただし、一部のストレージベンダーはハードウェア固有の最適化した設定を使用しているので、ベンダーに推奨事項を問い合わせてください。マルチパスについての詳細は、Device Mapper Multipath の設定 を参照してください。
すべてのコントローラーノードおよびコンピュートノードで以下のコマンドを実行して、パーティションが作成されないようにします。
$ sed -i "s/^defaults {/defaults {\n\tskip_kpartx yes\n\trecheck_wwid yes/" /etc/multipath.conf
注記skip_kpartx
をyes
に設定すると、コンピュートノード上の kpartx がデバイス上に自動的にパーティションを作成しなくなり、不要なデバイスマッパーエントリーを避けることができます。設定属性の詳細は、Device Mapper Multipath の設定の DM Multipath 設定ファイルの編集 を参照してください。すべてのコントローラーノードおよびコンピュートノードでマルチパスデーモンを起動します。
$ systemctl enable --now multipathd
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
(オプション) Block Storage (cinder) を Image サービス (glance) のバックエンドとして使用する場合には、以下の手順も完了する必要があります。
次の
GlanceApiOptVolumes
設定をヒートテンプレートに追加します。parameter_defaults: GlanceApiOptVolumes: - /etc/multipath.conf:/etc/multipath.conf:ro - /etc/multipath/:/etc/multipath/:rw
次の方法で
ControllerExtraConfig
パラメーターを設定します。parameter_defaults: ControllerExtraConfig: glance::config::api_config: default_backend/cinder_use_multipath: value: true
- 注記
-
default_backend
とGlanceBackendID
ヒートテンプレートのデフォルト値の両方が一致していることを確認してください。
設定したすべてのバックエンドについて、
use_multipath_for_image_xfer
をtrue
に設定します。parameter_defaults: ExtraConfig: cinder::config::cinder_config: <backend>/use_multipath_for_image_xfer: value: true
以下のコマンドを実行してオーバークラウドを更新します。
$ openstack overcloud deploy
注記openstack overcloud deploy
コマンドを実行してマルチパスをインストールおよび設定する場合、--templates
、--roles-file
、-e
(すべての環境ファイル用)、および--timeout
など、オーバークラウドのデプロイに使用した以前のロールファイルおよび環境ファイルをすべて渡す必要があります。以前のロールファイルおよび環境ファイルをすべて渡さないと、オーバークラウドのデプロイメントで問題が発生する可能性があります。オーバークラウドパラメーターの使用についての詳細は、director のインストールと使用方法の CLI ツールを使用した基本的なオーバークラウドの設定 を参照してください。
2.5.3. マルチパス設定の確認
以下の手順で、新規または既存のオーバークラウドデプロイメントのマルチパス設定を確認する方法を説明します。
手順
- 仮想マシンを作成します。
- 暗号化されていないボリュームを仮想マシンに割り当てます。
インスタンスが含まれるコンピュートノードの名前を取得します。
$ nova show INSTANCE | grep OS-EXT-SRV-ATTR:host
INSTANCE をブートした仮想マシンの名前に置き換えます。
インスタンスの virsh 名を取得します。
$ nova show INSTANCE | grep instance_name
INSTANCE をブートした仮想マシンの名前に置き換えます。
コンピュートノードの IP アドレスを取得します。
$ . stackrc $ nova list | grep compute_name
compute_name を
nova show INSTANCE
コマンドの出力に表示される名前に置き換えます。仮想マシンを実行するコンピュートノードに SSH 接続します。
$ ssh heat-admin@COMPUTE_NODE_IP
COMPUTE_NODE_IP をコンピュートノードの IP アドレスに置き換えます。
virsh を実行するコンテナーにログインします。
$ podman exec -it nova_libvirt /bin/bash
コンピュートノードインスタンスで以下のコマンドを入力し、cinder ボリュームホストの場所でマルチパスが使用されていることを確認します。
virsh domblklist VIRSH_INSTANCE_NAME | grep /dev/dm
VIRSH_INSTANCE_NAME を
nova show INSTANCE | grep instance_name
コマンドの出力に置き換えます。インスタンスに
/dev/dm-
以外の値が表示されている場合、接続は非マルチパスであるため、nova shelve
およびnova unshelve
コマンドを使用して接続情報を更新する必要があります。$ nova shelve <instance> $ nova unshelve <instance>
注記複数の種別のバックエンドがある場合には、すべてのバックエンド上のインスタンスおよびボリュームを検証する必要があります。これは、各バックエンドが返す接続情報が異なる可能性があるためです。