Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.5. 設定ファイルの devices セクション

multipath.conf 設定ファイルの devices セクションでストレージデバイスごとに設定できる属性を 表4.3「デバイス属性」 に示します。そのデバイスを含むパスでは、multipath.conf ファイルの multipaths セクションに指定されている属性で上書きされない限り、この属性が使用されます。この属性は、multipath.conf ファイルの defaults セクションに設定されている属性より優先されます。
マルチパスに対応しているデバイスの多くは、デフォルトでマルチパスの設定に含まれています。対応デバイスなど、デフォルトの設定値は、次のいずれかのコマンドを実行して確認してください。
# multipathd show config
# multipath -t 
おそらく、こうしたデバイスの値を修正する必要はありませんが、必要が生じた場合は、設定ファイルにエントリーを追加すればデフォルト値を上書きできます。multipathd show config コマンドが表示する、目的のデバイスのデフォルト値をコピーして、変更したい値に書き換えることができます。
設定ファイルのこのセクションに、デフォルトでは自動で設定されないデバイスを追加する場合は、vendor パラメーターおよび product パラメーターを設定する必要があります。値は /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_policymultibus に設定することもできます。表4.3「デバイス属性」 で説明されているように、設定が必要となる可能性があるパラメーターは、no_path_retry および rr_min_io です。
デバイスが active/passive であるにも関わらず、I/O を持つパスが自動的に passive パスに切り替えられる場合は、チェッカーの関数を、I/O をパスに送信しない関数に変更し、それが正しく動作するかどうかを検証する必要があります (これを行わないとデバイスはフェイルオーバーし続けます)。つまり、ほとんどの場合は、path_checkertur に設定するということになります。この設定は、Test Unit Ready コマンドに対応するすべての SCSI デバイスで機能します。Test Unit Ready コマンドは大半のデバイスで対応しています。
パスの切り替えに特殊なコマンドを必要とするデバイスにマルチパスを設定するには、ハードウェアハンドラーカーネルモジュールが必要になります。現在、利用可能なハードウェアハンドラーは emc です。このハンドラーが目的のデバイスに使用できない場合は、そのデバイスにマルチパスを設定できない可能性があります。

表4.3 デバイス属性

