1 つの SPARCstorage Array で電源断が発生した場合、次の現象が起こります。
DiskSuite オブジェクトに対して入出力操作を行うと、エラーが生成される。
エラーは、ドライブレベルではなく、スライスレベルで通知される。
ディスクに入出力操作が行われるまで、エラーは通知されない。
影響を受けたデバイスがホットスペアを割り当てた場合、ホットスペアアクティビティが開始されることがある。
「DiskSuite オブジェクトの状態チェック」で説明したように、metastat(1M) コマンドを使用して、これらのイベントの構成を監視しなければなりません。
電源が回復したら、次の操作を実行する必要があります。
エラーの発生したデバイスを metastat で特定する
エラーの発生したサブミラーや RAID5 メタデバイスを有効にする
影響を受けた状態データベースの複製を削除して再作成する
電源が回復したら、metastat コマンドを使用して、エラーの発生したデバイスを特定する。
# metastat ... d10: Trans State: Okay Size: 11423440 blocks Master Device: d20 Logging Device: d15 d20: Mirror Submirror 0: d30 State: Needs maintenance Submirror 1: d40 State: Okay ... d30: Submirror of d20 State: Needs maintenance ... |
metareplace コマンドを使用して、エラーの発生したデバイスをサービスに復帰させる。
# metareplace -e <メタデバイス> <スライス> |
-e オプションは、スライスの状態を「使用可能」状態に移行し、障害の発生したスライスを再同期します。
ホットスペアによって交換されたスライスは、metareplace コマンドを使用して一番最後に交換するデバイスにしてください。ホットスペアを最初に交換すると、これが使用可能になるとすぐに、サブミラー内の他のエラーの発生したスライスと交換されてしまうことがあります。
再同期は、一度にサブミラー (メタデバイス) の 1 つのスライスでしか実行できません。サブミラーのすべてのスライスが電源断による影響を受けた場合、各スライスを別個に交換しなければなりません。1.05G バイトのディスクでは、再同期の実行におよそ 10 分かかります。
サブミラーの数、およびこれらのサブミラーに含まれるスライスの数にもよりますが、再同期には相当な時間が必要なことがあります。1.05G バイトのドライブ 30 個で構成される 1 つのサブミラーでは、終了するのにおよそ 5 時間を要することがあります。5 つのスライスのサブミラーから構成されるような、通常使用される構成の場合は、終了するのにたった 50 分ですむ場合もあります。
電源断の後、影響を受けた SPARCstorage Array シャーシ上の状態データベースの複製は、すべてエラー状態となります。これらの複製は次のリブート時点で再生されますが、削除してから追加して戻せば、手動でサービスに復帰させることができます。
# metadb -d <スライス> # metadb -a <スライス> |
各スライス上で削除された状態データベースの複製の数と同じ数だけ追加することが必要です。1 つの metadb コマンドで、複数の状態データベースの複製を削除できます。1 つの metadb -d で削除された複製を追加して戻すには、metadb -a を何回か呼び出さなければならないこともあります。その理由は、1 つのスライス上に複製のコピーが複数個必要な場合、-c フラグを使用する metadbを 1 回呼び出して追加しなければならないためです。詳細は、metadb(1M) のマニュアルページを参照してください。
状態データベースの複製の障害回復は自動的に実行されないため、SPARCstorage Array がサービスに復帰した直後に、障害回復を手動で実行するのが最も安全です。さもなければ、新しい障害が引き起こされて状態データベースの複製の大半がサービスを提供できなくなり、カーネルのパニックを引き起こすことがあります。使用できる状態データベースの複製の数が少なすぎる場合、このように DiskSuite が動作することがあります。