(57)【特許請求の範囲】
【請求項１】
複数のストレージ装置上に記憶されているデータを復元する方法であって、
１又は複数の物理ストレージ装置のアドレスを仮想レイド（RAID）の１又は複数の仮想ボリュームデータチャンクにマッピングするステップと、
障害が生じた１又は複数の物理ストレージ装置にマッピングされた１又は複数の仮想ボリュームデータチャンクを含む仮想レイドの１又は複数の仮想データスライスの１又は複数の冗長性レベルに従って、障害が生じた１又は複数の物理ストレージ装置にマッピングされた１又は複数の仮想ボリュームデータチャンクの復元順の優先順位を決定するステップと、
障害が生じた１又は複数の物理ストレージ装置にマッピングされた１又は複数の仮想ボリュームデータチャンクのデータを、復元順に従って、少なくとも１つの代替物理ストレージ装置に再構築するステップと
を含むことを特徴とする方法。
【請求項２】
請求項１記載の方法において、仮想レイドは、物理ストレージ装置の数よりも少ない数の仮想ドライブを有していることを特徴とする方法。
【請求項３】
請求項１記載の方法は、障害が生じた１又は複数の物理ストレージ装置上に記憶されたデータチャンクへの参照を障害が生じた物理ストレージ装置と関連するメタデータからコピーすることによって、障害が生じた１又は複数の物理ストレージ装置にマッピングされた１又は複数の仮想ボリュームデータチャンクの復元順を生成するステップをさらに含むことを特徴とする方法。
【請求項４】
請求項１記載の方法は、障害の生じた１又は複数の物理ストレージ装置上に仮想レイドのどのデータチャンクが記憶されていたのかを決定するために、仮想レイドの１又は複数の仮想ボリュームデータチャンクへの１又は複数の物理ストレージ装置の１又は複数のアドレスのマッピングと関連するマッピングアルゴリズムを適用することによって、障害の生じた１又は複数の物理ストレージ装置にマッピングされた１又は複数の仮想ボリュームデータチャンクの復元順を生成するステップをさらに含むことを特徴とする方法。
【請求項５】
請求項１記載の方法において、仮想レイドの１又は複数の仮想ボリュームデータチャンクは、ミラーされた仮想ボリュームを形成することを特徴とする方法。
【請求項６】
複数のストレージ装置上に記憶されているデータを復元するハードウェアシステムであって、
１又は複数の物理ストレージ装置のアドレスを仮想レイドの１又は複数の仮想ボリュームデータチャンクにマッピングする手段と、
障害が生じた１又は複数の物理ストレージ装置にマッピングされた１又は複数の仮想ボリュームデータチャンクを含む仮想レイドの１又は複数の仮想データスライスの１又は複数の冗長性レベルに従って、障害が生じた１又は複数の物理ストレージ装置にマッピングされた１又は複数の仮想ボリュームデータチャンクの復元順の優先順位を決定する手段と、
障害が生じた１又は複数の物理ストレージ装置にマッピングされた１又は複数の仮想ボリュームデータチャンクのデータを、復元順に従って、少なくとも１つの代替物理ストレージ装置に再構築する手段と
を含むことを特徴とするハードウェアシステム。
【請求項７】
コンピュータ装置上で方法を実行するための命令を記憶した、コンピュータ読取可能な記憶媒体であって、該方法は、
１又は複数の物理ストレージ装置のアドレスを仮想レイドの１又は複数の仮想ボリュームデータチャンクにマッピングするステップと、
障害が生じた１又は複数の物理ストレージ装置にマッピングされた１又は複数の仮想ボリュームデータチャンクを含む仮想レイドの１又は複数の仮想データスライスの１又は複数の冗長性レベルに従って、障害が生じた１又は複数の物理ストレージ装置にマッピングされた１又は複数の仮想ボリュームデータチャンクの復元順の優先順位を決定するステップと、
障害が生じた１又は複数の物理ストレージ装置にマッピングされた１又は複数の仮想ボリュームデータチャンクのデータを、復元順に従って、少なくとも１つの代替物理ストレージ装置に再構築するステップと
を含むことを特徴とする記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散ストレージ装置の技術分野に関するものであり、より詳細には、分散データレイアウト環境における冗長性復元を最適化するためのシステム及び方法に関する。
【背景技術】
【０００２】
レイド（ＲＡＩＤ：redundant array of inexpensive disk）ミラー構造等のストレージ装置は、データを記憶し、かつ発生しうるデータロスからデータを保護する。しかしながら、多数のストレージ装置に同じアーキテクチャ内で障害が生じると、ストレージ構造がデータを再構築すなわち復元する機会を得る前に、データが失われてしまう可能性がある。
【発明の概要】
【０００３】
本発明は、このような問題点を解決するために、複数のストレージ装置上に記憶されたデータを復元するためのシステムを提供する。該システムは、データストレージを提供する複数のストレージ装置を含む。システムは、複数のストレージ装置と通信可能に接続された優先順位付けモジュールを含む。優先順位付けモジュールは、重大なデータ障害が発生した時に、少なくとも第１のデータ部及び第２のデータ部の復元順序を決定するよう構成される。システムは、また、複数のストレージ装置及び優先順位付けモジュールと接続される復元モジュールを含み、該復元モジュールは、復元順序に基づいて、少なくとも第１のデータ部及び第２のデータ部を復元するよう構成される。
【０００４】
本発明はまた、複数のストレージ装置上に記憶されたデータを復元するための方法を提供する。該方法は、複数のストレージ装置中の少なくとも１つのストレージ装置上で発生した障害を解析するステップを含み、該ストレージ装置は、少なくとも第１のデータ部及び第２のデータ部のためのデータストレージを提供するよう構成される。該方法は、重大なデータ障害が発生した時に、少なくとも第１のデータ部及び第２のデータ部の復元順序を決定するステップを含む。該方法は、復元順序に基づいて、少なくとも第１のデータ部及び第２のデータ部を復元するステップを含む。
【０００５】
本発明はさらに、複数のストレージ装置上に記憶されたデータを復元するための方法を実行するためのコンピュータ実行可能な命令を記憶したコンピュータ可読媒体を提供する。該方法は、少なくとも第１の仮想データチャンクを第１のストレージ装置へ、かつ第２の仮想データチャンクを第２のストレージ装置上にマッピングするステップを含み、第１のストレージ装置及び第２のストレージ装置は複数のストレージ装置に含まれ、第１の仮想データチャンクは第１の仮想データスライスに関連付けられ、かつ第２の仮想データチャンクは第２の仮想データスライスに関連付けられる。また、該方法は、第１のストレージ装置の障害を検出するステップと、ゼロドライブ冗長性イベントが第１の仮想データスライスで発生したかを決定するステップと、第１の仮想データスライス上でゼロ冗長性イベントが発生した時に、第２の仮想データチャンクが第２の再配置ストレージ装置に復元される前に、第１の仮想データチャンクを第１の再配置ストレージ装置に復元するステップを含む。
【０００６】
前述の一般的な説明及び後述の詳細な説明は両方とも、単なる例示であって、本発明を必ずしも限定するものではない。本明細書及び添付図面は、本発明の主題を例示しているだけであり、本開示の原理を説明するものである。また、本発明の利点は、添付図面を参照した以下の説明により、当業者に理解されるであろう。
【図面の簡単な説明】
【０００７】
【図１】分散型レイドデータのレイアウトの一例を示す図である。
【図２Ａ】分散型データのレイアウト環境における冗長性復元を最適化するためのシステムの実施形態を示すブロック図である。
【図２Ｂ】分散型データのレイアウト環境における冗長性復元を最適化するためのシステムの代替的な実施形態を示すブロック図である。
【図３】図１の分散型レイドデータのレイアウトにおいて、ストレージ装置に２つの障害が生じたことを示した図である。
【図４】分散型ミラーデータのレイアウトの一例を示す図である。
【図５】図４の分散型ミラーデータのレイアウトにおいて、ストレージ装置に２つの障害が生じたことを示した図である。
【図６】複数のストレージ装置に記憶されたデータを復元するための方法を示すフロー図である。
【図７】ドライブ障害特性化のための方法を示すフロー図である。
【図８】クリティカル復元方法を示すフロー図である。
【図９】バックグランド復元方法を示すフロー図である。
【発明を実施するための形態】
【０００８】
以下に、添付した図１〜図９を参照して、本発明を詳細に説明する。
【０００９】
本発明は、図２Ａ及び図２Ｂに示されているような、分散レイアウト環境における冗長性復元を最適化するためのシステム１００を対象としている。システム１００は、データを記憶するための複数の記憶装置であるストレージ装置１０２（図１では、ドライブ０、ドライブ１、ドライブ２、ドライブ３、ドライブ４、ドライブ５、ドライブ６、及びドライブ７）を備えている。各ストレージ装置１０２は、物理的に分離されたストレージ装置である。例えば、複数のストレージ装置１０２は全て、同じストレージシステムに備えられているが、各ストレージ装置１０２は、他のストレージ装置１０２とは違うロケーションに位置している。さらに、いくつかのストレージ装置１０２は、ある地理的ロケーションにあり、一方で別の地理的ロケーションに位置するものもある。複数のストレージ装置１０２は、レイド構成である。各ストレージ装置１０２は、他のストレージ装置１０２と通信可能に接続される。
【００１０】
システム１００は、複数のストレージ装置１０２によって形成される、仮想ボリューム１０４（すなわち、ストレージ仮想化装置）を含む。仮想ボリューム１０４は、該仮想ボリューム１０４におけるデータに対するコンピュータ装置のアクセスを提供する。仮想ボリューム１０４は、仮想ディスクのＲＡＩＤセット１０４である。仮想ボリューム１０４は、複数の仮想ドライブ１０６（図１では、仮想ドライブ０、仮想ドライブ１、仮想ドライブ２、仮想ドライブ３、及び仮想ドライブ４）を備えている。仮想ボリュームは、データをデータワード又はデータスライスとして仮想ドライブ１０６にわたって記憶する。データワードのサイズ又はデータスライスのサイズは、システム１００によって設定される。例えば、単一のデータスライスは、行０の上のデータ部（例：ＤＣ（データチャンク）（０，０，０）、ＤＣ（０，０，１）、ＤＣ（０，０，２）、ＤＣ（０，０，３）、ＤＣ（０，０，４））を指す。各データ部（例：ＤＣ（０，０，０）、ＤＣ（０，０，１）、等）は、データチャンクと称される。データチャンクは、ボリューム、列、及び行のインデクスによって識別される。データチャンクのサイズは、仮想ディスク上に記憶されたレイドストライプと等しい（すなわち、ＤＣ（０，０，０）のサイズ）。以後、データという用語は、データスライスを指し、データ部という用語はデータチャンクを指すものとする。
【００１１】
図１に示されるように、複数のストレージ装置１０２の数は、仮想ボリューム１０４における仮想ドライブ１０６の数よりも多い。これは、データチャンクをストレージ装置１０２に渡って散在するように分配することを可能にし、これによって、最適化された冗長性復元が可能になる。
【００１２】
図２Ａは、システム１００の可能な実施形態を示す。クライアント側システム２０２は仮想ボリューム１０４と通信する。仮想ボリューム１０４は、ネットワーク仮想化装置２０４と通信する。ネットワーク仮想化装置２０４は、記憶エリアネットワーク２００に存在する。ネットワーク仮想化装置２０４は、複数のストレージ装置１０２と通信する。マッピングアルゴリズムにより、仮想ボリュームアドレス指定スキームが提供され、それにより、仮想アドレス指定スキームに基づいて、データチャンクを仮想ボリューム１０４から複数のストレージ装置１０２にマッピングすることが可能になる。マッピングアルゴリズムは、マッピングプログラムすなわちマッピングモジュール２０６に組み込まれる。マッピングアルゴリズムは、各データチャンクを記憶するストレージ装置１０２を決定する。マッピングアルゴリズムは、繰り返し可能なアルゴリズムで、かつ最大で１チャンクをデータスライスから同じストレージ装置１０２へマッピングするならば、任意のアルゴリズムでよい。
【００１３】
システム１００は、完全な復元を達成するために再構築される必要のあるデータチャンクを参照するための復元リスト２０８、すなわち復元キュー（待ち行列）２０８を含む。復元リスト２０８は、複数のストレージ装置１０２及び仮想ボリューム１０４と通信可能に接続される。復元リスト中の参照（データチャンクへの）は、ポインタ又は同等物を含む。ストレージ装置１０２に障害が生じると、障害が生じたストレージ装置１０２から復元される必要のある、各データチャンクへの参照をリストした、新たな復元リスト２０８が作成される。具体的には、障害が生じたストレージ装置１０２に記憶されていたデータチャンクへの参照のリストをメタデータからコピーすることによって、復元リスト２０８が作成される。あるいは、どのデータチャンクが障害状態のストレージ装置１０２に記憶されていたかを決定するために、仮想ボリューム１０４上でマッピングアルゴリズムを実行し、かつこの決定に基づいてデータチャンクへの参照のリストを作成することによって、復元リスト２０８が作成される。生成された復元リスト２０８は、ネットワーク仮想化装置２０４上に存在する。
【００１４】
システム１００は、複数のストレージ装置１０２及び仮想ボリューム１０４と通信可能に接続された優先順位付けモジュール２１０を含む。優先順位付けモジュール２１０は、データ障害の重大さに基づいて、データチャンクの復元順序を決定する。重大なデータ障害を、以後、重大スライス障害と称する。重大スライス障害は、データスライスが別のストレージ装置１０２の障害によって失われてしまうリスクがある時に、発生する。重大スライス障害は、ゼロドライブ冗長性とも称される。
【００１５】
図３は、重大スライス障害すなわちゼロドライブ冗長性の例を示している。この例で示されるように、データスライスが失われるまでに、データスライスは２つのデータチャンク損失に耐久できる。失われたデータチャンクは、レイド６構成のパリティ及び／又はストライピング等のさまざまなレイド技術によって、再構成すなわち再構築される。図３は、ストレージ装置であるドライブ２及びドライブ３に障害が生じている状況を示す。ドライブ２及びドライブ３上に記憶されていたデータチャンクは失われている。ストレージ装置であるドライブ２及びドライブ３からの各データチャンクは、完全な冗長性が復元される前に再構成されなければならない。ドライブ２及びドライブ３の復元すべきデータチャンクへの参照をリストした、復元リスト２０８が作成される。行４のデータスライスにデータ損失のリスクがある。例えば、別のストレージ装置１０２に障害が生じると、行４中の失われたデータチャンクを再構築することができないため、行４のデータスライスは失われる、すなわち破壊される。この種の状況が、重大スライス障害すなわちゼロドライブ冗長性と称されるものである。優先順位付けモジュール２１０は、ＤＣ（０，４，１）への参照及びＤＣ（０，４，４）への参照のいずれか、又は、ＤＣ（０，４，１）への参照及びＤＣ（０，４，４）への参照の両方を、復元リスト２０８の先頭に配置することにより、復元リスト２０８を修正する。ＤＣ（０，４，４）への参照に対比して、ＤＣ（０，４，１）への参照の方が先行する列識別子を有するため、ＤＣ（０，４，１）への参照は、ＤＣ（０，４，４）への参照よりも先に、復元リスト２０８に配置される。当業者には、ＤＣ（０，４，１）及びＤＣ（０，４，４）のいずれか１つのみが、単一ドライブ冗長性を復元するために再構築されねばならないことが明らかであろう。ＤＣ（０，４，１）又はＤＣ（０，４，４）は、置換ストレージドライブに再生成（再構築）される。
【００１６】
図２Ａに示すように、システム１００は、複数のストレージ装置１０２及び優先順位付けモジュール２１０と通信可能に接続される復元モジュール２１２を備えている。復元モジュール２１２は、復元順序に基づいて、あるデータチャンク（ＤＣ）及び別のデータチャンクを置換ストレージ装置に復元する。置換ストレージ装置は、複数のストレージ装置１０２内のストレージ装置である。マッピングアルゴリズムにより、障害が生じたストレージ装置１０２が認識されるので、復元されたデータチャンクが、該マッピングアルゴリズムを用いて、ストレージシステムすなわちストレージプールにマッピングされる。
【００１７】
図２Ｂは、システム１００の代替的な実施形態を示している。クライアント側システム２０２は、ストレージエリアネットワーク２００と通信する。ストレージエリアネットワーク２００は、ネットワーク仮想化装置２０４と通信する。複数のストレージ装置１０２、仮想ボリューム１０４、マッピングモジュール２０６、復元リスト２０８、優先順位付けモジュール２１０、及び復元モジュール２１２は、ネットワーク仮想化装置２０４上に存在する。
【００１８】
ストレージエリアネットワーク２００はさらに、仮想ボリューム１０４と通信する。仮想ボリューム１０４はマッピングアルゴリズムと通信する。マッピングアルゴリズムは複数のストレージ装置１０２と通信する。マッピングアルゴリズムは、仮想ボリュームアドレス指定スキームを提供し、該仮想アドレス指定スキームに基づいて、データチャンクを仮想ボリューム１０４から複数のストレージ装置１０２にマッピングすることが可能になる。
【００１９】
優先順位付けモジュール２１０及び／又は復元モジュール２１２は、コンピュータ可読媒体上の一連のコンピュータ可読コードとして実現される。復元モジュール２１２及び／又は復元モジュール２１２も、ファームウェアとして実現される。優先順位付けモジュール２１０及び／又は復元モジュール２１２はまた、ハードウェアとして実現しても良い。
【００２０】
図３を参照すると、復元モジュール２１２は、データチャンクＤＣ（０，４，１）又はＤＣ（０，４，４）を、他のあらゆる参照されたデータチャンクに先行して再構築する。これは、ＤＣ（０，４，１）への参照又はＤＣ（０，４，４）への参照が、優先順位付けモジュール２１０によって復元リスト２０８上の高順位に置かれているからである。これらのデータチャンクの１つが再構築されると、復元モジュール２１２は、引き続き、復元リスト２０８上で参照された他のデータチャンクを再構築する。データチャンクが再構築されると、そのデータチャンクへの参照は、復元リスト２０８から削除される。
【００２１】
図４は、システム１００の具体的な実施形態が示されている。システム１００は、分散ミラー構造４００として実現される。ミラー仮想ボリューム４０４は、多数のデータチャンク（例：ＤＣ（０，０，０）、ＤＣ（０，０，１）等）を含む。ミラー仮想ボリューム４０４は、仮想ボリューム１０４と同様であってもよい。多数のデータチャンクは、複数のストレージ装置１０２（図４では、ドライブ０〜ドライブ７）に、マッピングアルゴリズムを介してマッピングされる。マッピングアルゴリズムは、マッピングモジュール２０６に組み込まれる。
【００２２】
図５は、ストレージ装置であるドライブ２及び３が故障している状態を示している。ドライブ２及びドライブ３上に記憶されたデータチャンクは、ストレージ装置１０２の障害によって失われる。ミラー仮想ボリューム４０４における行５と関連付けられたデータスライスは、別のストレージ装置１０２に障害が生じると失われるというリスクがある。従って、優先順位付けモジュール２１０は、行５（ＤＣ（０，５，０）及びＤＣ（０，５，１）に関連付けられたデータチャンクへの参照を、復元リスト２０８の先頭になるように修正又は作成する。復元モジュール２１２は、復元リスト２０８に基づいて、データチャンクを複数のストレージ装置１０２に再構築する。これが完了すると、復元モジュール２１２は引き続き、復元リスト２０８に含まれている参照により示される他のデータチャンクを復元する。
【００２３】
図６は、複数のストレージ装置上に記憶されたデータを復元するための方法６００を示している。該方法６００は、少なくとも１つのストレージ装置上で発生したストレージ装置の障害を解析するステップ６０２を含み、複数のストレージ装置（例：ドライブ０、ドライブ１、ドライブ２、ドライブ３、ドライブ４、ドライブ５、ドライブ６、及びドライブ７）に含まれる少なくとも１つのストレージ装置は、少なくとも第１のデータ部（すなわち、データチャンク）及び第２のデータ部（すなわち、データチャンク）のためにデータストレージを提供するよう構成される。方法６００は、重大なスライス障害が発生した時に、少なくとも第１のデータ部及び第２のデータ部の復元順序を決定するステップ６０４を含む。さらに、方法６００は、少なくとも第１のデータ部及び第２のデータ部を、復元順序に基づいて復元するステップ６０６を含む。
【００２４】
図７は、ドライブ（ストレージ装置）障害を特性化するのための方法７００を示している。該方法７００は、図８及び図９に示す復元方法８００及び９００を制御し、かつ復元リスト２０８を制御するために、フラグを使用する。代替的には、方法７００は、フラグの代わりにワークキューすなわち信号を使用する。ドライブ障害特性化方法７００は、ドライブ（ストレージ装置１０２）の障害発生を検出することにより、ステップ７０２において開始される。ドライブ障害が、別のドライブが障害した場合にデータをリスクにさらす可能性があるかどうかが決定される。リスクがなければ、バックグランドの復元システム９００にエントリする。リスクの可能性があれば、重大障害の復元方法８００にエントリし、重大復元の全てが待ち行列に入ると、バックグランドの復元システム９００が後に続く。
【００２５】
ステップ７０４及び７０６において、ドライブ障害フラグ７０４及び重大復元フラグ７０６が設定される。ドライブ障害フラグにより、以前のドライブ障害８１２（ストレージ装置１０２の以前の障害）からの任意の重大復元方法８００が終了される（ステップ８１２）。重大復元フラグにより、以前のドライブ障害によって始まった任意のバックグランドの復元方法９００が終了される（図９のステップ９１４）。現在のドライブ障害が特性化された場合、重大復元方法８００又はバックグランド復元システム９００が開始される。ステップ７０８において、新たに障害が生じたドライブから復元するための、データチャンクのリスト（復元リスト２０８又は復元キュー）が作成される。復元リストは、ストレージシステムのメタデータからコピーされる。復元リストは、障害発生のドライブ上に記憶されている全てのボリューム上でマッピングアルゴリズムを実行することによっても、作成することができる。
【００２６】
次に、ステップ７１０において、復元リストが空かをチェックすることにより、処理中の以前の復元処理が存在するかどうかを決定する。復元リストが空ではなければ、以前の復元処理が進行中であったことになる。この場合、ドライブ障害は、重大である可能性ありとして特性化され、ステップ７１２において、新たに障害発生のドライブからのチャンクリストが、現存する復元リストに添付され、そして、ノード７１４から、図８の重大復元方法８００が開始される。一方、復元リストが空であれば、ドライブの障害時に進行中の復元はなかったことになり、この場合、ステップ７１６において、障害発生のストレージドライブのデータチャンクリストを復元リストとする。ただし、ドライブ障害はまだ完全には特性化されていない。
【００２７】
ステップ７１６に続いて、ステップ７１８において、複数のストレージ装置１０２からなるストレージアレイ上の全てのコンテナ（すなわち、ボリューム又はオブジェクト）に関する最小冗長性レベルが判定される。最小冗長性レベルが１であれば、単一のドライブ障害は重大な障害として扱われなければならない。このような場合、図８の重大復元方法８００に移行する（ノード７１４を介して）。進行中であった以前の復元がなく、かつ最小冗長性レベルが１よりも大きい場合は、全てのデータがまだ保護されているので、ドライブ障害は、図９のバックグランド復元を用いて処理される（ノード７２０を介して）。
【００２８】
図８の重大復元方法８００は、ドライブ障害がドライブ障害特性化方法７００によって重大である可能性ありと判定された場合に、エントリすなわち実行される。一連の障害ドライブが同じボリューム及び行からのデータチャンクを多数含むようなケースを、復元リスト内で検索する。行上のデータチャンクの数がボリュームの最大冗長度よりも少ない場合は、これらのデータチャンクの復元は、バックグランド復元方法９００により実行される。行上のデータチャンクの数がボリュームの最大冗長度と等しい場合は、重大復元がその行からの１チャンク上で開始される。行上のデータチャンクの数がボリュームの最大冗長性よりも多い場合は、データ損失が発生しているので、ボリュームはさらなるリカバリのためにオフラインにされる。
【００２９】
図８の重大復元方法８００においては、ステップ８０２において、ドライブ障害フラグがクリアされ、そして、ステップ８０４において、ボリューム及び行上にソートされた復元リストのコピーが作成される。その後、ステップ８０６において、ソートされた復元リストがそのエンドまで行によって進行され、復元リストのエンド（終端）であるかどうかが判定される。エンドではない場合、ステップ８０８において、各行に関して、行における障害ドライブ上のデータチャンクの数がカウントされる。行のデータチャンクの総数が、ボリュームの最大冗長性レベルを上回ると、ステップ８１０において判定した場合、ステップ８２６において、データ損失イベントが報告され、次いで、ステップ８２８に移行して、障害ボリュームが報告時にオフライン化され、そのチャンクが復元リストから除去される。ステップ８１２において、行のデータチャンクの総数がボリュームの最大冗長性レベルよりも少ないと判定した場合、ステップ８２２にスキップして、行における全てのデータチャンクの復元が、それらを復元リストに移す。もしそうでなければ、行のデータチャンクの総数は、その行におけるデータを危険な状態にさらすボリュームの最大冗長性レベルと等しかったことになる。
【００３０】
現在ペンディング（未完）の復元があるかを確かめるために、ステップ８１４において、行におけるデータチャンクの全てに対してチェックが行われる。任意のデータチャンクが復元のキュー状態すなわち待ち行列にあれば、ステップ８２２にスキップして、その行の全てのデータチャンクが復元リストに移動される。そうでなければ、その行に関する少なくとも１つのデータチャンクが重大復元として復元されなければならない。そして、ステップ８１８において、行の第１データチャンクが重大復元の待ち行列に入れられ、ステップ８１６において、そのデータチャンクは未完の復元としてマークされる。最終的に、ステップ８２２において、行における全ての残存データチャンクは復元リストに移動される。
【００３１】
次に、重大復元を待ち行列にさらに入れるべきかを決定するためにチェックが行われ、ステップ８２０において、ドライブ障害フラグをチェックすることにより、新たなドライブ障害が発生したかどうかが判定される。追加的なドライブ障害は、少なくとも単一ドライブ冗長性を有する行からのデータチャンクのみを含むので、データ損失を示すものではない。ドライブ障害フラグが設定されると、現在の重大復元方法８００が終了する。これにより、次の復元方法８００が、新たに障害発生のドライブからの追加されたデータチャンクに関して開始できる。ステップ８０６において、リスト条件のエンドが復元リスト上で確認されて、リストのエンドに到達したと判定すると、すなわち重大復元をもつ全ての行が配置されると、重大復元方法８００は終了し、ノード８２４から、図９のバックグランド復元方法９００が開始される。
【００３２】
バックグランド復元方法９００は、重大復元の全てが待ち行列に入った後に実行される。バックグランド復元では、データはもはや危険な状態ではないので、システム性能が復元よりも優先する。バックグランド復元では、復元リストはドライブが障害した順番で処理される。復元の最大数が待ち行列に入っているときは、復元方法９００は一時停止する。方法９００は、各復元が完了した後に再開するので、追加的な復元は復元リストが完全に処理されるまでは待ち行列に入れられる。バックグランド復元に割り当てられるシステムパフォーマンスの量を制御するために、待ち行列に入れられた復元に対する制限は、いつでも変更できる。
【００３３】
バックグランド復元方法９００は、ドライブ障害特性化方法のノード７２０（図７）又は重大復元方法のノード８２４（図８）から開始される。これらの場合のいずれにおいても、ステップ９０６及び９０８において、重大な復元フラグ及びドライバ障害フラグがクリアされる。バックグランド復元方法９００はまた、ステップ９０２において、以前に待ち行列に入っていた復元を完了すると、再開される。この場合、ステップ９０４において、復元データチャンクは復元リストから除去される。
【００３４】
復元リストにおける現在位置（ロケーション）が特定されていない場合、ステップ９１０において、現在位置がリストの先頭に設定される。そして、バックグランド復元方法９００は、次の条件（１）、（２）の一つが満たされるまで、復元のキューを出している復元リストを巡回する。
（１）復元リストが空であれば（ステップ９１２において判定）、方法９００は完了して終了する。
（２）重大復元フラグが設定されると（ステップ９１４において判定）、新たなドライブに障害が発生したので、現在のバックグランド復元方法９００は終了しなければならない。
復元キューが性能（パフォーマンス）閾値を上回っていると、ステップ９１６において判定した場合には、追加的な復元を待ち行列に入れるのはシステム性能に逆効果となり、したがって、現在の復元方法９００は一時停止又は終了する。現在の復元が待ち行列に入れられると、ステップ９１８において、現在のデータチャンクがすでに復元待ち状態であるかどうかを決定する最終確認が行われる。現在のデータチャンクがすでに復元待ち状態であれば、ステップ９２４へスキップされる。データチャンクが復元されていない状態ならば、ステップ９２０において、未完の復元とマークされ、そしてステップ９２２において、復元のためのキューに入れられる。すると、ステップ９２４において、復元リストにおける現在の位置が現在のデータチャンクに移動し、そして、プロセスが繰り返される。
【００３５】
本発明による前述された実施形態は、本明細書の教示に従ってプログラムされた従来の汎用デジタルコンピュータを用いて、簡便に実現できることは、コンピュータ技術の当業者には明らかであろう。適切なソフトウェアコーディングが、本開示の教示に基づいて熟練のプログラマによって容易に準備されることも、ソフトウェア技術の当業者には明らかであろう。
【００３６】
また本発明は、ソフトウェアパッケージの形態で簡便に実現可能である。ソフトウェアパッケージは、開示された本発明の機能及びプロセスをコンピュータが実行するようプログラムするために用いられる、記憶されたコンピュータコードを備えたコンピュータ可読ストレージ媒体を採用している、コンピュータプログラム製品である。コンピュータ可読媒体／コンピュータ可読ストレージ媒体は、任意のタイプの従来型フロッピディスク、光ディスク、ＣＤ−ＲＯＭ、磁気ディスク、ハードディスクドライブ、光磁気ディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気又は光カード、あるいは電子指示を記憶するための任意の別の適宜の媒体であるが、これらに限定するものではない。
【００３７】
本開示及びそれに付随する多数の利点は、前述の記載によって理解されるであろう。また、開示された主題を逸脱しない限りは、又はマテリアルアドバンテージの全てを犠牲にすることなしに、これに関する部品の形態、構造、及び配置において、多くの変更が可能である。記述された形式は、本発明の例示にすぎない。本発明の技術的思想および範囲を逸脱しない限りは、又はマテリアルアドバンテージの全てを犠牲にすることなしに、これに関する部品の形態、構造、及び配置において、多くの変更が可能である。前述された形式は、本発明の実施形態例にすぎない。このような変更に関しては、以下に記載の特許請求の範囲に包含されるものである。
【図１】
0005479265.tif 000002
【図２Ａ】
0005479265.tif 000003
【図２Ｂ】
0005479265.tif 000004
【図３】
0005479265.tif 000005
【図４】
0005479265.tif 000006
【図５】
0005479265.tif 000007
【図６】
0005479265.tif 000008
【図７】
0005479265.tif 000009
【図８】
0005479265.tif 000010
【図９】
0005479265.tif 000011