Show Table of Contents
25.19.2.
25.19.2.2.
このページには機械翻訳が使用されている場合があります (詳細はこちら)。
25.19. リンク切れ動作の修正
本セクションでは、ファイバーチャネルまたは iSCSI のプロトコルのいずれかを使用しているデバイスに関するリンク切れの動作を修正する方法について説明します。
25.19.1. ファイバーチャネル
ドライバーがトランスポートの
dev_loss_tmo
コールバックを実装している場合、トランスポートの問題が検出されるとリンクを経由したデバイスへのアクセス試行がブロックされます。デバイスがブロックされているかどうかを確認するには次のコマンドを実行します。
$ cat /sys/block/device/device/state
デバイスがブロックされている場合は
blocked
が返されます。通常通りにデバイスが稼働している場合は running
が返されます。
手順25.15 リモートポートの状態判断
- リモートポートの状態を判別するには、次のコマンドを実行します。
$ cat /sys/class/fc_remote_port/rport-H:B:R/port_state
- リモートポート (およびこのポートを介してアクセスされるデバイス) がブロックされている場合は、このコマンドにより
Blocked
が返されます。通常通りにリモートポートが稼働している場合はOnline
が返されます。 dev_loss_tmo
秒以内に問題が解決されない場合、リモートポートおよびデバイスのブロックが解除され、そのデバイス上で実行されているすべての I/O (およびそのデバイスに送信される新規 I/O すべて) が失敗します。
手順25.16 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
は復元されます。
25.19.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
などがあります。これらについては次のセクションで説明します。
25.19.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
25.19.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
に対する新たな設定を加える場合、これを徹底的にテストしてからミッションクリティカルなシステムに適用することが推奨されます。
iSCSI および 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 Multipathfast_io_fail_tmo
オプションはreplacement_timeout
よりも優先されます。Red Hat は、DM Multipath が管理するデバイスでreplacement_timeout
を使用してrecovery_tmo
を上書きすることは推奨していません。これは、DM Multipath が常にrecovery_tmo
をmultipathd
サービスが再読み込みするためです。
25.19.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 の設定」 を参照してください。
このページには機械翻訳が使用されている場合があります (詳細はこちら)。