属性説明
vendor device 属性が適用されるストレージデバイスのベンダー名 (例: COMPAQ) を指定します。
product device 属性が適用されるストレージデバイスの製品名 (例: HSV110 (C)COMPAQ) を指定します。
revision ストレージデバイスの製品リビジョン識別子を指定します。
product_blacklist 製品別にデバイスをブラックリスト指定するのに使用する正規表現を指定します。
alias_prefix デフォルトの "mpath" の代わりに、このデバイスタイプに使用する user_friendly_names 接頭辞。
hardware_handler
パスグループの切り替えや I/O エラーの処理時に、ハードウェア固有の動作を行うのに使用するモジュールを指定します。使用できる値を以下に示します。
1 emc: EMC ストレージアレイ用のハードウェアハンドラーです。
1 alua: SCSI-3 ALUA アレイ用のハードウェアハンドラーです。
1 hp_sw: Compaq/HP コントローラー用のハードウェアハンドラーです。
1 rdac: LSI/Engenio RDAC コントローラー用のハードウェアハンドラーです。
path_grouping_policy
未指定のマルチパスに適用する、デフォルトのパスグルーピングポリシーを指定します。使用できる値を以下に示します。
failover = 優先グループごとに 1 つのパス
multibus = 1 つの優先グループで有効なすべてのパス
group_by_serial = 検出されたシリアル番号ごとに 1 つの優先グループ
group_by_prio = パス優先値ごとに 1 つの優先グループ
group_by_node_name = ターゲットノード名ごとに 1 つの優先グループ
path_selector
次回の I/O 動作に使用するパスを決定する、デフォルトのアルゴリズムを指定します。使用できる値を以下に示します。
round-robin 0: パスグループ内の全てのパスをループスルーし、それぞれのパスに同負荷の I/O を送ります。
queue-length 0: 未処理の I/O 要求数が最も少ないパスに、次の I/O 群を送ります。
service-time 0: 推定処理時間が最も短いパスに、次の I/O 群を送ります。推定処理時間は、各パスに対する未処理の I/O の合計サイズを、その相対スループットで割ることにより求められます。
path_checker
パスの状態を判断するのに使用するデフォルトのメソッドを指定します。使用できる値を以下に示します。
readsector0: デバイスの最初のセクターを読み取ります。
tur: デバイスに対して TEST UNIT READY を発行します。
emc_clariion: EMC Clariion 固有の EVPD ページ 0xC0 の問い合わせを行い、パスを特定します。
hp_sw: Active/Standby のファームウェアを搭載した HP ストレージアレイのパスの状態をチェックします。
rdac: LSI/Engenio RDAC ストレージコントローラーのパスの状態をチェックします。
directio: 直接 I/O を使用する最初のセクターを読み取ります。
features
マルチパスデバイスの追加デフォルト機能です。形式は "number_of_features_plus_arguments feature1 ..." となります。
features に使用できる値:
queue_if_no_path: no_path_retryqueue に設定するのと同じです。この機能の使用時に発生する可能性がある問題については 「queue_if_no_path 機能に関する問題」 を参照してください。
retain_attached_hw_handler: SCSI 層によりハードウェアハンドラーがパスデバイスに接続されている状態で、このパラメーターを yes に設定した場合は、multipath.conf ファイルで指定している hardware_handler の使用をデバイスに強制しません。SCSI 層によるハードウェアハンドラーの接続が行われていない場合は、通常通り、マルチパスで設定されているハードウェアハンドラーの使用が継続されます。
pg_init_retries n: 失敗するまでパスグループの初期化を最高 n 回再試行します。ここで、1 <= n <= 50 です。
pg_init_delay_msecs n: パスグループの初期化の再試行を、n ミリ秒間隔で待機します。ここで、0 <= n <= 60000 です。
prio
パスの優先値を得るために呼び出すデフォルトの関数を指定します。例えば、SPC-3 の ALUA ビットは悪用可能な prio 値を提供します。使用できる値を以下に示します。
const: すべてのパスに優先度 1 を設定します。
emc: EMC アレイのパス優先度を生成します。
alua: SCSI-3 ALUA 設定に基づいてパス優先度を生成します。Red Hat Enterprise Linux 7.3 以降、デバイス設定で prio "alua exclusive_pref_bit" を指定すると、マルチパスが pref ビットセットのパスのみを含むパスグループを作成し、このパスグループに最高の優先度を与えるようになります。
ontap: NetApp アレイのパスの優先度を生成します。
rdac: LSI/Engenio RDAC コントローラーのパスの優先度を生成します。
hp_sw: active/standby モードにおける Compaq/HP コントローラー用パスの優先度を生成します。
hds: Hitachi HDS Modular ストレージアレイのパスの優先度を生成します。
failback
パスグループのフェイルバックを管理します。
immediate の値を設定すると、active パスを含んでいる最も優先度の高いパスグループに直ちにフェイルバックします。
manual の値を指定すると、フェイルバックはすぐに行われず、オペレーター介入がある場合のみにフェイルバックします。
followover の値を指定すると、パスグループの最初のパスが active になったときに自動フェイルバックを実行します。これにより、別のノードがフェイルオーバーを要求しているときは、ノードが自動的にフェイルバックしなくなります。
0 以上の数値で、フェイルバックの秒単位の遅延を指定します。
rr_weight priorities に設定すると、次のパスを選択するために selector を呼び出すまで、rr_min_io リクエストをパスに送信する代わりに、送信するリクエスト数が、prio 関数のように、パスの優先度の rr_min_io 倍で決められます。uniform に設定すると、すべてのパスの重みが等しくなります。
no_path_retry
障害の発生したパスの使用を何回試行してからキュー待ちを無効にするか、その回数を指定します。
fail を指定すると、キュー待ちはせず直ちに失敗します。
queue を指定すると、パスが修復されるまでキュー待ちは停止しません。
rr_min_io 現在のパスグループで、次のパスに切り替えるまでにルーティングする I/O 要求数を指定します。この設定は、2.6.31 より前のカーネルを実行しているシステムにのみ適用されます。2.6.31 以降のシステムには、rr_min_io_rq を使用してください。デフォルト値は 1000 です。
rr_min_io_rq 現在のパスグループで、次のパスに切り替えるまでにルーティングする I/O 要求数を指定します。要求ベースの device-mapper-multipath を使用しています。2.6.31 より前のバージョンのカーネルを実行しているシステムの場合は rr_min_io を使用してください。デフォルト値は 1 です。
fast_io_fail_tmo FC リモートポートで問題を検出してから、そのリモートポートでデバイスへの I/O が失敗するまでの scsi 層の待機時間 (秒) です。この値は dev_loss_tmo よりも小さくすることをお勧めします。これを off に設定すると、タイムアウトが無効になります。fast_io_fail_tmo オプションは、recovery_tmo および replacement_timeout オプションの値を上書きします。詳細は、「iSCSI および DM Multipath のオーバーライド」 を参照してください。
dev_loss_tmo FC リモートポート上で問題を検出してから、システムから削除されるまでの scsi 層の待機時間 (秒) です。この値を無制限に設定するには 2147483647 秒または 68 年に設定します。
flush_on_last_del yes に設定すると、デバイスへの最後のパスが削除された時点で、multipathd デーモンがキュー待ちを無効にします。
user_friendly_names yes に設定すると、/etc/multipath/bindings ファイルを使った永続的で固有となるエイリアスが、mpathn の形式でマルチパスに割り当てられます。no に設定すると、WWID がマルチパスのエイリアスに使用されます。ただし、設定ファイルの multipaths セクションで指定されるデバイス固有のエイリアスの方が、ここでの設定よりも優先されることになります。デフォルト値は no です。
retain_attached_hw_handler SCSI 層で、ハードウェアハンドラーがパスデバイスに接続されている状態で、このパラメーターを yes に設定した場合は、multipath.conf ファイルで指定している hardware_handler の使用をデバイスに強制しません。SCSI 層によるハードウェアハンドラーの接続が行われていない場合は、通常通り、マルチパスで設定されているハードウェアハンドラーの使用が継続されます。デフォルト値は no です。
detect_prio yes に設定すると、デバイスで ALUA に対応しているかを最初にチェックします。対応している場合は、alua prioritizer をデバイスに割り当てます。デバイスが ALUA に対応していない場合は、通常通り prioritizer の特定を行います。
uid_attribute 固有のパス識別子を与えます。
delay_watch_checks (Red Hat Enterprise Linux Release 7.2 以降) 0 よりも大きい値に設定すると、multipathd デーモンは、指定されたチェック回数の間、有効なパスを監視します。監視されているパスが再び失敗すると、パスが次に有効になったときに、delay_wait_checks で指定された連続的なチェック回数の間保持されるまで使用されません。これにより、信用できないパスがオンラインに戻ったときにすぐに使用されることを防ぐことができます。
delay_wait_checks (Red Hat Enterprise Linux Release 7.2 以降) 0 よりも大きい値に設定すると、オンラインに戻ったデバイスが、delay_watch_checks で指定されたチェック回数内に再び失敗し、次にオンラインに戻るときに、デバイスはマークされ、遅延が発生します。デバイスは、delay_wait_checks で指定されたチェック回数が経過するまで使用されません。
deferred_remove yes に設定すると、multipathd は最終パスデバイスが削除されるときに通常の削除ではなく遅延された削除を行います。これにより、通常の削除が行われ、削除に失敗したときに multipathed デバイスが使用中である場合、デバイスは最終ユーザーがデバイスを終了したときに自動的に削除されます。
skip_kpartx (Red Hat Enterprise Linux Release 7.3 以降) yes に設定すると、kpartx は自動的にデバイスにパーティションを作成しません。これにより、デバイスにパーティションテーブルがある場合でも、パーティションを作成せずにマルチパスデバイスを作成することができます。
max_sectors_kb (Red Hat Enterprise Linux リリース 7.4 およびそれ以降では) マルチパスデバイスの初回アクティベート時の前に、max_sectors_kb デバイスキューパラメーターを、マルチパスデバイスのすべての基礎的なパスで指定された値に設定します。マルチパスデバイスの作成時には、デバイスはパスデバイスから max_sectors_kb 値を継承します。手動でこの値をマルチパスデバイス向けに高めたり、パスデバイス向けにこの値を低くすると、マルチパスデバイスはパスデバイスが許可するよりも大きな I/O 操作を作成する場合があります。max_sectors_kb パラメーターを使用すると、パスデバイス上にマルチパスデバイスを作成する前に容易にこれらの値が設定でき、無効なサイズの I/O 操作が渡されることを回避できます。ユーザーがこのパラメーターを設定しないと、パスデバイスはデバイスドライバーにこれを設定させ、マルチパスデバイスがパスデバイスからこれを継承します。
detect_path_checker (Red Hat Enterprise Linux Release 7.4 以降) yes に設定すると、マルチパスにより、デバイスが ALUA に対応しているかどうかが確認されます。対応している場合は、tur パスチェッカーが自動的に使用されます。対応していない場合は、通常通りに path_checker が選択されます。
all_devs このパラメーターを yes に設定すると、このデバイス設定に指定されたすべてのオプションによって、他のデバイス設定すべてのオプションの値 (設定ファイルの値とデフォルトの値両方) がオーバーライドされます。
all_tg_pt (Red Hat Enterprise Linux 7.6 以上のリリース) このオプションを yes に設定すると、mpathpersist がキーを設定するときに、1 つのホストから 1 つのターゲットポートに登録されたキーを 1 つのホストからすべてのターゲットポート向けとして処理します。1 つのターゲットに 1 つのホストではなく、1 つのホストからすべてのターゲットポートで登録キーを自動的に設定および消去するアレイで mpathpersist を適切に使用するには、yes に設定する必要があります。
マルチパス設定ファイルの device エントリーの例を以下に示します。
#	}
#	device {
#		vendor			"COMPAQ  "
#		product			"MSA1000         "
#		path_grouping_policy	multibus
#		path_checker		tur
#		rr_weight		priorities
#	}
#}
以下の設定は、すべての内蔵デバイス設定に対して no_path_retryfail に設定します。
devices {
	device {
		all_devs yes
		no_path_retry fail
	}
}