24.11. ストレージの相互接続のスキャン

コマンドによっては、1 つまたは複数の相互接続のリセットやスキャン (または両方) を実行でき、1 つの操作で複数のデバイスを追加および削除する可能性があります。このようなスキャンは、I/O 操作のタイムアウト中に遅延が発生する原因となり、デバイスが予期せず削除される可能性があるため、大きな混乱が生じる可能性があります。Red Hat は、必要な場合のみ相互接続のスキャンを使用することを推奨します。ストレージの相互接続をスキャンするときは以下の制約に注意してください。
  • 手順を実行する前に、対象となる相互接続上の I/O はすべて一時停止してフラッシュする必要があります。また、スキャン結果の確認は I/O を再開する前に行ってください。
  • デバイスの削除と同様、システムがメモリー不足になっている状態での相互接続スキャンは推奨されません。メモリーのレベルを確認するには vmstat 1 100 コマンドを実行します。100 件中 10 件を超えるサンプルでメモリー空き領域がメモリーの合計の 5% 未満である場合は、相互接続のスキャンは推奨されません。また、スワップがアクティブである場合 (vmstat 出力の siso の欄がゼロ以外の値である場合)、相互接続のスキャンは推奨されません。free コマンドを使用してメモリーの合計容量を表示することもできます。
以下のコマンドを使用すると、ストレージの相互接続をスキャンできます。
echo "1" > /sys/class/fc_host/host/issue_lip
Loop Initialization Protocol (LIP) を実行してから相互接続をスキャンし、現在バス上にあるデバイスを反映するよう SCSI 層を更新します。LIP は基本的にはバスのリセットであり、デバイスの追加や削除が行われます。この手順は、ファイバーチャネルの相互接続で新しい SCSI ターゲットを設定するために必要になります。
issue_lip は非同期の操作であることに注意してください。このコマンドはスキャン全体が終了する前に完了することがあります。/var/log/messages を監視して issue_lip の完了を判断する必要があります。
lpfcqla2xxx、および bnx2fc ドライバーは issue_lip をサポートします。Red Hat Enterprise Linux の各ドライバーによってサポートされる API 機能については 表24.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 コマンドを実行すると、ドライバーによって制御されるすべての相互接続の状態が完全に再初期化されます。これは強硬手段ではありますが、場合によっては適切な処置であることがあります。たとえば、このコマンドを使用すると異なるモジュールパラメーターの値でドライバーを再起動することができます。