Show Table of Contents
24.18.2.
24.18.2.2.
24.18. リンク切れ動作の修正
本セクションでは、ファイバーチャネルまたは iSCSI のプロトコルのいずれかを使用しているデバイスに関するリンク切れの動作を修正する方法について説明します。
24.18.1. ファイバーチャネル
ドライバーがトランスポートの
dev_loss_tmo コールバックを実装している場合、トランスポートの問題が検出されるとリンクを経由したデバイスへのアクセス試行がブロックされます。デバイスがブロックされているかどうかを確認するには次のコマンドを実行します。
$ cat /sys/block/device/device/state
デバイスがブロックされている場合は
blocked が返されます。通常通りにデバイスが稼働している場合は running が返されます。
手順24.13 リモートポートの状態判断
- リモートポートの状態を判別するには、次のコマンドを実行します。
$ cat /sys/class/fc_remote_port/rport-H:B:R/port_state
- リモートポート (およびこのポートを介してアクセスされるデバイス) がブロックされている場合は、このコマンドにより
Blockedが返されます。通常通りにリモートポートが稼働している場合はOnlineが返されます。 dev_loss_tmo秒以内に問題が解決されない場合、リモートポートおよびデバイスのブロックが解除され、そのデバイス上で実行されているすべての I/O (およびそのデバイスに送信される新規 I/O すべて) が失敗します。
手順24.14 dev_loss_tmo の変更
dev_loss_tmoの値を変更する場合は、ファイルに対して必要な値のechoを実行します。たとえば、dev_loss_tmoを 30 秒に設定するには、以下を実行します。$ echo 30 > /sys/class/fc_remote_port/rport-H:B:R/dev_loss_tmo
dev_loss_tmo の詳細は、「ファイバーチャネル API」 を参照してください。
リンク切れが
dev_loss_tmo の値を超える場合、scsi_device および sdN デバイスは削除されます。通常、ファイバーチャネルのクラスはデバイスをそのままの状態にします。すなわち、/dev/sdx は、/dev/sdx のままになります。これは、ターゲットバインディングがファイバーチャネルドライバーによって保存されるためであり、ターゲットポートが返されると、SCSI アドレスが忠実に再作成されます。ただし、これは常に保証される訳ではなく、LUN のストレージ内のボックス設定に追加の変更が行なわれない場合にのみ、sdx は復元されます。
24.18.2. dm-multipath を実装している iSCSI の設定
dm-multipath を実装している場合、コマンドをマルチパスレイヤーにただちに委ねるよう iSCSI タイマーを設定することをお勧めします。次の行を /etc/multipath.conf ファイル内にある device { の下にネストさせます。
features "1 queue_if_no_path"
これにより、
dm-multipath 層ですべてのパスが失敗すると I/O エラーが再試行され、キューに入れられます。
SAN に問題がないことを監視するため iSCSI タイマーをさらに調整する必要性が生じる場合があります。設定できる iSCSI タイマーには NOP-Out の間隔、 NOP-Out のタイムアウト および
replacement_timeout などがあります。これらについては次のセクションで説明します。
24.18.2.1. NOP-Out インターバル/タイムアウト
SAN に関する問題の監視を支援するために、iSCSI レイヤーは各ターゲットに NOP-Out 要求を送信します。NOP-Out 要求がタイムアウトになる場合には、iSCSI レイヤーは実行中のコマンドを停止して、SCSI レイヤーに対し、可能な時点にそれらのコマンドを再度キューに入れるように指示することで対応します。
dm-multipath が使用されている場合、SCSI レイヤーが実行中のコマンドを停止して、それらのコマンドをマルチパスレイヤーに委ねます。次に、マルチパスレイヤーは別のパス上でこれらのコマンドを再試行します。dm-multipath が使用されていない 場合には、これらのコマンドは 5 回まで再試行されてから完全に停止します。
NOP-Out 要求のインターバル (間隔) はデフォルトで 10秒です。これを調節するには、
/etc/iscsi/iscsid.conf を開いて以下の行を編集します。
node.conn[0].timeo.noop_out_interval = [interval value]
インターバルが設定されると、iSCSI レイヤーはその [interval value] 秒ごとに各ターゲットに対して NOP-Out 要求を送信します。
デフォルトでは、NOP-Out 要求は 10 秒[9] でタイムアウトになります。これを調節するには、
/etc/iscsi/iscsid.conf を開いて以下の行を編集します。
node.conn[0].timeo.noop_out_timeout = [timeout value]
これは、iSCSI レイヤーが [timeout value] 秒後に NOP-Out 要求をタイムアウトさせるように設定します。
SCSI エラーハンドラー
SCSI エラーハンドラーが実行中の場合、あるパス上で実行中のコマンドは、そのパス上で NOP-Out 要求がタイムアウトになってもすぐには停止しません。その代わりに、これらのコマンドは
replacement_timeout 秒の 経過後 に停止します。replacement_timeout の詳細は、「replacement_timeout」 を参照してください。
SCSI エラーハンドラーが実行中であるかどうかを確認するには、以下を実行します。
# iscsiadm -m session -P 3
24.18.2.2. replacement_timeout
replacement_timeout は、iSCSI レイヤーが実行中のコマンドを停止する前にタイムアウトになっているパス/セッションが再確立するまで待機する時間の長さを制御します。デフォルトの replacement_timeout 値は 120 秒です。
replacement_timeout を調整するには、/etc/iscsi/iscsid.conf を開いて以下の行を編集します。
node.session.timeo.replacement_timeout = [replacement_timeout]
/etc/multipath.conf 内の 1 queue_if_no_path オプションは、コマンドをマルチパスレイヤーにすぐに委ねるように iSCSI タイマーを設定します (「dm-multipath を実装している iSCSI の設定」を参照)。この設定は、I/O エラーがアプリケーションに伝搬することを防ぐので、replacement_timeout は 15 秒から 20 秒に設定するのが適切でしょう。
replacement_timeout を低めに設定すると、(NOP-Out タイムアウト状態で) I/O は新しいパスにすぐに送信され、実行されます。その際に iSCSI レイヤーは停止したパス/セッションを再確立するよう試行します。すべてのパスがタイムアウトになるとマルチパスとデバイスマッパーレイヤーは、/etc/iscsi/iscsid.conf ではなく、/etc/multipath.conf の設定に基づいて内部的に I/O をキューに入れます。
重要
検討しているポイントがフェイルオーバーのスピードかセキュリティーかなどを問わず、
replacement_timeout の推奨される値は、他の要素によって決まります。これらの要素には、ネットワーク、ターゲット、およびシステムのワークロードなどが含まれます。そのため、replacements_timeout に対する新たな設定を加える場合、これを徹底的にテストしてからミッションクリティカルなシステムに適用することが推奨されます。
24.18.3. iSCSI のルート
iSCSI ディスクから直接ルートパーティションにアクセスする場合は、iSCSI タイマーを設定し、iSCSI レイヤーからパスまたはセッションの再確立が複数回試行されるようにします。また、コマンドが即座に SCSI レイヤーのキューに置かれてはなりません。これは
dm-multipath を実装する場合に行う作業とは逆になります。
まず NOP-Out を無効にします。NOP-Out の間隔とタイムアウトをいずれもゼロにすると NOP-Out は無効になります。これを設定するには、
/etc/iscsi/iscsid.conf ファイルを開いて次のように編集します。
node.conn[0].timeo.noop_out_interval = 0 node.conn[0].timeo.noop_out_timeout = 0
上記に合わせて、
replacement_timeout には大きめの数値を設定します。これによりシステムのパスやセッションの再確立に要する待機時間が長くなります。replacement_timeout を調整するには、/etc/iscsi/iscsid.conf ファイルを開いて次のように編集します。
node.session.timeo.replacement_timeout = replacement_timeout
/etc/iscsi/iscsid.conf の設定が終了したら、影響を受けるストレージの再検出を行う必要があります。再検出によってシステムは /etc/iscsi/iscsid.conf で設定した新しい値を読み込み、その値を使用できるようになります。iSCSI デバイスの検出方法については、「iSCSI 相互接続のスキャン」 を参照してください。
特定セッションのタイムアウトの設定
特定セッションに対してタイムアウトを設定し、それを非永続的にすることができます (
/etc/iscsi/iscsid.conf ファイルを使用しない方法)。これを実行するには、次のコマンドを実行します (状況に応じて変数を変更してください)。
# iscsiadm -m node -T target_name -p target_IP:port -o update -n node.session.timeo.replacement_timeout -v $timeout_value
重要
ルートパーティションへのアクセスを必要とする iSCSI セッションには、本セクションに記載されている設定を行うことを推奨します。他のタイプのストレージへのアクセスを必要とする iSCSI セッション (つまり
dm-multipath を使用するシステムの場合) については、「dm-multipath を実装している iSCSI の設定」 を参照してください。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.