Device Mapper Multipath の設定
Device Mapper Multipath 機能の設定および管理
概要
Red Hat ドキュメントへのフィードバック (英語のみ)
Red Hat ドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。
Jira からのフィードバック送信 (アカウントが必要)
- Jira の Web サイトにログインします。
- 上部のナビゲーションバーで Create をクリックします。
- Summary フィールドにわかりやすいタイトルを入力します。
- Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
- ダイアログの下部にある Create をクリックします。
第1章 デバイスマッパーマルチパスの概要
DM Multipath は以下を提供します。
- 冗長性
- DM Multipath は、アクティブ/パッシブ設定でフェイルオーバーを提供できます。アクティブ/パッシブ設定では、常にパスのサブセットのみが I/O に使用されます。ケーブル、スイッチ、コントローラーなどの I/O パスの要素に障害が発生した場合、DM Multipath は代替パスに切り替わります。
パスの数はセットアップによって異なります。通常、DM Multipath 設定にはストレージへのパスが 2、4、または 8 個ありますが、これは一般的な設定であり、他の数となる可能性もあります。
- パフォーマンスの向上
- DM Multipath は、アクティブ/アクティブモードで設定できます。このモードでは、I/O はラウンドロビン方式でパスに分散されます。一部の設定では、DM Multipath は I/O パスの負荷を検出し、負荷を動的に再調整できます。
1.1. 1 つの RAID デバイスを使用したアクティブ/パッシブのマルチパス設定
この設定では、サーバー上に 2 つのホストバスアダプター (HBA)、2 つの SAN スイッチ、および 2 つの RAID コントローラーがあります。この設定では、次のような障害が発生する可能性があります。
- HBA の障害
- ファイバーチャネルケーブルの障害
- SAN スイッチの障害
- アレイコントローラーポートの障害
DM Multipath が設定されると、上記のポイントのいずれかで障害が発生すると、DM Multipath は別の I/O パスに切り替わります。以下の図は、サーバーから RAID デバイスへの 2 つの I/O パスを使用した設定を説明します。ここでは、hba1
、SAN1
、および cntrlr1
を通る 1 つの I/O パスと、hba2
、SAN2
、および cntrlr2
を通る別の I/O パスがあります。
図1.1 1 つの RAID デバイスを使用したアクティブ/パッシブのマルチパス設定
1.2. 2 つの RAID デバイスを使用したアクティブ/パッシブのマルチパス設定
この設定では、サーバー上に 2 つの HBA、2 つの SAN スイッチ、およびそれぞれ 2 つの RAID コントローラーを備えた 2 つの RAID デバイスがあります。DM Multipath が設定されている場合には、どちらかの RAID デバイスへの I/O パスのどこかのポイントで障害が発生すると、DM Multipath はそのデバイスの別 I/O パスに切り替わります。以下の図は、各 RAID デバイスへの 2 つの I/O パスを使用した設定を説明します。ここでは、各 RAID デバイスへの 2 つの I/O パスがあります。
図1.2 2 つの RAID デバイスを使用したアクティブ/パッシブのマルチパス設定
1.3. 1 つの RAID デバイスを使用したアクティブ/アクティブのマルチパス設定
この設定では、サーバー上に HBA、2 つの SAN スイッチ、および 2 つの RAID コントローラーがあります。以下の図は、サーバーからストレージデバイスへの 2 つの I/O パスを使用した設定について説明します。ここで、I/O は、これら 2 つのパスに分散できます。
図1.3 1 つの RAID デバイスを使用したアクティブ/アクティブのマルチパス設定
1.4. DM Multipath コンポーネント
以下の表は、DM Multipath コンポーネントを示しています。
コンポーネント | 説明 |
| I/O を再ルーティングし、パスとパスグループのフェイルオーバーに対応します。 |
| デバイスマッパーマルチパスを設定して有効にします。 |
|
マルチパスデバイスをリスト表示して設定します。これは、ブロックデバイスが追加されるたびに |
|
マルチパスデバイスを自動的に作成および削除し、パスを監視します。パスが失敗して戻ってくると、マルチパスデバイスが更新される場合があります。マルチパスデバイスへのインタラクティブな変更を許可します。 |
|
デバイス上のパーティションのデバイスマッパーデバイスを作成します。このコマンドは、マルチパスデバイスが作成され、その上にパーティションデバイスが作成されると、 |
|
マルチパスデバイスに |
1.5. multipath コマンド
multipath
コマンドは、デバイスの複数のパスを検出および結合するために使用されます。マルチパス化されたデバイスの管理に使用できるさまざまなオプションを提供します。
次の表に、役立つと思われる multipath
コマンドのいくつかのオプションを示します。
オプション | 説明 |
---|---|
|
|
|
|
| 指定したマルチパスデバイスを削除します。 |
| 不要なマルチパスデバイスをすべて削除します。 |
|
|
|
現在のマルチパスデバイスのみが含まれるように、 |
| マルチパスデバイスを強制的にリロードします。 |
1.6. マルチパストポロジーの表示
パスを効果的に監視したり、マルチパスの問題をトラブルシューティングしたり、マルチパス設定が正しく設定されているかどうかを確認したりするために、マルチパストポロジーを表示できます。
手順
マルチパスデバイストポロジーを表示します。
# multipath -ll mpatha (3600d0230000000000e13954ed5f89300) dm-4 WINSYS,SF2372 size=233G features='1 queue_if_no_path' hwhandler='0' wp=rw `-+- policy='service-time 0' prio=1 status=active `- 6:0:0:0 sdf 8:80 active ready running
出力は 3 つの部分に分けることができます。各部分には、次のグループの情報が表示されます。
マルチパスデバイス情報:
-
mpatha (3600d0230000000000e13954ed5f89300)
: エイリアス (エイリアスと異なる場合は wwid) -
dm-4
: dm デバイス名 -
WINSYS,SF2372
: ベンダー、製品 -
size=233G
: サイズ -
features='1 queue_if_no_path'
: 機能 -
hwhandler='0'
: ハードウェアハンドラー -
wp=rw
: 書き込み権限
-
パスグループ情報:
-
policy='service-time 0'
: スケジュールポリシー -
prio=1
: パスグループの優先度 -
status=active
: パスグループステータス
-
パス情報:
-
6:0:0:0
: ホスト:チャネル:id:lun -
sdf
: devnode -
8:80
: メジャー:マイナー番号 -
active
: dm ステータス -
ready
: パスステータス running
: オンライン状態dm、パス、オンラインのステータスの詳細は、パスステータス を参照してください。
-
マルチパスデバイスのリスト表示、作成、またはリロードに使用される他のマルチパスコマンドでも、デバイストポロジーは表示されます。ただし、一部の情報が不明で、出力に undef
と表示される場合があります。これは通常の動作です。正しい状態を表示するには、multipath -ll
コマンドを使用します。
マルチパスデバイスの作成など、特定の場合には、マルチパストポロジーに、アクションが実行されたかどうかを示すパラメーターが表示されます。たとえば、次のコマンド出力は、マルチパスデバイスが作成されたことを表す create:
パラメーターを示しています。
create: mpatha (3600d0230000000000e13954ed5f89300) undef WINSYS,SF2372
size=233G features='1 queue_if_no_path' hwhandler='0' wp=undef
`-+- policy='service-time 0' prio=1 status=undef
`- 6:0:0:0 sdf 8:80 undef ready running
1.7. パスステータス
パスの状態は、/etc/multipath.conf
ファイルに定義されているポーリング間隔に応じ、multipathd
デーモンによって定期的に更新されます。カーネルの観点から見ると、dm
ステータスはパスステータスと似ています。dm
ステータスは、パスチェッカーが完了するまで現在のステータスを保持します。
- パスステータス
- ready、ghost
- パスが有効であり、I/O の準備ができています。
- faulty、shaky
- パスが無効です。
- i/o pending
- チェッカーがアクティブにこのパスを確認し、ステータスはまもなく更新されます。
- i/o timeout
-
チェッカーがタイムアウト期間経過前に
success
/failure
を返しませんでした。これはfaulty
と同じように処理されます。 - removed
-
システムからパスが削除され、マルチパスデバイスからまもなく削除されます。これは
faulty
と同じように処理されます。 - wild
-
内部エラーまたは設定の問題によって、
multipathd
がパスチェッカーを実行できませんでした。これは、マルチパスがパス上の多くのアクションをスキップすることを除いて、failed
と同じように処理されます。 - unchecked
-
パスが今検出された、割り当てられたパスチェッカーがない、パスチェッカーにエラーが発生したなどの理由で、このパスでパスチェッカーが実行していません。これは
wild
と同じように処理されます。 - delayed
-
パスチェッカーはパスが有効であると返しますが、マルチパスがパスの回復を遅らせています。このパスで最近、複数回障害が発生しており、パスを遅延するようにマルチパスが設定されているためです。これは
faulty
と同じように処理されます。
- dm ステータス
- Active
-
ready
およびghost
のパスステータスにマップされます。 - Failed
-
同等の
dm
状態を持たないi/o pending
を除く、他のすべてのパスステータスにマップされます。
- オンラインステータス
- Running
- デバイスが有効です。
- オフライン
- デバイスが無効です。
1.8. 関連情報
-
man ページの
multipath(8)
およびmultipathd(8)
-
/etc/multipath.conf
ファイル
第2章 マルチパスデバイス
DM Multipath は、基礎となるデバイスの上に 1 つのマルチパスデバイスを作成することにより、I/O パスを論理的に整理する方法を提供します。DM Multipath を使用しない場合は、I/O パスが同じサーバーノードを同じストレージコントローラーに接続している場合でも、システムはサーバーノードからストレージコントローラーへの各パスを個別のデバイスとして扱います。
2.1. マルチパスデバイス識別子
新しいデバイスが DM Multipath の制御下にある場合に、これらのデバイスは /dev/mapper/
ディレクトリーおよび /dev/
ディレクトリーに作成されます。
/dev/dm-X
という形式のデバイスは内部使用専用であるため、管理者が直接使用するものではありません。
以下は、マルチパスデバイス名について説明しています。
-
user_friendly_names
設定オプションがno
に設定されている場合は、マルチパスデバイスの名前が World Wide Identifier (WWID) に設定されます。デフォルトでは、マルチパスデバイスの名前はその WWID に設定されます。デバイス名は/dev/mapper/WWID
になります。また、/dev/dm-X
という名前の/dev/
ディレクトリーにも作成されます。 -
または、
/etc/multipath.conf
ファイルで、user_friendly_names
オプションをyes
に設定できます。これにより、multipath
セクションのalias
が、mpathN
形式のノード固有の名前に設定されます。デバイス名は、/dev/mapper/mpathN
および/dev/dm-X
になります。ただし、マルチパスデバイスを使用するすべてのノードでデバイス名が同じであるとは限りません。同様に、/etc/multipath.conf
ファイルでalias
オプションを設定した場合は、クラスター内のすべてのノードで自動的に名前が一致しません。
LVM を使用してマルチパスデバイスから論理デバイスを作成する場合は、これにより問題が発生することはありません。すべてのノードでマルチパスデバイス名の一貫性を保つために、Red Hat は、user_friendly_names
オプションを無効にすることを推奨します。
たとえば、ゾーンに分けられていない 1 つの FC スイッチにより、2 つのポートを持つストレージコントローラーに接続された 2 つの HBA を持つノードは、/dev/sda
、/dev/sdb
、/dev/sdc
、および /dev/sdd
の 4 つのデバイスを認識します。DM Multipath は、マルチパス設定に従って、I/O を基本となるこれらの 4 つのデバイスにルーティングしなおす一意の WWID を持つシングルデバイスを作成します。
user_friendly_names
オプションおよび alias
オプションの他に、マルチパスデバイスには他の属性もあります。/etc/multipath.conf
ファイルの multipaths
セクションに、デバイスのエントリーを作成することにより、特定のマルチパスデバイスのこれらの属性を変更できます。
関連情報
-
man ページの
multipath(8)
およびmultipath.conf(8)
-
/etc/multipath.conf
ファイル - DM Multipath コンポーネント
2.2. 論理ボリューム内のマルチパスデバイス
マルチパスデバイスを作成したら、論理ボリュームマネージャー (LVM) 物理ボリュームを作成する際に物理デバイス名を使用するのと同様に、マルチパスデバイス名を使用できます。たとえば、/dev/mapper/mpatha
がマルチパスデバイスの名前である場合、pvcreate /dev/mapper/mpatha
コマンドは、/dev/mapper/mpatha
を物理ボリュームとしてマークします。
他の LVM 物理デバイスを使用するのと同じように、LVM ボリュームグループを作成するときに、作成された LVM 物理デバイスを使用できます。
/etc/lvm/lvm.conf
ファイル内のすべての sd
デバイスをフィルタリングするには、そのファイルの devices
セクションに filter = [ "r/block/", "r/disk/", "r/sd./", "a/./" ]
を追加します。
パーティションを設定したデバイス全体に LVM 物理ボリュームを作成しようとすると、pvcreate
コマンドは失敗します。Anaconda および Kickstart のインストールプログラムは、すべてのブロックデバイスに特に指定しない限り、空のパーティションテーブルを作成します。パーティションを作成する代わりにデバイス全体を使用する場合は、デバイスから既存のパーティションを削除します。kpartx -d
デバイスコマンドと fdisk
ユーティリティーを使用して、既存のパーティションを削除できます。システムに 2Tb を超えるブロックデバイスがある場合は、parted
ユーティリティーを使用してパーティションを削除します。
active/passive
マルチパスアレイを基礎となる物理デバイスとして使用する LVM 論理ボリュームを作成する場合は、必要に応じて、/etc/lvm/lvm.conf
ファイルにフィルターを追加して、マルチパスデバイスの基礎となるディスクを除外できます。これは、I/O の受信時にアレイがアクティブパスをパッシブパスに自動的に変更する場合に、このようなデバイスにフィルターが設定されていないと、LVM がパッシブパスをスキャンするたびにマルチパスがフェイルオーバーおよびフェイルバックするためです。
カーネルは、使用する正しいハードウェアハンドラーを自動的に検出してアクティブ/パッシブ状態を変更します。状態を変更するために介入を必要とするアクティブ/パッシブパスの場合、マルチパスは自動的にこのハードウェアハンドラーを使用して、必要に応じて介入します。カーネルが使用する正しいハードウェアハンドラーを自動的に検出しない場合は、multipath.conf ファイルで "hardware_handler" オプションを使用して、使用するハードウェアハンドラーを設定できます。パッシブパスをアクティブにするコマンドを必要とする アクティブ/パッシブ
アレイでこの問題が発生すると、LVM が警告メッセージを出力します。
設定によっては、LVM が以下のいずれかのメッセージを出力することがあります。
LUN の準備ができていません:
end_request: I/O error, dev sdc, sector 0 sd 0:0:0:3: Device not ready: <6>: Current: sense key: Not Ready Add. Sense: Logical unit not ready, manual intervention required
読み取りに失敗しました:
/dev/sde: read failed after 0 of 4096 at 0: Input/output error
以下は、上記のエラーの理由です。
- マルチパスは、マシンにアクティブ/パッシブパスを提供するストレージデバイスでは設定されません。
- パスはマルチパスデバイスではなく、直接アクセスします。
関連情報
-
lvm.conf
の man ページ - DM Multipath コンポーネント
第3章 DM Multipath の設定
mpathconf
ユーティリティーを使用して DM Multipath を設定できます。このユーティリティーは、次のシナリオに基づいて /etc/multipath.conf
マルチパス設定ファイルを作成または編集します。
-
/etc/multipath.conf
ファイルがすでに存在する場合は、mpathconf
ユーティリティーでファイルを編集します。 -
/etc/multipath.conf
ファイルが存在しない場合は、mpathconf
ユーティリティーにより/etc/multipath.conf
ファイルが新たに作成されます。
3.1. device-mapper-multipath パッケージの確認
システムに DM-Multipath をセットアップする前に、システムが最新であり、device-mapper-multipath
パッケージがインストールされていることを確認してください。
手順
システムに
device-mapper-multipath
パッケージが含まれているか確認します。# rpm -q device-mapper-multipath device-mapper-multipath-current-package-version
システムにパッケージが含まれていない場合は、次のように出力されます。
package device-mapper-multipath is not installed
システムにパッケージが含まれていない場合は、次のコマンドを実行してパッケージをインストールします。
# yum install device-mapper-multipath
3.2. DM Multipath を使用した基本的なフェイルオーバー設定のセットアップ
基本的なフェイルオーバー設定用の DM Multipath をセットアップし、multipathd デーモンを起動する前に /etc/multipath.conf
ファイルを編集できます。
前提条件
- 管理アクセスがある。
手順
マルチパス設定ファイルを有効にして初期化します。
# mpathconf --enable
オプション:
/etc/multipath.conf
ファイルを編集します。ほとんどのデフォルト設定はすでに設定されています。たとえば、
path_grouping_policy
はfailover
に設定されています。オプション: マルチパスデバイスのデフォルトの命名形式は、
/dev/mapper/mpathn
形式に設定されます。別の命名形式を使用する場合は、次のようにします。ユーザーフレンドリーな命名スキーム (mpath_n_) の代わりに、マルチパスデバイスの WWID を名前として使用するように DM Multipath を設定します。
# mpathconf --enable --user_friendly_names n
DM Multipath デーモンの設定をリロードします。
# systemctl reload multipathd.service
DM Multipath デーモンを起動します。
# systemctl start multipathd.service
検証
DM Multipath デーモンが問題なく実行されていることを確認します。
# systemctl status multipathd.service
マルチパスデバイスの命名形式を確認します。
# ls /dev/mapper/
3.3. マルチパスデバイスの作成時にローカルのディスクを無視
一部のマシンには内部ディスク用のローカル SCSI カードがあり、DM Multipath をこのようなデバイスで使用することは推奨されません。find_multipaths
設定パラメーターを yes
に設定すれば、このようなデバイスでマルチパスを無効にする必要はありません。
find_multipaths
設定パラメーターを yes
に設定しない場合は、以下の手順に従って DM Multipath 設定ファイルを変更すると、マルチパスの設定時にローカルのディスクを無視できます。
手順
デバイスのモデル、パス、ベンダーなどの既知のパラメーターを使用して内部ディスクを識別し、次のオプションのいずれかを使用してその WWID を決定します。
既存のマルチパスデバイスを表示します。
# multipath -v2 -l mpatha (WDC_WD800JD-75MSA3_WD-WMAM9FU71040) dm-2 ATA,WDC WD800JD-75MS size=33 GB features="0" hwhandler="0" wp=rw `-+- policy='round-robin 0' prio=0 status=active |- 0:0:0:0 sda 8:0 active undef running
DM Multipath が作成できるマルチパスデバイスをさらに表示します。
# multipath -v2 -d : mpatha (WDC_WD800JD-75MSA3_WD-WMAM9FU71040) dm-2 ATA,WDC WD800JD-75MS size=33 GB features="0" hwhandler="0" wp=undef `-+- policy='round-robin 0' prio=1 status=undef |- 0:0:0:0 sda 8:0 undef ready running
デバイス情報を表示します。
# multipathd show paths raw format "%d %w" | grep sda sda WDC_WD800JD-75MSA3_WD-WMAM9FU71040
この例では、
/dev/sda
は内部ディスクで、その WWID はWDC_WD800JD-75MSA3_WD-WMAM9FU71040
です。
/etc/multipath.conf
ファイルのblacklist
セクションを編集し、WWID 属性を使用してこのデバイスを無視します。blacklist { wwid WDC_WD800JD-75MSA3_WD-WMAM9FU71040 }
警告sda
などのdevnode
パラメーターを使用してデバイスを識別することはできますが、/dev/sda
が再起動時に同じデバイスを参照することが保証されていないため、この手順は安全ではありません。/etc/multipath.conf
ファイルに設定エラーがないか確認します。# multipath -t > /dev/null
完全なレポートを表示するには、コマンド出力を破棄しないでください。
# multipath -t
-
ディスクが
initramfs
に含まれている場合は、initramfs を再作成します。詳細は、initramfs でのマルチパスの設定 を参照してください。 multipathd
デーモンを再設定して、/etc/multipath.conf
ファイルをリロードします。# systemctl reload multipathd
ローカルディスク上のマルチパスデバイスは、使用中に削除することができません。このようなデバイスを無視するには、デバイスのすべてのユーザーを停止します。たとえば、デバイス上のファイルシステムをアンマウントし、それを使用している論理ボリュームを非アクティブ化します。これが不可能な場合は、システムを再起動してマルチパスデバイスを削除できます。
検証
内部ディスクが無視され、マルチパス出力に表示されないことを確認します。
マルチパスデバイスをリスト表示します。
# multipath -v2 -l
DM Multipath が作成できる追加デバイスをリスト表示します。
# multipath -v2 -d
関連情報
-
multipath.conf(5)
man ページ
3.4. DM Multipath での追加のストレージの設定
デフォルトでは、DM Multipath には、DM Multipath をサポートする最も一般的なストレージアレイの組み込み設定が含まれています。ストレージアレイに設定がない場合は、/etc/multipath.conf
ファイルを編集して追加できます。
- 注記
- 初期設定中にストレージデバイスを追加して、予想されるニーズに合わせてセットアップを調整します。DM Multipath では、スケーラビリティーまたはアップグレードのために後でデバイスを追加できますが、この方法では互換性を確保するために設定の調整が必要になる場合があります。
前提条件
- 管理アクセスがある。
手順
デフォルトの設定値とサポートされているデバイスを表示します。
# multipathd show config
/etc/multipath.conf
ファイルを編集して、マルチパスを設定します。例3.1 HP OPEN-V ストレージデバイス用の DM Multipath 設定
# Set default configurations for all devices managed by DM Multipath defaults { # Enable user-friendly names for devices user_friendly_names yes } devices { # Define configuration for HP OPEN-V storage device { vendor "HP" pproduct "OPEN-V" no_path_retry 18 } }
- 変更を保存してエディターを閉じます。
新しいデバイスをスキャンして、マルチパスデバイスの一覧を更新します。
# multipath -r
検証
マルチパスデバイスが正しく認識されていることを確認します。
# multipath -ll
3.5. initramfs でのマルチパスの設定
initramfs
ファイルシステムでのマルチパスの設定は、特に冗長性と負荷分散が必要なシナリオにおいて、シームレスなストレージ機能を実現するのに不可欠です。この設定により、ブートプロセスの早い段階でマルチパスデバイスが利用可能になります。これは、ストレージ設定の整合性を維持し、潜在的な問題を防ぐうえで非常に重要です。
前提条件
- 管理アクセスがある。
- システムに DM Multipath が設定されている。
手順
マルチパス設定ファイルを使用して
initramfs
ファイルシステムを再構築します。# dracut --force --add multipath
- 注記
-
initramfs
でマルチパスを使用し、その設定ファイルを変更する場合は、変更を反映するために必ずinitramfs
を再構築してください。ルートデバイスがマルチパスを使用している場合、dracut
コマンドは自動的にマルチパスモジュールをinitramfs
に組み込みます。
オプション:
initramfs
のマルチパスが必要なくなった場合は、以下を実行します。マルチパス設定ファイルを削除します。
# rm /etc/dracut.conf.d/multipath.conf
追加したマルチパス設定を使用して
initramfs
を再構築します。# dracut --force --omit multipath
検証
マルチパス関連のファイルと設定が存在するかどうかを確認します。
# lsinitrd /path/to/initramfs.img -m | grep multipath
- 注記
- 上記の検証手順により設定の成功を確認できますが、設定が期待どおりに機能することを確認するために、最終的なテスト起動を行うことを推奨します。
再起動したら、マルチパスデバイスが正しく認識されていることを確認します。
# multipath -ll
第4章 NVMe デバイスでのマルチパスの有効化
ファイバーチャネル (FC) などのファブリックトランスポートを介して、システムに接続されている Non-volatile Memory Express™ (NVMe™) デバイスをマルチパスすることができます。複数のマルチパスソリューションを選択することができます。
4.1. ネイティブ NVMe マルチパスと DM Multipath
Non-volatile Memory Express™ (NVMe™) デバイスは、ネイティブなマルチパス機能をサポートしています。NVMe にマルチパスを設定する場合、標準の DM Multipath フレームワークと NVMe のネイティブなマルチパスのどちらかを選択できます。
DM Multipath と NVMe のネイティブマルチパスは、どちらも NVMe デバイスのマルチパス方式である ANA(Asymmetric Namespace Access) に対応しています。ANA は、コントローラーとホスト間の最適化されたパスを特定し、パフォーマンスを向上させます。
ネイティブ NVMe マルチパスを有効にすると、すべての NVMe デバイスにグローバルに適用されます。より高いパフォーマンスを提供できますが、DM Multipath が提供するすべての機能は含まれていません。例えば、ネイティブの NVMe マルチパスは、numa
と round-robin
のパス選択方法のみをサポートしています。
Red Hat は、Red Hat Enterprise Linux 8 の DM Multipath をデフォルトのマルチパスソリューションとして使用することを推奨します。
4.2. ネイティブ NVMe マルチパスの実現
nvme_core.multipath
オプションのデフォルトのカーネル設定は N
に設定されています。これは、ネイティブ Non-volatile Memory Express™ (NVMe™) マルチパスが無効であることを意味します。ネイティブ NVMe マルチパスソリューションを使用して、ネイティブ NVMe マルチパスを有効にすることができます。
前提条件
- NVMe デバイスがシステムに接続されていることを確認します。詳細は、NVMe over fabric デバイスの概要 を参照してください。
手順
カーネルでネイティブ NVMe マルチパスが有効になっているかどうかを確認します。
# cat /sys/module/nvme_core/parameters/multipath
コマンドは以下のいずれかを表示します。
N
- ネイティブ NVMe マルチパスは無効です。
Y
- ネイティブ NVMe マルチパスは有効です。
ネイティブ NVMe マルチパスが無効になっている場合は、次のいずれかの方法を使用して有効にします。
カーネルオプションの使用
nvme_core.multipath=Y
オプションをコマンドラインに追加します。# grubby --update-kernel=ALL --args="nvme_core.multipath=Y"
64 ビットの IBM Z アーキテクチャーでは、ブートメニューを更新します。
# zipl
- システムを再起動します。
カーネルモジュール設定ファイルの使用
以下の内容で
/etc/modprobe.d/nvme_core.conf
設定ファイルを作成します。options nvme_core multipath=Y
initramfs
ファイルをバックアップします。# cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).bak.$(date +%m-%d-%H%M%S).img
initramfs
を再構築します。# dracut --force --verbose
- システムを再起動します。
オプション: 実行中のシステムで、NVMe デバイスの I/O ポリシーを変更して、利用可能なすべてのパスに I/O を分散させます。
# echo "round-robin" > /sys/class/nvme-subsystem/nvme-subsys0/iopolicy
オプション:
udev
ルールを使用して I/O ポリシーを永続的に設定します。以下の内容で/etc/udev/rules.d/71-nvme-io-policy.rules
ファイルを作成します。ACTION=="add|change", SUBSYSTEM=="nvme-subsystem", ATTR{iopolicy}="round-robin"
検証
システムが NVMe デバイスを認識しているかどうかを確認します。次の例は、2 つの NVMe 名前空間を持つ NVMe over fabrics ストレージサブシステムが接続されていることを想定しています:
# nvme list Node SN Model Namespace Usage Format FW Rev ---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- -------- /dev/nvme0n1 a34c4f3a0d6f5cec Linux 1 250.06 GB / 250.06 GB 512 B + 0 B 4.18.0-2 /dev/nvme0n2 a34c4f3a0d6f5cec Linux 2 250.06 GB / 250.06 GB 512 B + 0 B 4.18.0-2
接続されているすべての NVMe サブシステムをリストアップします。
# nvme list-subsys nvme-subsys0 - NQN=testnqn \ +- nvme0 fc traddr=nn-0x20000090fadd597a:pn-0x10000090fadd597a host_traddr=nn-0x20000090fac7e1dd:pn-0x10000090fac7e1dd live +- nvme1 fc traddr=nn-0x20000090fadd5979:pn-0x10000090fadd5979 host_traddr=nn-0x20000090fac7e1dd:pn-0x10000090fac7e1dd live +- nvme2 fc traddr=nn-0x20000090fadd5979:pn-0x10000090fadd5979 host_traddr=nn-0x20000090fac7e1de:pn-0x10000090fac7e1de live +- nvme3 fc traddr=nn-0x20000090fadd597a:pn-0x10000090fadd597a host_traddr=nn-0x20000090fac7e1de:pn-0x10000090fac7e1de live
アクティブトランスポートタイプを確認します。例えば、
nvme0 fc
はファイバーチャネルトランスポートで接続されていることを示し、nvme tcp
は TCP で接続されていることを示しています。カーネルオプションを編集した場合は、カーネルコマンドラインでネイティブ NVMe マルチパスが有効になっているかどうかを確認します。
# cat /proc/cmdline BOOT_IMAGE=[...] nvme_core.multipath=Y
I/O ポリシーを変更した場合は、NVMe デバイス上で
round-robin
がアクティブな I/O ポリシーであるかどうかを確認します。# cat /sys/class/nvme-subsystem/nvme-subsys0/iopolicy round-robin
関連情報
4.3. NVMe デバイスでの DM Multipath の有効化
ネイティブ NVMe マルチパスを無効にすることで、接続された NVMe デバイスで DM マルチパスを有効にできます。
前提条件
- NVMe デバイスがシステムに接続されていることを確認します。詳細は、NVMe over fabric デバイスの概要 を参照してください。
手順
ネイティブ NVMe マルチパスが無効になっているかどうかを確認します。
# cat /sys/module/nvme_core/parameters/multipath
コマンドは以下のいずれかを表示します。
N
- ネイティブ NVMe マルチパスは無効です。
Y
- ネイティブ NVMe マルチパスは有効です。
ネイティブ NVMe マルチパスが有効になっている場合は、次のいずれかの方法を使用して無効にします。
カーネルオプションの使用
カーネルのコマンドラインから
nvme_core.multipath=Y
オプションを削除しました。# grubby --update-kernel=ALL --remove-args="nvme_core.multipath=Y"
64 ビットの IBM Z アーキテクチャーでは、ブートメニューを更新します。
# zipl
- システムを再起動します。
カーネルモジュール設定ファイルの使用
-
/etc/modprobe.d/nvme_core.conf
ファイルにnvme_core multipath=Y
オプションの行が存在する場合は、それを削除します。 initramfs
ファイルをバックアップします。# cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).bak.$(date +%m%d-%H%M%S).img
initramfs
を再構築します。# cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).bak.$(date +%m-%d-%H%M%S).img # dracut --force --verbose
- システムを再起動します。
-
DM マルチパスを有効にします。
# systemctl enable --now multipathd.service
利用可能なすべてのパスに I/O を分配します。
/etc/multipath.conf
ファイルに以下の内容を追加します。devices { device { vendor "NVME" product ".*" path_grouping_policy group_by_prio } }
注記DM Multipath が NVMe デバイスを管理する場合、
/sys/class/nvme-subsystem/nvme-subsys0/iopolicy
設定ファイルは I/O ディストリビューションには影響を与えません。設定の変更を適用するために、
multipathd
サービスをリロードします。# multipath -r
検証
ネイティブ NVMe マルチパスが無効になっているかどうかを確認します。
# cat /sys/module/nvme_core/parameters/multipath N
DM マルチパスが NVMe デバイスを認識しているかどうかを確認します。
# multipath -l eui.00007a8962ab241100a0980000d851c8 dm-6 NVME,NetApp E-Series size=20G features='0' hwhandler='0' wp=rw `-+- policy='service-time 0' prio=0 status=active |- 0:10:2:2 nvme0n2 259:3 active undef running `-+- policy='service-time 0' prio=0 status=enabled |- 4:11:2:2 nvme4n2 259:28 active undef running `-+- policy='service-time 0' prio=0 status=enabled |- 5:32778:2:2 nvme5n2 259:38 active undef running `-+- policy='service-time 0' prio=0 status=enabled |- 6:32779:2:2 nvme6n2 259:44 active undef running
第5章 DM Multipath 設定ファイルの編集
DM Multipath では、マルチパスで最も一般的に使用する設定値がデフォルトで提供されています。また、DM Multipath に対応する最も一般的なストレージアレイへのサポートも DM Multipath に含まれています。DM-Multipath のデフォルトの設定値は、/etc/multipath.conf
設定ファイルを編集するとオーバーライドできます。必要に応じて、サポートされていないデフォルトのストレージアレイを設定ファイルに追加することもできます。
対応しているデバイスなどのデフォルトの設定値は、以下のいずれかのコマンドを実行して確認してください。
# multipathd show config # multipath -t
initramfs
ファイルシステムからマルチパスを実行してマルチパス設定ファイルに変更を加える場合、変更を有効にするには initramfs
ファイルシステムを再構築する必要があります。
マルチパス設定ファイルでは、設定に必要なセクション、またはデフォルト値から変更する必要があるセクションのみを指定する必要があります。使用環境には無関係なファイルのセクションや、デフォルト値を無効にする必要がないファイルのセクションでは、初期ファイルに指定されているコメントアウトを削除する必要はありません。
設定ファイルでは、正規表現の記述構文を使用できます。
5.1. 設定ファイルの概要
マルチパス設定ファイルは以下のセクションに分かれています。
- blacklist
- マルチパス設定の対象として考慮しないデバイスのリスト。
- blacklist_exceptions
-
指定されていなければ、
blacklist
セクションのパラメーターに従って無視されるマルチパスのデバイスのリスト。 - defaults
- DM Multipath のデフォルトの全般設定。
- multipaths
-
マルチパスデバイスの特性に関する個別設定。ここで指定する値は、設定ファイルの
overrides
、devices
、およびdefaults
のセクションで指定されている値より優先されます。 - devices
-
ストレージコントローラーの個別設定。ここで指定する値は、設定ファイル内の
defaults
セクションで指定されている値より優先されます。デフォルトでは対応していないストレージアレイを使用している場合は、そのアレイ用のdevices
サブセクションを作成する必要があります。 - overrides
-
すべてのデバイスに適用される設定。ここで指定する値は、設定ファイルの
devices
セクションおよびdefaults
セクションで指定されている値より優先されます。
システムがマルチパスデバイスの属性を決定するとき、次の順序で multipath.conf
ファイルから個別のセクションの設定をチェックします。
-
multipaths
セクション -
overrides
セクション -
devices
セクション -
defaults
セクション
5.2. 設定ファイルの defaults セクション
/etc/multipath.conf
設定ファイルには、デフォルト
セクションが含まれています。このセクションには、デバイスマッパー (DM) マルチパスのデフォルト設定が含まれています。デフォルト値は、デバイスの初期設定により異なる場合があります。
デフォルト設定を表示する方法は次のとおりです。
マシンをマルチパスデバイスにインストールすると、デフォルトのマルチパス設定が自動的に適用されます。デフォルトの設定には、以下が含まれます。
-
デフォルト設定値の完全なリストを表示するには、
multipath -t
またはmultipathd show config
コマンドを実行します。 -
設定オプションのリストと説明については、
multipath.conf
の man ページを参照してください。
-
デフォルト設定値の完全なリストを表示するには、
-
インストール中にマルチパスをセットアップしなかった場合は、
mpathconf --enable
コマンドを実行してデフォルト設定を取得します。
次の表では、multipath.conf
設定ファイルの defaults
セクションで設定される属性について説明します。multipaths
セクションで指定された属性は、devices
セクションの値よりも優先されます。devices
セクションで指定された属性は、デフォルト値よりも優先されます。overrides
セクションを使用して、すべてのデバイスタイプの属性値を設定します。デバイスタイプの devices
セクションにビルトインの設定エントリーがある場合も例外ではありません。overrides
セクションに必須の属性はありません。ただし、このセクションで設定された属性は、devices
または defaults
セクションの値よりも優先されます。
属性 | 説明 |
---|---|
|
パスチェックが行われる間隔を秒数で指定します。適正に機能するパスでは、チェックの間隔は |
| 2 つのパスチェック間の最大間隔を秒単位で指定します。 |
デフォルト値は | |
| マルチパスデバイスのセットアップモードを定義します。利用可能な値は次のとおりです。 |
| |
| |
| |
| |
| |
デフォルト値は | |
|
|
正の値: 正の値を設定すると、ブラックリストに登録されていないすべてのデバイスにタイムアウトが適用されます。 | |
負の値: 負の値を設定すると、マルチパスハードウェアテーブル (ビルトインテーブルまたは | |
| |
既知のハードウェアのデフォルト値は | |
|
|
多数のデバイスがあるシステムでは、 | |
デフォルト値は | |
|
デバイスマッパーマップの再割り当てを有効にします。このオプションを使用すると、 |
|
詳細度のデフォルト値は |
| 次回の I/O 動作に使用するパスを決定する、デフォルトのアルゴリズムを指定します。使用できる値を以下に示します。 |
| |
| |
| |
デフォルト値は | |
| 未指定のマルチパスに適用する、デフォルトのパスグルーピングポリシーを指定します。使用できる値を以下に示します。 |
| |
| |
| |
| |
| |
デフォルト値は | |
|
WWID による |
このオプションの値は、 | |
このオプションを設定し、それがデバイスのデバイスノード名と一致する場合、このデバイスの WWID を決定するために設定された他の方法が上書きされます。 | |
この値を | |
デフォルトは | |
|
パスの優先値を得るために呼び出すデフォルトの関数を指定します。例えば、SPC-3 の ALUA ビットは悪用可能な |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
デフォルト値は、 | |
|
関数 |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
デフォルト値は | |
| マルチパスデバイスの追加デフォルト機能です。形式は "number_of_features_plus_arguments feature1 …" となります。 |
| |
| |
| |
| |
| |
デフォルトでは、この値は 設定 されません。デフォルトは、カーネルパラメーター | |
| パスの状態を判断するためのデフォルトのメソッドを指定します。使用できる値を以下に示します。 |
| |
| |
| |
| |
| |
| |
| |
| |
デフォルト値は | |
|
この属性は、 |
デフォルト値は | |
| パスグループのフェイルバックを管理します。使用できる値を以下に示します。 |
| |
| |
| |
0 より大きい数値で、フェイルバックの遅延を秒単位で指定します。 | |
デフォルト値は | |
|
現在のパスグループで、次のパスに切り替えるまでにルーティングする I/O 要求数を指定します。この設定は、2.6.31 より前のカーネルを実行しているシステムにのみ適用されます。2.6.31 以降のシステムには、 |
|
現在のパスグループで、次のパスに切り替えるまでにルーティングする I/O 要求数を指定します。request-base の device-mapper-multipath を使用します。この設定は、現在のカーネルを実行しているシステムで使用できます。2.6.31 より前のバージョンのカーネルを実行しているシステムの場合は |
| この属性の数値は、キューイングを無効にする前に、パスチェッカーがマルチパスデバイス内のすべてのパスに対して何回失敗するとキューイングが無効になるかを指定します。 |
| |
| |
デフォルト値は | |
| 使用できる値を以下に示します。 |
| |
| |
デフォルト値は | |
|
|
|
|
|
マルチパスおよび |
|
明示的なタイムアウトで、SCSI コマンドを発行するパス checker および prioritizer に使用するタイムアウト (秒) です。 |
|
FC リモートポートで問題が検出されてから、そのリモートポート上のデバイスへの I/O が失敗するまでに SCSI レイヤーが待機する秒数。この値は |
| FC リモートポートで問題が検出された後、それをシステムから削除するまで SCSI レイヤーが待機する秒数。無限に設定する場合は、2147483647 秒または 68 年に設定します。OS がデフォルト値を決定します。 |
|
SCSI デバイスに障害が発生した場合に、SCSI レイヤーがエラー処理の実行に費やす最大秒数を指定します。このタイムアウトの後、SCSI レイヤーは HBA のフルリセットを実行します。 |
デフォルト値は | |
|
これが |
| |
デフォルト値は | |
|
デバイスの WWID に使用する |
デフォルト値はデバイスに依存し、SCSI デバイスの場合は | |
|
|
デフォルト値は | |
|
|
デフォルト値は | |
|
|
| |
|
この属性は、 |
デフォルト値は | |
|
|
|
これら 3 つの属性すべてを 0 より大きい整数に設定すると、 |
詳細については、 | |
デフォルト値は | |
|
|
| |
詳細については、 | |
デフォルト値は | |
| 使用できる値を以下に示します。 |
| |
| |
| |
| |
詳細については、 | |
デフォルト値は | |
|
|
|
|
|
このオプションを使用すると、マルチパスデバイスを最初にアクティブ化する前に、マルチパスデバイスの基になるすべてのパスで |
|
この属性は、ゴーストパスのみでデバイスを作成した後、 |
これを | |
デフォルト値は | |
| この属性は、外部ライブラリーを有効または無効にします。 |
値は正規表現です。名前が式と一致する場合、外部ライブラリーがロードされます。 | |
デフォルトでは、すべてのライブラリーが有効になっています。ただし、デフォルトの設定ファイルでは、この属性も | |
|
|
このオプションは、WWID を取得するためにデフォルトの | |
デフォルト値は | |
|
このオプションは、マルチパスが使用中のデバイスの削除を再試行する回数を設定します。各試行の間に、マルチパスは 1 秒間非アクティブになります。デフォルトの値は |
|
|
デフォルト値は | |
|
|
このパラメーターは | |
|
|
関連情報
-
multipath.conf(5)
man ページ
5.3. 設定ファイルの multipaths セクション
multipath.conf
設定ファイルの multipaths
セクションを使用して、個々のマルチパスデバイスの属性を設定します。デバイスマッパー (DM) マルチパスは、これらの属性を使用して、overrides
セクションの設定を含む、他のすべての設定オプションをオーバーライドします。overrides
セクションの属性リストについては、設定ファイルの overrides セクション 参照してください。
multipaths
セクションでは、multipath
サブセクションのみが属性として認識されます。次の表は、特定のマルチパスデバイスごとに、multipath
サブセクションで設定できる属性を示しています。これらの属性は、指定された 1 つのマルチパスにのみ適用されます。複数の multipath
サブセクションが特定のデバイスの World Wide Identifier (WWID) と一致する場合、それらのサブセクションの内容がマージされます。最新エントリーの設定は、以前のバージョンよりも優先されます。
属性 | 説明 |
---|---|
|
multipath 属性を適用するマルチパスデバイスの WWID を指定します。このパラメーターは、 |
|
multipath 属性が適用されるマルチパスデバイスのシンボリック名を指定します。 |
次のリストの属性はオプションです。これらを設定しない場合、overrides
、devices
、または defaults
セクションのデフォルト値が適用されます。これらの属性の完全な説明は、設定ファイルのデフォルト を参照してください。
-
path_grouping_policy
-
path_selector
-
prio
-
prio_args
-
failback
-
no_path_retry
-
rr_min_io
-
rr_min_io_rq
-
flush_on_last_del
-
features
-
reservation_key
-
user_friendly_names
-
deferred_remove
-
san_path_err_threshold
-
san_path_err_forget_rate
-
san_path_err_recovery_time
-
marginal_path_err_sample_time
-
marginal_path_err_rate_threshold
-
marginal_path_err_recheck_gap_time
-
marginal_path_double_failed_time
-
delay_watch_checks
-
delay_wait_checks
-
skip_kpartx
-
max_sectors_kb
-
ghost_delay
設定ファイルで、2 つの特定マルチパスデバイスに対して multipath 属性を指定している例を以下に示します。1 つ目のデバイスの WWID は 3600508b4000156d70001200000b0000
で、シンボリック名は yellow
です。
2 つ目のマルチパスデバイスの WWID は 1DEC_321816758474
で、シンボリック名は red
です。
例5.1 マルチパス属性の仕様
multipaths {
multipath {
wwid 3600508b4000156d70001200000b0000
alias yellow
path_grouping_policy multibus
path_selector "round-robin 0"
failback manual
no_path_retry 5
}
multipath {
wwid 1DEC_321816758474
alias red
}
}
関連情報
-
multipath.conf(5)
man ページ - 設定ファイルの defaults セクション
- 設定ファイルの overrides セクション
5.4. 設定ファイルの devices セクション
multipath.conf
設定ファイルの devices
セクションを使用して、個々のストレージコントローラータイプの設定を定義します。このセクションで設定された値は、defaults
セクションで指定された値をオーバーライドします。
システムは、vendor
、product
、および revision
キーワードによってストレージコントローラーのタイプを識別します。これらのキーワードは正規表現であり、特定のデバイスに関する sysfs
情報と一致する必要があります。
devices
セクションは、device
サブセクションのみを属性として認識します。デバイスに一致するキーワードが複数ある場合は、一致するすべてのエントリーの属性がデバイスに適用されます。属性が複数の一致する device
サブセクションで指定されている場合、新しいバージョンのエントリーが以前のエントリーよりも優先されます。
device
サブセクションの最新バージョンの設定属性は、以前の devices
サブセクションおよび defaults
セクションの属性をオーバーライドします。
次の表に、device
サブセクションで設定できる属性を示します。
属性 | 説明 |
---|---|
| デバイスベンダー名と一致する正規表現を指定します。これは必須属性です。 |
| デバイスの製品名に一致する正規表現を指定します。これは必須属性です。 |
| デバイスの製品リビジョンに一致する正規表現を指定します。リビジョン属性がない場合、すべてのデバイスリビジョンが一致します。 |
|
マルチパスはこの属性を使用して、このデバイスエントリーの |
| VPD ページの省略形を使用して、ベンダー固有の Vital Product Data (VPD) ページ情報を表示します。 |
| |
| 特定のデバイスタイプに使用するハードウェアハンドラーを指定します。可能な値はすべてハードウェアに依存し、以下が含まれます。 |
| |
| |
| |
| |
| |
デフォルト値は |
バージョン 4.3 以降の Linux カーネルでは、デバイスハンドラーが既知のデバイスに自動的にアタッチされます。これには、SCSI-3 ALUA をサポートするすべてのデバイスが含まれます。カーネルでは、後でハンドラーを変更できません。カーネルでそのようなデバイスに hardware_handler 属性を設定しても効果はありません。
次のリストの属性はオプションです。設定しない場合は、defaults
セクションのデフォルト値が適用されます。これらの属性の完全な説明は、設定ファイルのデフォルト を参照してください。
-
path_grouping_policy
-
uid_attribute
-
getuid_callout
-
path_selector
-
path_checker
-
prio
-
prio_args
-
failback
-
alias_prefix
-
no_path_retry
-
rr_min_io
-
rr_min_io_rq
-
flush_on_last_del
-
features
-
reservation_key
-
user_friendly_names
-
deferred_remove
-
san_path_err_threshold
-
san_path_err_forget_rate
-
san_path_err_recovery_time
-
marginal_path_err_sample_time
-
marginal_path_err_rate_threshold
-
marginal_path_err_recheck_gap_time
-
marginal_path_double_failed_time
-
delay_watch_checks
-
delay_wait_checks
-
skip_kpartx
-
max_sectors_kb
-
ghost_delay
-
all_tg_pt
関連情報
-
multipath.conf(5)
man ページ - 設定ファイルの defaults セクション
5.5. 設定ファイルの overrides セクション
overrides
セクションは、オプションの protocol
サブセクションを認識し、複数の protocol
サブセクションを含めることができます。システムは、必須の type
属性を使用して、パスデバイスを protocol
サブセクションと照合します。一致する protocol
サブセクションの属性は、残りの overrides
セクションの属性よりも優先されます。一致する protocol
サブセクションが複数ある場合は、後のエントリーほど優先度が高くなります。
次のリストの属性はオプションです。これらを設定しない場合、devices
または defaults
セクションのデフォルト値が適用されます。
-
path_grouping_policy
-
uid_attribute
-
getuid_callout
-
path_selector
-
path_checker
-
alias_prefix
-
features
-
prio
-
prio_args
-
failback
-
no_path_retry
-
rr_min_io
-
rr_min_io_rq
-
flush_on_last_del
-
fast_io_fail_tmo
-
dev_loss_tmo
-
eh_deadline
-
user_friendly_names
-
retain_attached_hw_handler
-
detect_prio
-
detect_checker
-
deferred_remove
-
san_path_err_threshold
-
san_path_err_forget_rate
-
san_path_err_recovery_time
-
marginal_path_err_sample_time
-
marginal_path_err_rate_threshold
-
marginal_path_err_recheck_gap_time
-
marginal_path_double_failed_time
-
delay_watch_checks
-
delay_wait_checks
-
skip_kpartx
-
max_sectors_kb
-
ghost_delay
-
all_tg_pt
protocol
サブセクションは、次の必須属性を認識します。
属性 | 説明 |
---|---|
| パスデバイスのプロトコル文字列を指定します。使用できる値を以下に示します。 |
| |
この属性は正規表現ではありません。パスデバイスプロトコル文字列は正確に一致する必要があります。 |
次のリストの属性は、protocol
サブセクションのオプションです。これらを設定しない場合、overrides
、devices
または defaults
セクションのデフォルト値が適用されます。
-
fast_io_fail_tmo
-
dev_loss_tmo
-
eh_deadline
関連情報
-
multipath.conf(5)
man ページ - 設定ファイルの defaults セクション
5.6. DM Multipath がデバイスタイムアウトの上書き
recovery_tmo
sysfs
オプションは、特定の iSCSI デバイスのタイムアウトを制御します。次のオプションは、システム全体の recovery_tmo
値を上書きします。
-
replacement_timeout
設定オプションは、システム全体で全 iSCSI デバイスのrecovery_tmo
値を上書きします。 DM Multipath が管理するすべての iSCSI デバイスで、DM Multipath の
fast_io_fail_tmo
オプションは、システム全体のrecovery_tmo
値を上書きします。DM Multipath の
fast_io_fail_tmo
オプションは、ファイバーチャネルデバイスのfast_io_fail_tmo
オプションを上書きします。
DM Multipath の fast_io_fail_tmo
オプションは replacement_timeout
よりも優先します。Red Hat では、replacement_timeou
を使用して、DM Multipath が管理するデバイスの recovery_tmo
を上書きすることは推奨しません。これは、multipathd
サービスが再読み込みを行うと、DM Multipath が常に recovery_tmo
をリセットするためです。
5.7. マルチパス設定ファイルのデフォルトの編集
/etc/multipath.conf
設定ファイルには defaults
セクションがあり、以下のように user_friendly_names
パラメーターを yes
に設定できます。
defaults { user_friendly_names yes }
上記は、user_friendly_names
パラメーターのデフォルト値を上書きします。multipath.conf file
の defaults セクションで設定されたデフォルト値は、devices、multipath で指定された属性によって上書きされない限り、または multipath.conf
ファイルのセクションをオーバーライドしない限り、DMMultipath によって使用されます。
手順
/etc/multipath.conf
設定ファイルを表示します。このファイルには、設定のデフォルトのテンプレートが含まれています。#defaults { # polling_interval 10 # path_selector "round-robin 0" # path_grouping_policy multibus # uid_attribute ID_SERIAL # prio alua # path_checker readsector0 # rr_min_io 100 # max_fds 8192 # rr_weight priorities # failback immediate # no_path_retry fail # user_friendly_names yes #}
設定パラメーターのデフォルト値を上書きします。このテンプレートから
defaults
のセクションに関連する行をコピーして、コメントを外すことができます。たとえば、
path_grouping_policy
パラメーターを、デフォルト値のfailover
ではなくmultibus
に上書きするには、以下のように、テンプレートで該当行を見つけて設定ファイルの defaults セクションにコピーし、そのコメントを外します。defaults { user_friendly_names yes path_grouping_policy multibus }
次のいずれかのコマンドを実行してマルチパス設定ファイルを変更した後、
/etc/multipath.conf
ファイルを検証します。設定エラーを表示するには、以下のコマンドを実行します。
# multipath -t > /dev/null
変更が追加された新しい設定を表示するには、以下のコマンドを実行します。
# multipath -t
/etc/multipath.conf
ファイルを再読み込みし、multipathd
デーモンを再設定して変更を反映します。# service multipathd reload
関連情報
-
multipath.conf(5)
andmultipathd(8)
man pages
5.8. 特定デバイスのマルチパス設定の編集
multipath.conf
設定ファイルの multipaths
セクションで、必須の WWID パラメーターによって参照される個々のマルチパスデバイスに固有の設定を追加できます。
このデフォルトは DM Multipath により使用され、multipath.conf
ファイルの overrides
セクション、defaults
セクション、および devices
セクションに設定された属性を上書きします。multipaths
セクションには、任意の数のマルチパスサブセクションを含めることができます。
手順
特定のマルチパスデバイスの
multipaths
セクションを変更します。設定ファイルで、2 つの特定マルチパスデバイスに対して multipath 属性を指定している例を以下に示します。-
1 つ目のデバイスの WWID は
3600508b4000156d70001200000b0000
で、シンボリック名はyellow
です。 -
2 番目のマルチパスデバイスの WWID は
1DEC_321816758474
で、シンボリック名red
があります。
rr_weight
属性はpriorities
に設定されています。multipaths { multipath { wwid 3600508b4000156d70001200000b0000 alias yellow path_grouping_policy multibus path_selector "round-robin 0" failback manual rr_weight priorities no_path_retry 5 } multipath { wwid 1DEC_321816758474 alias red rr_weight priorities } }
-
1 つ目のデバイスの WWID は
次のいずれかのコマンドを実行してマルチパス設定ファイルを変更した後、
/etc/multipath.conf
ファイルを検証します。設定エラーを表示するには、以下のコマンドを実行します。
# multipath -t > /dev/null
変更が追加された新しい設定を表示するには、以下のコマンドを実行します。
# multipath -t
/etc/multipath.conf
ファイルを再読み込みし、multipathd
デーモンを再設定して変更を反映します。# service multipathd reload
関連情報
-
multipath.conf(5)
man ページ
5.9. プロトコルを使用した特定デバイスのマルチパス設定の変更
トランスポートプロトコルに基づいてマルチパスデバイスパスを設定できます。/etc/multipath.conf
ファイルの overrides
セクションの protocol
サブセクションを使用すると、特定のパスでマルチパス設定を上書きできます。これにより、Fibre Channel (FC) や Internet Small Computer Systems Interface (iSCSI) などの複数のトランスポートプロトコルを介したマルチパスデバイスへのアクセスが可能になります。
protocol
サブセクションで設定したオプションは、overrides
、devices
、および defaults
セクションの値を上書きします。これらのオプションは、サブセクションの type
パラメーターに一致するトランスポートプロトコルを使用するデバイスにのみ適用されます。
前提条件
- システムで Device Mapper (DM) マルチパスを設定している。
- すべてのパスが同じトランスポートプロトコルを使用するのではなく、マルチパスデバイスがある。
手順
以下のコマンドを実行して、特定のパスプロトコルを表示します。
# multipathd show paths format "%d %P" dev protocol sda scsi:ata sdb scsi:fcp sdc scsi:fcp
各マルチパスタイプに
protocol
サブセクションを追加して、/etc/multipath.conf
ファイルのoverrides
セクションを編集します。scsi:fcp
プロトコルを使用するパスデバイスの設定。overrides { dev_loss_tmo 60 fast_io_fail_tmo 8 protocol { type "scsi:fcp" dev_loss_tmo 70 fast_io_fail_tmo 10 eh_deadline 360 } }
scsi:iscsi
プロトコルを使用するパスデバイスの設定。overrides { dev_loss_tmo 60 fast_io_fail_tmo 8 protocol { type "scsi:iscsi" dev_loss_tmo 60 fast_io_fail_tmo 120 } }
他のすべてのプロトコルを使用するパスデバイスの設定。
overrides { dev_loss_tmo 60 fast_io_fail_tmo 8 protocol { type "<type of protocol>" dev_loss_tmo 60 fast_io_fail_tmo 8 } }
overrides
セクションには、複数の protocol
サブセクションを含めることができます。
protocol
サブセクションには type
パラメーターが含める必要があります。次に、タイプ
パラメーターが一致するすべてのパスの設定が、プロトコル
サブセクションにリストされている残りのパラメーターで更新されます。
関連情報
-
multipath.conf(5)
man ページ
5.10. ストレージコントローラーのマルチパス設定の編集
multipath.conf
設定ファイルの devices
セクションは、各ストレージデバイスの属性を設定します。デバイスを含むパスの multipath.conf
ファイルの multipaths
セクションまたは overrides
セクションに指定された属性により上書きされた場合を除き、これらの値は DM Multipath により使用されます。これらの属性は、multipath.conf
ファイルの defaults
セクションに設定された属性を上書きします。
手順
サポートされているデバイスを含む、デフォルトの設定値に関する情報を表示します。
# multipathd show config # multipath -t
マルチパスに対応しているデバイスの多くは、デフォルトでマルチパスの設定に含まれています。
-
オプション: デフォルトの設定値を変更する必要がある場合は、それらの値を上書きするデバイスの設定ファイルにエントリーを含めることで、デフォルト値を上書きできます。
multipathd show config
コマンドが表示する、目的のデバイスのデフォルト値をコピーして、変更したい値に書き換えることができます。 vendor
とproduct
のパラメーターを設定して、デフォルトで自動的に設定されないデバイスを設定ファイルのdevices
セクションに追加します。次の例に示すように、/sys/block/device_name/device/vendor
および/sys/block/device_name/device/model
ファイルを開いてこれらの値を見つけます。ここで、device_name はマルチパスされるデバイスです。# cat /sys/block/sda/device/vendor WINSYS # cat /sys/block/sda/device/model SF2372
オプション: 特定のデバイスに応じて、追加のパラメーターを指定します。
active/active
デバイス-
通常、この場合、追加のパラメーターを設定する必要はありません。必要に応じて、
path_grouping_policy
をmultibus
に設定できます。この他に、設定が必要となる可能性があるパラメーターはno_path_retry
とrr_min_io
です。 active/passive
デバイス-
I/O を持つパスが自動的に passive パスに切り替えられる場合は、チェッカーの関数を、I/O をパスに送信しない関数に変更し、それが正しく動作するかどうかを検証する必要があります (これを行わないとデバイスはフェイルオーバーし続けます)。これは、
path_checker
をtur
に設定したことを意味します。これは、ほとんどの場合、Test Unit Ready コマンドをサポートするすべての SCSI デバイスで機能します。
パスの切り替えに特殊なコマンドを必要とするデバイスにマルチパスを設定するには、ハードウェアハンドラーカーネルモジュールが必要になります。現在、利用可能なハードウェアハンドラーは
emc
です。このハンドラーが目的のデバイスに使用できない場合は、そのデバイスにマルチパスを設定できない可能性があります。マルチパス設定ファイルの
device
エントリーの例を以下に示します。# } # device { # vendor "COMPAQ " # product "MSA1000 " # path_grouping_policy multibus # path_checker tur # rr_weight priorities # } #}
次のいずれかのコマンドを実行してマルチパス設定ファイルを変更した後、
/etc/multipath.conf
ファイルを検証します。設定エラーを表示するには、以下のコマンドを実行します。
# multipath -t > /dev/null
変更が追加された新しい設定を表示するには、以下のコマンドを実行します。
# multipath -t
/etc/multipath.conf
ファイルを再読み込みし、multipathd
デーモンを再設定して変更を反映します。# service multipathd reload
関連情報
-
multipath.conf(5)
andmultipathd(8)
man pages
5.11. すべてのデバイスへのマルチパス値の設定
multipath.conf
設定ファイルの overrides
セクションを使用すると、すべてのデバイスの設定値を設定できます。このセクションは、multipath.conf
設定ファイルの devices
セクションおよび defaults
セクションの両方で対応しているすべての属性に対応します。これは、vendor
、product
、および revision
以外のすべての devices
セクション属性になります。
DM Multipath は、デバイスを含むパスの multipath.conf
ファイルの multipaths
セクションで指定された属性によって上書きされない限り、すべてのデバイスに対してこれらの属性を使用します。この属性は、multipath.conf
ファイルの devices
セクションおよび defaults
セクションに設定された属性を上書きします。
手順
デバイス固有の設定を上書きします。たとえば、すべてのデバイスで
no_path_retry
をfail
に設定できます。すべてのパスに障害が発生した場合は、次のコマンドを使用してキューイングをオフにします。これにより、デバイス固有の設定が上書きされます。overrides { no_path_retry fail }
次のいずれかのコマンドを実行してマルチパス設定ファイルを変更した後、
/etc/multipath.conf
ファイルを検証します。設定エラーを表示するには、以下のコマンドを実行します。
# multipath -t > /dev/null
変更が追加された新しい設定を表示するには、以下のコマンドを実行します。
# multipath -t
/etc/multipath.conf
ファイルを再読み込みし、multipathd
デーモンを再設定して変更を反映します。# service multipathd reload
関連情報
-
multipath.conf(5)
man ページ
第6章 デバイスのマルチパスの防止
マルチパスデバイスを設定する際に、選択したデバイスを無視するように DM Multipath を設定できます。DM Multipath は、これらの無視されたデバイスをマルチパスデバイスにグループ化しません。
6.1. DM Multipath がパスのマルチパスデバイスを作成する際の条件
DM Multipath には、パス用のマルチパスデバイスを作成するか、パスを無視するかどうかを判断するためのデフォルトルールのセットがあります。動作を設定できます。
find_multipaths
設定パラメーターを off
に設定すると、マルチパスは明示的に無効にされていないパスに対して常にマルチパスデバイスを作成しようとします。find_multipaths
設定パラメーターを on
に設定すると、以下の条件のいずれかが満たされている場合に限り、マルチパスによりデバイスが作成されます。
- 無効にされていない、同じ World-Wide Identification (WWID) を持つパスが少なくとも 2 つあります。
-
multipath
コマンドでデバイスを指定して、デバイスの作成を手動で強制する場合。 - 任意のパスが、以前に作成されたマルチパスデバイスと同一の WWID を持っている場合 (そのマルチパスデバイスがその時点で存在していない場合も含む)。マルチパスデバイスを作成すると、常にそのデバイスの WWID が記憶されるため、同一の WWID を持つパスが検出されると、そのデバイスが自動的に再作成されます。これにより、他のデバイスでマルチパスを無効にしなくても、マルチパスが自動的に正しいパスを選択してマルチパスデバイスにすることができます。
find_multipaths
パラメーターを使用せずにマルチパスデバイスを作成してから、パラメーターを on
に設定した場合は、/etc/multipath/wwids
ファイルから、マルチパスデバイスとして作成しないデバイスの WWID を削除しなければならない場合があります。次の例は、サンプルの /etc/multipath/wwids
ファイルを示しています。WWID は、スラッシュ (/
) で囲まれています。
# Multipath wwids, Version : 1.0 # NOTE: This file is automatically maintained by multipath and multipathd. # You should not need to edit this file in normal circumstances. # # Valid WWIDs: /3600d0230000000000e13955cc3757802/ /3600d0230000000000e13955cc3757801/ /3600d0230000000000e13955cc3757800/ /3600d02300069c9ce09d41c31f29d4c00/ /SWINSYS SF2372 0E13955CC3757802/ /3600d0230000000000e13955cc3757803/
on
と off
に加えて、find_multipaths
も以下の値に設定することができます。
strict
-
マルチパスは、以前にマルチパス化されていないパスを許可しないため、そのパスは
/etc/multipath/wwids
ファイルに記載されていません。 smart
-
マルチパスは、
udev
で無効になっていないデバイスが表示されるとすぐに、それらを常に受け入れます。multipathd
がfind_multipaths_timeout
パラメーターで設定されたタイムアウト内にデバイスを作成しない場合、デバイスに対するクレームを解放します。
find_multipaths
の組み込みデフォルト値は off
です。ただし、mpathconf
により作成されたデフォルトの multipath.conf
ファイルは、find_multipaths
の値を on
に設定します。
find_multipaths
パラメーターが on
に設定されている場合、マルチパスを使用したくない複数のパスを持つデバイスでのみマルチパスを無効にします。このため、通常、デバイスでマルチパスを無効にする必要はありません。
以前に作成したマルチパスデバイスを blacklist
に追加する場合は、-w
オプションを使用して /etc/multipath/wwids
ファイルからそのデバイスの WWID を削除すると、他のプログラムとの問題を回避するのに役立つことがあります。たとえば、WWID 3600d0230000000000e13954ed5f89300
のデバイス /dev/sdb
を /etc/multipath/wwids
ファイルから削除する場合は、以下のいずれかの方法を使用することができます。
デバイス名でマルチパスデバイスを削除する。
# multipath -w /dev/sdb wwid '3600d0230000000000e13954ed5f89300' removed
マルチパスデバイスの WWID を使用して削除する。
# multipath -w 3600d0230000000000e13954ed5f89300 wwid '3600d0230000000000e13954ed5f89300' removed
また、-W
オプションで /etc/multipath/wwids
ファイルを更新することも可能です。これにより、/etc/multipath/wwids
ファイルがリセットされ、現在のマルチパスデバイスの WWID のみが含まれるようになります。リセットする場合は、以下を実行してください。
# multipath -W
successfully reset wwids
関連情報
-
multipath.conf(5)
man ページ
6.2. 特定のデバイスでマルチパスを無効にする基準
以下のいずれかの基準により、デバイスでマルチパスを無効にできます。
- WWID
- デバイス名
- デバイスの種別
- プロパティー
- プロトコル
すべてのデバイスに対して、DM Multipath は以下の順番でこの基準を評価します。
-
プロパティー
-
devnode
-
device
-
プロトコル
-
wwid
上記の基準のいずれかによってデバイスが無効になっていることが判明した場合、DM Multipath はそのデバイスを multipathd
による処理から除外し、後の基準を評価しません。各基準において、デバイスが例外リストと無効なデバイスリストの両方に一致する場合は、例外リストが優先されます。
デフォルトでは、設定ファイルの初期 blacklist
セクションをコメントアウトした後でも、さまざまなデバイス種別が無効化されます。
6.3. WWID によるマルチパスの無効化
WWID (World-Wide Identification) を使用して、個々のデバイスでマルチパスを無効にできます。
手順
デバイスの WWID を検索します。
# multipathd show paths raw format "%d %w" | grep sdb sdb 3600508b4001080520001e00011700000
wwid
エントリーを使用して、/etc/multipath.conf
設定ファイルのデバイスを無効にします。次の例は、WWID が
3600508b4001080520001e00011700000
のデバイスを無効にする DM マルチパス設定ファイル内の行を示します。blacklist { wwid 3600508b4001080520001e00011700000 }
次のいずれかのコマンドを実行してマルチパス設定ファイルを変更した後、
/etc/multipath.conf
ファイルを検証します。設定エラーを表示するには、以下のコマンドを実行します。
# multipath -t > /dev/null
変更が追加された新しい設定を表示するには、以下のコマンドを実行します。
# multipath -t
/etc/multipath.conf
ファイルを再読み込みし、multipathd
デーモンを再設定して変更を反映します。# service multipathd reload
6.4. デバイス名によるマルチパスの無効化
DM Multipath がマルチパスデバイスにグループ化しないように、デバイス名でデバイスタイプのマルチパスを無効にできます。
手順
デバイス情報を表示します。
# udevadm info --query=all -n /dev/mapper/sd*
devnode
エントリーを使用して、/etc/multipath.conf
設定ファイルのデバイスを無効にします。以下の例は、すべての
sd*
デバイスを無効にするため、すべての SCSI デバイスを無効にする DM Multipath 設定ファイル内の行を示しています。blacklist { devnode "^sd[a-z]" }
devnode
エントリーを使用すると、特定タイプのすべてのデバイスではなく、個別のデバイスを無効にできます。ただし、udev
ルールで静的にマッピングされていない限り、再起動時に特定のデバイス名が同じ名前になる保証がないため、この方法は推奨されません。たとえば、システムが再起動するとデバイス名が/dev/sda
から/dev/sdb
に変わる可能性があります。デフォルトでは、DM Multipath は以下の
devnode
エントリーを使用して、SCSI、NVMe、または DASD 以外のすべてのデバイスを無効にします。blacklist { devnode "!^(sd[a-z]|dasd[a-z]|nvme[0-9])" }
このエントリーを無効にするデバイスは、通常、 DM Multipath に対応していません。
次のいずれかのコマンドを実行してマルチパス設定ファイルを変更した後、
/etc/multipath.conf
ファイルを検証します。設定エラーを表示するには、以下のコマンドを実行します。
# multipath -t > /dev/null
変更が追加された新しい設定を表示するには、以下のコマンドを実行します。
# multipath -t
/etc/multipath.conf
ファイルを再読み込みし、multipathd
デーモンを再設定して変更を反映します。# service multipathd reload
6.5. デバイスの種別によるマルチパスの無効化
デバイスセクションを使用して、デバイスのマルチパスを無効にできます。
手順
表示デバイスの種類:
# multipathd show paths raw format "%d %s" | grep sdb sdb HP,HSV210
device
セクションを使用して、/etc/multipath.conf
設定ファイルのデバイスを無効にします。以下の例は、IBM DS4200 および HP のすべてのデバイスでのマルチパスを無効にします。
blacklist { device { vendor "IBM" product "3S42" #DS4200 Product 10 } device { vendor "HP" product ".*" } }
次のいずれかのコマンドを実行してマルチパス設定ファイルを変更した後、
/etc/multipath.conf
ファイルを検証します。設定エラーを表示するには、以下のコマンドを実行します。
# multipath -t > /dev/null
変更が追加された新しい設定を表示するには、以下のコマンドを実行します。
# multipath -t
/etc/multipath.conf
ファイルを再読み込みし、multipathd
デーモンを再設定して変更を反映します。# service multipathd reload
6.6. udev プロパティーによるマルチパスの無効化
udev
プロパティーパラメーターを使用して、デバイスのマルチパスを無効にできます。
手順
デバイスの
udev
変数を表示します。# udevadm info --query=all -n /dev/sdb
property
パラメーターを使用して、/etc/multipath.conf
設定ファイルのデバイスを無効にします。このパラメーターは、デバイスのudev
環境変数名と一致する正規表現の文字列です。以下の例は、
udev
プロパティーID_ATA
を持つすべてのデバイスでマルチパスを無効にします。blacklist { property "ID_ATA" }
次のいずれかのコマンドを実行してマルチパス設定ファイルを変更した後、
/etc/multipath.conf
ファイルを検証します。設定エラーを表示するには、以下のコマンドを実行します。
# multipath -t > /dev/null
変更が追加された新しい設定を表示するには、以下のコマンドを実行します。
# multipath -t
/etc/multipath.conf
ファイルを再読み込みし、multipathd
デーモンを再設定して変更を反映します。# service multipathd reload
6.7. デバイスプロトコルによるマルチパスの無効化
デバイスプロトコルを使用して、デバイスのマルチパスを無効にすることができます。
手順
オプション: パスが使用するプロトコルを表示します。
# multipathd show paths raw format "%d %P" | grep sdb sdb scsi:fcp
protocol
パラメーターを使用して、/etc/multipath.conf
設定ファイルのデバイスを無効にします。protocol パラメーターは正規表現を取り、プロトコル文字列が一致するすべてのデバイスをブラックリストに指定します。たとえば、すべての nvme デバイスでマルチパスを無効にするには、以下を使用します。
blacklist { protocol "nvme" }
DM Multipath は以下のプロトコル文字列を認識します。
-
scsi:fcp
-
scsi:spi
-
scsi:ssa
-
scsi:sbp
-
scsi:srp
-
scsi:iscsi
-
scsi:sas
-
scsi:adt
-
scsi:ata
-
scsi:unspec
-
ccw
-
cciss
-
nvme:pcie
-
nvme:rdma
-
nvme:fc
-
nvme:tcp
-
nvme:loop
-
nvme:apple-nvme
-
nvme:unspec
-
undef
-
次のいずれかのコマンドを実行してマルチパス設定ファイルを変更した後、
/etc/multipath.conf
ファイルを検証します。設定エラーを表示するには、以下のコマンドを実行します。
# multipath -t > /dev/null
変更が追加された新しい設定を表示するには、以下のコマンドを実行します。
# multipath -t
/etc/multipath.conf
ファイルを再読み込みし、multipathd
デーモンを再設定して変更を反映します。# service multipathd reload
6.8. マルチパスを無効にしたデバイスに対する例外の追加
マルチパスが現在無効になっているデバイスに例外を追加することで、マルチパスを有効にできます。
前提条件
- 特定のデバイスでマルチパスが無効になっている。
手順
/etc/multipath.conf
設定ファイルのblacklist_exceptions
セクションを使用して、デバイスでマルチパスを有効にします。設定ファイルの
blacklist_exceptions
セクションでデバイスを指定する場合は、blacklist
セクションで指定したものと同じ基準を使用して例外を指定する必要があります。たとえば、無効にしたデバイスがその WWID に関連付けられている場合でも、WWID 例外はdevnode
エントリーで無効になっているデバイスには適用されません。同様に、devnode
例外はdevnode
エントリーにしか適用されず、device
例外はデバイスエントリーにしか適用されません。例6.1 WWID による例外
たとえば、デバイスが多数あり、その中の 1 つのデバイス (以下の例では WWID が
3600d0230000000000e13955cc3757803
のデバイス) でのみマルチパスを有効にする場合は、有効にするデバイス以外のものを 1 つ 1 つ無効にするのではなく、一旦すべてのデバイスを無効にしてから、/etc/multipath.conf
ファイルに以下の行を追加し、必要なデバイスのみを有効にします。blacklist { wwid ".*" } blacklist_exceptions { wwid "3600d0230000000000e13955cc3757803" }
または、感嘆符 (
!
) を使用してblacklist
エントリーを反転することもできます。これにより、指定した WWID を除くすべてのデバイスを無効にできます。blacklist { wwid "!3600d0230000000000e13955cc3757803" }
例6.2 udev プロパティーによる例外
property
パラメーターの挙動は、他のblacklist_exception
パラメーターとは異なります。property
パラメーターの値は、udev
データベース内の変数の名前と一致する必要があります。それ以外の場合は、デバイスは無効になります。このパラメーターを使用すると、USB スティックやローカルハードドライブなどの特定の SCSI デバイスでマルチパスを無効にできます。合理的にマルチパス化できる SCSI デバイスでのみマルチパスを有効にするには、以下の例のようにこのパラメーターを
SCSI_IDENT_|ID_WWN)
に設定します。blacklist_exceptions { property "(SCSI_IDENT_|ID_WWN)" }
次のいずれかのコマンドを実行してマルチパス設定ファイルを変更した後、
/etc/multipath.conf
ファイルを検証します。設定エラーを表示するには、以下のコマンドを実行します。
# multipath -t > /dev/null
変更が追加された新しい設定を表示するには、以下のコマンドを実行します。
# multipath -t
/etc/multipath.conf
ファイルを再読み込みし、multipathd
デーモンを再設定して変更を反映します。# service multipathd reload
第7章 マルチパス化されたボリュームの管理
DM Multipath が提供するコマンドのうち、マルチパスボリュームを管理するコマンドを以下に示します。
-
multipath
-
dmsetup
-
multipathd
7.1. オンラインのマルチパスデバイスのサイズ変更
オンラインのマルチパスデバイスのサイズを変更する必要がある場合は、以下の手順に従ってください。
手順
- 物理デバイスのサイズを変更します。
以下のコマンドを実行し、論理ユニット番号 (LUN) までのパスを検索します。
#
multipath -l
パスのサイズを変更します。SCSI デバイスの場合は、デバイスの
rescan
ファイルに 1 と書き込むと、SCSI ドライバーによる再スキャンが行われます。以下にコマンド例を示します。#
echo 1 > /sys/block/path_device/device/rescan
各パスデバイスに対してこのコマンドを実行します。たとえば、パスデバイスが
sda
、sdb
、sde
、およびsdf
の場合は、次のコマンドを実行します。#
echo 1 > /sys/block/sda/device/rescan
#echo 1 > /sys/block/sdb/device/rescan
#echo 1 > /sys/block/sde/device/rescan
#echo 1 > /sys/block/sdf/device/rescan
マルチパスデバイスのサイズを変更します。
#
multipathd resize map multipath_device
ファイルシステムのサイズを変更します (LVM または DOS のパーティションが使用されていないことを前提とします)。
#
resize2fs /dev/mapper/mpatha
7.2. root ファイルシステムをシングルパスデバイスからマルチパスデバイスへ移動
シングルパスのデバイスにシステムをインストールしてから、別のパスを root ファイルシステムに追加する場合は、root ファイルシステムをマルチパスのデバイスに移行する必要があります。シングルパスからマルチパスへの移行については、以下の手順を参照してください。
前提条件
-
device-mapper-multipath
パッケージがインストールされている。
手順
/etc/multipath.conf
設定ファイルを作成し、multipath モジュールをロードし、multipathd
systemd
サービスを有効にします。# yum install device-mapper-multipath
以下のコマンドを実行して
/etc/multipath.conf
設定ファイルを作成、マルチパスモジュールをロードしてmultipathd
のchkconfig
をon
に設定します。# mpathconf --enable
-
find_multipaths
設定パラメーターがyes
に設定されていない場合は、Preventing devices from multipathing の説明にしたがって/etc/multipath.conf
のblacklist
およびblacklist_exceptions
セクションを編集します。 検出され次第、root デバイスにマルチパスデバイスを構築させるため、次のコマンドを実行します。また、このコマンドを実行すると、パスが 1 つしかない場合でも必ず
find_multipaths
がデバイスを許可するようになります。# multipath -a root_devname
たとえば、root デバイスが
/dev/sdb
の場合は、次のコマンドを実行します。#
multipath -a /dev/sdb
wwid '3600d02300069c9ce09d41c4ac9c53200' added
multipath
コマンドを実行して設定ファイルの設定が正しく行われたことを確認し、次のような行が出力されていることを検索します。これは、コマンドがマルチパスデバイスの作成に失敗したことを示しています。date wwid: ignoring map
たとえば、デバイスの WWID が 3600d02300069c9ce09d41c4ac9c53200 の場合は、次のような行が出力に表示されます。
# multipath Oct 21 09:37:19 | 3600d02300069c9ce09d41c4ac9c53200: ignoring map
multipath
を使用してinitramfs
ファイルシステムを再構築します。# dracut --force -H --add multipath
- マシンをシャットダウンします。
- マシンを起動します。
- 他のパスがマシンから見えるようにする。
検証
以下のコマンドを実行して、マルチパスデバイスが作成されているかどうかを確認します。
# multipath -l | grep 3600d02300069c9ce09d41c4ac9c53200 mpatha (3600d02300069c9ce09d41c4ac9c53200) dm-0 3PARdata,VV
7.3. swap ファイルシステムをシングルパスデバイスからマルチパスデバイスへ移動
デフォルトでは、swap デバイスは論理ボリュームとして設定されます。論理ボリュームグループを設定する物理ボリュームでマルチパスを設定している限り、このようなデバイスをマルチパスデバイスとして設定する特別な手順は必要ありません。ただし、swap デバイスが LVM ボリュームではなく、デバイス名でマウントする場合には、/etc/fstab
ファイルに、適切なマルチパスデバイス名を設定しないといけない場合があります。
手順
/etc/multipath/wwids
ファイルにデバイスの WWID を追加します。# multipath -a swap_devname
たとえば、root デバイスが
/dev/sdb
の場合は、次のコマンドを実行します。# multipath -a /dev/sdb wwid '3600d02300069c9ce09d41c4ac9c53200' added
設定ファイルの設定が正しく行われたことを確認するため、
multipath
コマンドを実行して、次のような行が出力されていることを検索します。date wwid: ignoring map
これは、コマンドがマルチパスデバイスの作成に失敗したことを示しています。
たとえば、デバイスの WWID が 3600d02300069c9ce09d41c4ac9c53200 の場合は、次のような行が出力に表示されます。
#
multipath
Oct 21 09:37:19 | 3600d02300069c9ce09d41c4ac9c53200: ignoring map/etc/multipath.conf
ファイルに、swap デバイスのエイリアスを設定します。multipaths { multipath { wwid WWID_of_swap_device alias swapdev } }
/etc/fstab
ファイルで、root デバイスへの古いデバイスパスを、マルチパスデバイスに置き換えます。たとえば、
/etc/fstab
ファイルに、以下のようなエントリーがあるとします。/dev/sdb2 swap swap defaults 0 0
エントリーを以下のように変更します。
/dev/mapper/swapdev swap swap defaults 0 0
multipath を使用して initramfs ファイルシステムを再構築します。
# dracut --force -H --add multipath
- マシンをシャットダウンします。
- マシンを起動します。
- 他のパスがマシンから見えるようにする。
検証
スワップデバイスがマルチパスデバイス上にあるかどうかを確認します。
# swapon -s
以下に例を示します。
# swapon -s Filename Type Size Used Priority /dev/dm-3 partition 4169724 0 -2
ファイル名は、マルチパススワップデバイスと一致させる必要があります。
# readlink -f /dev/mapper/swapdev /dev/dm-3
7.4. dmsetup コマンドでデバイスマッパーエントリーの特定
dmsetup
コマンドを使用して、マルチパスを設定したデバイスに一致するデバイスマッパーのエントリーを検索できます。
手順
デバイスマッパーの全デバイスとそのメジャー番号、マイナー番号を表示します。dm デバイス名は、マイナー番号で特定できます。たとえば、マイナー番号 3 は、マルチパスを設定したデバイス
/dev/dm-3
に対応します。#
dmsetup ls
mpathd (253:4) mpathep1 (253:12) mpathfp1 (253:11) mpathb (253:3) mpathgp1 (253:14) mpathhp1 (253:13) mpatha (253:2) mpathh (253:9) mpathg (253:8) VolGroup00-LogVol01 (253:1) mpathf (253:7) VolGroup00-LogVol00 (253:0) mpathe (253:6) mpathbp1 (253:10) mpathd (253:5)
7.5. multipathd デーモンの管理
multipathd
コマンドを使用して、multipathd
デーモンを管理できます。
手順
multipathd show maps
コマンドの出力のデフォルトフォーマットを表示します。# multipathd show maps name sysfs uuid mpathc dm-0 360a98000324669436c2b45666c567942
一部の
multipathd
コマンドには、後にワイルドカードが付いたformat
オプションを含むものがあります。次のコマンドを実行すると、使用できるワイルドカードのリストを表示できます。# multipathd show wildcards multipath format wildcards: %n name %w uuid %d sysfs ...
multipathd
が監視しているマルチパスデバイスを表示します。ワイルドカードを使用して、表示されるフィールドを指定します。# multipathd show maps format "%n %w %d %s" name uuid sysfs vend/prod/rev mpathc 360a98000324669436c2b45666c567942 dm-0 NETAPP,LUN
multipathd
が監視しているパスを表示します。ワイルドカードを使用して、表示されるフィールドを指定します。# multipathd show paths format "%n %w %d %s" target WWNN uuid dev vend/prod/rev 0x50001fe1500d2250 3600508b4001080520001e00011700000 sdb HP,HSV210
データを raw 形式で表示します。
# multipathd show maps raw format "%n %w %d %s" mpathc 360a98000324669436c2b45666c567942 dm-0 NETAPP,LUN
raw 形式ではヘッダーは出力されず、フィールドがパッディングされていないため、列とヘッダーが調整されていません。このため、出力はスクリプトで使いやすくなります。
関連情報
-
multipathd
(8) の man ページ
第8章 ストレージデバイスの削除
実行中のシステムからストレージデバイスを安全に削除できるので、システムメモリーのオーバーロードやデータ損失を防ぐことができます。
前提条件
I/O フラッシュ中にシステムメモリーの読み込みが増加するため、ストレージデバイスを削除する前に、システムのメモリーが十分にあることを確認する必要がある。次のコマンドを使用して、システムの現在のメモリー負荷および空きメモリーを表示する。
# vmstat 1 100 # free
Red Hat では、以下のシステムでのストレージデバイスの削除は推奨していない。
- 空きメモリーが合計メモリーの 5 % 未満 (サンプル 100 件の内 10 件以上)。
-
スワップが有効になっている (
vmstat
コマンドの出力でsi
とso
のコラムが 0 以外の値)。
8.1. ストレージデバイスの安全な削除
稼働中のシステムからストレージデバイスを安全に取り外すには、上から下へのアプローチが必要です。アプリケーションやファイルシステムなどの最上位層から始め、物理デバイスなどの最下位層に向かって作業を進めます。
ストレージデバイスは複数の方法で使用でき、物理デバイスの上層に別の仮想設定を指定できます。例えば、デバイスの複数のインスタンスをマルチパスデバイスにグループ化したり、RAID の一部にしたり、LVM グループの一部にしたりすることが可能です。さらに、デバイスはファイルシステムを介してアクセスすることもできるし、raw デバイスのように直接アクセスすることもできます。
上から下へのアプローチを用いながら、次のことを確認する必要があります。
- 削除したいデバイスが使用中でないこと
- デバイスへの保留中の I/O がすべてフラッシュされる
- オペレーティングシステムがストレージデバイスを参照していない
8.2. ブロックデバイスと関連メタデータの削除
実行中のシステムからブロックデバイスを安全に削除するには、システムメモリーのオーバーロードとデータ損失を防ぐために、最初にブロックデバイスからメタデータを削除する必要があります。ファイルシステムから始めて、スタック内の各レイヤーに対処し、ディスクに進みます。これらのアクションにより、システムが不整合な状態になるのを防ぎます。
削除するデバイスのタイプに応じて異なる特定のコマンドを使用します。
-
lvremove
、vgremove
、およびpvremove
は LVM に固有です。 -
ソフトウェア RAID の場合、
mdadm
を実行してアレイを削除します。詳細は、RAID の管理 を参照してください。 - LUKS を使用して暗号化されたブロックデバイスの場合、特定の追加手順があります。次の手順は、LUKS を使用して暗号化されたブロックデバイスでは機能しません。詳細は、LUKS を使用したブロックデバイスの暗号化 を参照してください。
SCSI バスを再びスキャンしたり、ここで説明されている手順に従わずにオペレーティングシステムを変更する別のアクションを実行すると、I/O タイムアウトが原因で遅延が発生したり、デバイスやデータが予期せず削除されたりする可能性があります。
前提条件
- ファイルシステム、論理ボリューム、およびボリュームグループを含む既存のブロックデバイススタックがある。
- 削除するデバイスを他のアプリケーションやサービスが使用していないことを確認した。
- 削除するデバイスからデータをバックアップした。
オプション: マルチパスデバイスを削除する必要があり、そのパスデバイスにアクセスできない場合は、次のコマンドを実行してマルチパスデバイスのキューイングを無効にしておく。
# multipathd disablequeueing map multipath-device
無効にすることで、デバイスの I/O が失敗し、デバイスを使用しているアプリケーションがシャットダウンできるようになります。
メタデータを含むデバイスを一度に 1 レイヤーずつ削除することで、ディスクに古い署名が残らないようにします。
手順
ファイルシステムをアンマウントします。
# umount /mnt/mount-point
ファイルシステムを削除します。
# wipefs -a /dev/vg0/myvol
注記/etc/fstab
ファイルにエントリーを追加して、ファイルシステムとマウントポイントの間の永続的な関連付けを作成した場合は、この時点で/etc/fstab
を編集してそのエントリーを削除する必要もあります。削除するデバイスのタイプに応じて、次の手順に進みます。
ファイルシステムを含む論理ボリューム (LV) を削除します。
# lvremove vg0/myvol
ボリュームグループ (VG) に他の論理ボリュームが残っていない場合は、デバイスを含む VG を安全に削除できます。
# vgremove vg0
物理ボリューム (PV) メタデータを PV デバイスから削除します。
# pvremove /dev/sdc1
# wipefs -a /dev/sdc1
PV が含まれていたパーティションを削除します。
# parted /dev/sdc rm 1
デバイスを完全にワイプする場合にのみ、次の手順に従います。
パーティションテーブルを削除します。
# wipefs -a /dev/sdc
デバイスを物理的に取り外す場合にのみ、次の手順に従います。
マルチパスデバイスを削除する場合は,次のコマンドを実行します。
デバイスへの全パスを表示します。
# multipath -l
このコマンドの出力は、後のステップで必要になります。
I/O をフラッシュして、マルチパスデバイスを削除します。
# multipath -f multipath-device
デバイスがマルチパスデバイスとして設定されていない場合や、デバイスがマルチパスデバイスとして設定されていて、過去に I/O を個別のパスに渡している場合は、未処理の I/O を、使用されている全デバイスパスにフラッシュします。
# blockdev --flushbufs device
この操作は、
umount
コマンドまたはvgreduce
コマンドで I/O がフラッシュされないデバイスに直接アクセスする場合に重要になります。SCSI デバイスを取り外す場合は、以下のコマンドを実行します。
-
システム上のアプリケーション、スクリプト、またはユーティリティーで、
/dev/sd
、/dev/disk/by-path
、またはmajor:minor
番号など、デバイスのパスベースの名前への参照をすべて削除します。参照を削除することで、今後追加される別のデバイスが現在のデバイスと混同されないようにします。 SCSI サブシステムからデバイスへの各パスを削除します。
# echo 1 > /sys/block/device-name/device/delete
デバイスが以前にマルチパスデバイスとして使用されていた場合、
device-name
は、multipath -l
コマンドの出力からの内容に置き換えます。
-
システム上のアプリケーション、スクリプト、またはユーティリティーで、
- 稼働中のシステムから物理デバイスを削除します。このデバイスを削除しても、他のデバイスへの I/O は停止しないことに注意してください。
検証
削除したデバイスが
lsblk
コマンドの出力に表示されないことを確認します。出力例を以下に示します。# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 5G 0 disk sr0 11:0 1 1024M 0 rom vda 252:0 0 10G 0 disk |-vda1 252:1 0 1M 0 part |-vda2 252:2 0 100M 0 part /boot/efi `-vda3 252:3 0 9.9G 0 part /
関連情報
-
multipath (8)
、pvremove (8)
、vgremove (8)
、lvremove (8)
、wipefs (8)
、parted (8)
、blockdev (8)
、およびumount (8)
man ページ。
第9章 DM Multipath のトラブルシューティング
マルチパス設定の実装に問題がある場合は、さまざまな項目を確認できます。マルチパス設定の反応が遅かったり、機能しない場合は、以下の問題が原因として考えられます。
- マルチパスデーモンが実行していない
-
マルチパス設定の実装に問題がある場合は、DM Multipath の設定 の説明に従って、
multipathd
デーモンが実行されていることを確認してください。マルチパスが設定されているデバイスを使用するには、multipathd
デーモンを実行しておく必要があります。 queue_if_no_path
機能に関する問題-
マルチパスデバイスが
features "1 queue_if_no_path"
オプションで設定されている場合は、1 つ以上のパスが復元されるまで、I/O を発行するすべてのプロセスがハングアップします。
9.1. queue_if_no_path 機能に関する問題のトラブルシューティング
マルチパスデバイスが features "1 queue_if_no_path"
オプションで設定されている場合は、1 つ以上のパスが復元されるまで、I/O を発行するすべてのプロセスがハングアップします。これを回避するには、/etc/multipath.conf
ファイルに no_path_retry N
パラメーターを設定します (N はシステムでパスを再試行する回数に置き換えます)。
上記の問題なしで features "1 queue_if_no_path"
オプションを使用する場合は、すべてのパスが使用できない特定の LUN に対して、実行時にキューイングポリシーを無効にすることができます。
手順
キューイングを無効にします。
特定のデバイスの場合:
# multipathd disablequeueing map device
すべてのデバイスの場合:
# multipathd disablequeueing maps
キューイングを無効にすると、
multipathd
を再起動または再読み込みするまで、無効のままになります。
キューイングを以前の値にリセットします。
特定のデバイスの場合:
# multipathd restorequeueing map device
すべてのデバイスの場合:
# multipathd restorequeueing maps
9.2. multipathd 対話式コンソールでトラブルシューティング
multipathd -k
コマンドは、multipathd
デーモンに対する対話式のインターフェイスです。このコマンドを実行すると対話式のマルチパスコンソールが立ち上がります。このコマンドを実行した後、help
を入力すると、利用可能なコマンドのリストが表示され、Ctrl+D を押すと終了できます。
multipathd
対話型コンソールを使用して、システムで発生した問題のトラブルシューティングを行います。
手順
コンソールを終了する前に、デフォルト値を含むマルチパス設定を表示します。
# multipathd -k multipathd> show config multipathd> Ctrl+D
マルチパスが
multipath.conf
ファイルへの変更をすべて反映するようにします。# multipathd -k multipathd> reconfigure multipathd> Ctrl+D
パスチェッカーが正常に動作していることを確認します。
# multipathd -k multipathd> show paths multipathd> Ctrl+D
また、対話型コンソールを起動せずに、コマンドラインから直接 1 つの
multipathd
対話型コマンドを実行することも可能です。たとえば、マルチパスがmultipath.conf
ファイルへの変更をすべて反映することを確認するには、次のコマンドを実行します。# multipathd reconfigure
第10章 eh_deadline を使用したストレージエラーからの回復における最大時間の設定
障害が発生した SCSI デバイスを復旧するのに許容できる最大時間を設定できます。この設定は、ストレージハードウェアが不具合により応答しなくなっても、I/O 応答時間を保証します。
10.1. eh_deadline パラメーター
SCSI エラー処理 (EH) メカニズムは、障害が発生した SCSI デバイスでエラーからの復旧の実行を試行します。SCSI ホストオブジェクト eh_deadline
パラメーターでは、復旧時間の最大量を設定できます。設定した時間が過ぎると、SCSI EH は、ホストバスアダプター (HBA) 全体を停止してリセットします。
eh_deadline
を使用すると、以下のいずれかの時間を短縮できます。
- エラーのあるパスのシャットオフ
- パスの切り替え
- RAID スライスの無効化
eh_deadline
が過ぎると、SCSI EH は HBA をリセットします。これは、エラーが発生しているものだけでなく、HBA 上のすべてのターゲットパスに影響します。一部の冗長パスがその他の理由により利用できない場合は、I/O エラーが発生する可能性があります。すべてのターゲットでマルチパスが設定されている場合にのみ、eh_deadline
を有効にします。また、マルチパスデバイスが完全に冗長でない場合は、no_path_retry
がパスの回復を可能にするのに十分な大きさに設定されていることを確認する必要があります。
eh_deadline
パラメーターの値は秒単位で指定されます。デフォルト設定は off
で、時間制限が無効になり、すべてのエラー復旧が行われるようになります。
eh_deadline が便利なシナリオ
多くの場合、eh_deadline
を有効にする必要はありません。eh_deadline
を使用すると、特定のシナリオで役立つ場合があります。たとえば、ファイバーチャネル (FC) スイッチとターゲットポート間でリンクが失われ、HBA が Registered State Change Notifications (RSCN) を受信しない場合などです。このような場合、I/O 要求やエラーからの復旧コマンドは、エラーに遭遇することなく、すべてタイムアウトになります。この環境で eh_deadline
を設定すると、リカバリー時間に上限が課せられます。これにより、DM Multipath により、利用できる別のパスで不具合の発生した I/O の再試行が可能になります。
以下の条件下では、eh_deadline
パラメーターは、これ以上のメリットをもたらしません。その理由は、DM Multipath の再試行を可能にする I/O とエラー復旧コマンドがすぐに失敗するためです。
- RSCN が有効になっている場合
- HBA が利用できなくなっているリンクを登録しない場合
10.2. eh_deadline パラメーターの設定
この手順では、SCSI を復旧する最大時間を制限する eh-daedline
パラメーターの値を設定します。
手順
eh_deadline
は、以下のいずれかの方法で設定できます。multpath.conf
ファイルのdefaults
セクションmultpath.conf
ファイルの defaults セクションから、eh_deadline
パラメーターを必要な秒数に設定します。# eh_deadline 300
注記RHEL 8.4 以降、
multpath.conf
ファイルの defaults セクションを使用してeh_deadline
パラメーターを設定することが推奨されます。このメソッドで
eh_deadline
パラメーターをオフにするには、eh_deadline
をoff
に設定します。sysfs
/sys/class/scsi_host/host<host-number>/eh_deadline
ファイルに秒数を書き込みます。たとえば、SCSI ホスト 6 のsysfs
を介してeh_deadline
パラメーターを設定するには、次のようにします。# echo 300 > /sys/class/scsi_host/host6/eh_deadline
このメソッドで
eh_deadline
パラメーターをオフにするには、echooff
を使用します。カーネルパラメーター
すべての SCSI HBA のデフォルト値は
scsi_mod.eh_deadline
カーネルパラメーターを使用して設定します。# echo 300 > /sys/module/scsi_mod/parameters/eh_deadline
このメソッドで
eh_deadline
パラメーターをオフにするには、echo-1
を使用します。