25.12. ストレージの相互接続のスキャン
特定のコマンドでは、1 つ以上の相互接続をリセット、スキャン、またはその両方を行うことができます。これにより、1 回の操作で複数のデバイスを追加および削除する可能性があります。このタイプのスキャンは、I/O 操作のタイムアウト時に遅延が発生したり、デバイスが予想外に削除される可能性があるため、混乱を招く可能性があります。Red Hat では、必要な場合にのみ、相互接続スキャンを使用することを推奨しています。ストレージの相互接続をスキャンする場合は、次の制限に注意してください。
- 影響を受ける相互接続のすべての I/O は、手順を実行する前に一時停止してフラッシュする必要があります。また、I/O を再開する前にスキャンの結果を確認する必要があります。
- デバイスの取り外しと同様に、システムのメモリーが逼迫している場合は、相互接続スキャンを行わないことが推奨されます。メモリー不足のレベルを確認するには、vmstat 1 100 コマンドを実行します。(サンプル 100 件の内 11 件以上で) 空きメモリーが合計メモリーの 5 % 未満の場合、相互接続スキャンは推奨されません。また、スワッピングがアクティブな場合( vmstat 出力のゼロ以外の
si
列およびso
列)は、相互接続スキャンは推奨されません。free コマンドは、合計メモリーを表示することもできます。
以下のコマンドを使用すると、ストレージの相互接続をスキャンできます。
- echo "1" > /sys/class/fc_host/hostN/issue_lip
- (N をホスト番号に置き換えます。)この操作は、ループ初期化プロトコル( LIP) を実行し、相互接続をスキャンして、現在バス上にあるデバイスを反映するように SCSI レイヤーを更新します。基本的に、LIP はバスのリセットであり、デバイスの追加と削除を引き起こします。この手順は、ファイバーチャネル相互接続に新しい SCSI ターゲットを設定する場合に必要です。issue_lip は非同期操作であることに注意してください。コマンドは、スキャン全体が完了する前に完了する可能性があります。issue_lip の終了タイミングを決定するには、
/var/log/messages
を監視する必要があります。lpfc
ドライバー、qla2xxx
ドライバー、およびbnx2fc
ドライバーは、issue_lip をサポートします。Red Hat Enterprise Linux の各ドライバーがサポートする API 機能に関する詳細は、表25.1「ファイバーチャネル API の機能」 を参照してください。 /usr/bin/rescan-scsi-bus.sh
/usr/bin/rescan-scsi-bus.sh
スクリプトは、Red Hat Enterprise Linux 5.4 で導入されました。デフォルトでは、このスクリプトは、システムの SCSI バスをすべてスキャンし、SCSI レイヤーを更新して、バスの新しいデバイスを反映します。このスクリプトでは、デバイスの削除や LIP の実行を許可する追加オプションが提供されます。既知の問題など、このスクリプトの詳細は、「rescan-scsi-bus.sh を使用した論理ユニットの追加/削除」 を参照してください。- echo "- - -" > /sys/class/scsi_host/hosth/scan
- これは、「ストレージデバイスまたはパスの追加」 で説明されているように、ストレージデバイスまたはパスを追加するコマンドと同じです。ただし、この場合は、チャネル番号、SCSI ターゲット ID、および LUN の値がワイルドカードに置き換わります。識別子とワイルドカードの組み合わせは自由なので、必要なだけ具体的に、あるいは幅広くコマンドを作成することができます。この手順では、LUN を追加しますが、削除することはありません。
- modprobe --remove driver-name, modprobe driver-name
- modprobe --remove driver-name コマンドの後に modprobe driver-nameコマンドを実行すると、ドライバー によって制御されるすべての相互接続の状態が完全に再初期化されます。かなり極端ですが、説明されているコマンドを使用することは、特定の状況で適切な場合があります。コマンドを使用して、たとえば、異なるモジュールパラメーター値でドライバーを再起動できます。