(57)【要約】  データが複数のディスクを有する分散データストレージシステムに保存されている。ディスクが故障すると、システムの信頼性は、スケジュールにしたがって再構築の集合を実行することによって回復する。システムの信頼性は、動的なノーマルシーディービエイションスコアによって特徴付けられている。再構築の集合を実行するスケジュールは、最小の交差ポリシーによって定められる。再構築の集合を受け付けると、再構築の集合を最低の冗長性レベルから最高の冗長性レベルまでの範囲内にある冗長性レベルによって順序付けされているキューの集合に分割する。各キュー内の再構築について、交差行列が計算される。各ディスクについてディスクスコアが計算される。再構築の集合のスケジュールは交差行列、ノーマルシーディービエイションスコア、およびディスクスコアの少なくとも一部に基づいている。【選択図】図１
2011520182.tif 000002
【特許請求の範囲】
【請求項１】
複数のディスクを有する分散データストレージシステムに保存されているデータの再構築をスケジューリングする方法であって、
再構築の集合（set）を受け付けるステップと、
前記再構築の集合を最低の冗長性レベルから最高の冗長性レベルまでの範囲内にある冗長性レベルによって順序付けされているキューの集合（set）に分割するステップと、
前記最低の冗長性レベルを有している第１のキューにおいて再構築用の第１の交差行列（intersection matrix）を計算するステップと、
第１のノーマルシーディービエイションスコア（Normalcy Deviation Score）を計算するステップと、
前記複数のディスクの各々について第１のディスクスコアを計算するステップと、
前記第１の交差行列と、前記第１のノーマルシーディービエイションスコアと、前記第１のディスクスコアと、の少なくとも一部に基づいて、前記受け付けた再構築の集合に対して第１のスケジュールを生成するステップと、を有する方法。
【請求項２】
前記データは、ブロックにまとめられており、
前記第１のノーマルシーディービエイションスコアを計算するステップは、前記ノーマルシーディービエイションスコアを以下のアルゴリズムにしたがって計算するステップを有する、請求項１に記載の方法。
【数１】
2011520182.tif 000010
ここで、
ＮＤＳ（ｔ）は、時間ｔでのノーマルシーディービエイションスコア、
ｋは、正常動作下での前記分散データストレージシステム内の全てのブロックの冗長性レベル、
ｂiは、時間ｔで残っている、冗長性レベルがｉのブロックの数、
Ｔallocは、ディスクを再構築するための最短時間、
ｆは、ユーザが定義したスケーリング係数（scaling factor）である。
【請求項３】
前記第１のノーマルシーディービエイションスコアの少なくとも一部に基づいて、第１の利得値を計算するステップと、
第１の性能損失値（performance loss value）を計算するステップと、
前記計算された第１の利得値と、前記計算された第１の性能損失と、の少なくとも一部に基づいて、第１のトレードオフ値を計算するステップと、
前記計算された第１のトレードオフ値の少なくとも一部に基づいて、前記第１のスケジュールを生成するステップと、をさらに有する、請求項１に記載の方法。
【請求項４】
前記計算された第１のトレードオフ値が、ユーザが定義した値よりも大きい場合、回復帯域（recovery bandwidth）を広げるステップをさらに有する、請求項３に記載の方法。
【請求項５】
前記キューの集合の中の特定のキューの各々に対する交差行列は、前記特定のキュー内の再構築用の潜在的な（potential）回復元ディスクのペアの交差の大きさを有する、請求項１に記載の方法。
【請求項６】
前記ディスクスコアは静的スコアと動的スコアとを有する、請求項１に記載の方法。
【請求項７】
２番目に低い冗長性レベルを有している第２のキューにおいて再構築用の第２の交差行列を計算するステップと、
第２のノーマルシーディービエイションスコアを計算するステップと、
前記複数のディスクの各々について第２のディスクスコアを計算するステップと、
前記第１の交差行列と、前記第１のノーマルシーディービエイションスコアと、前記第１のディスクスコアと、前記第２の交差行列と、前記第２のノーマルシーディービエイションスコアと、前記第２のディスクスコアと、の少なくとも一部に基づいて、前記受け付けた再構築の集合に対して第２のスケジュールを生成するステップと、をさらに有する、請求項１に記載の方法。
【請求項８】
前記第２のノーマルシーディービエイションスコアの少なくとも一部に基づいて、第２の利得値を計算するステップと、
第２の性能損失値を計算するステップと、
前記計算された第２の利得値と、前記計算された第２の性能損失と、の少なくとも一部に基づいて、第２のトレードオフ値を計算するステップと、
前記計算された第２のトレードオフ値の少なくとも一部に基づいて、前記第２のスケジュールを生成するステップと、をさらに有する、請求項７に記載の方法。
【請求項９】
前記計算された第２のトレードオフ値が、ユーザが定義した値よりも大きい場合、回復帯域を広げるステップをさらに有する、請求項８に記載の方法。
【請求項１０】
複数のディスクを有する分散データストレージシステムに保存されているデータの再構築をスケジューリングする装置であって、
再構築の集合を受け付ける手段と、
前記再構築の集合を最低の冗長性レベルから最高の冗長性レベルまでの範囲内にある冗長性レベルによって順序付けされているキューの集合に分割する手段と、
前記最低の冗長性レベルを有している第１のキューにおいて再構築用の第１の交差行列を計算する手段と、
第１のノーマルシーディービエイションスコアを計算する手段と、
前記複数のディスクの各々について第１のディスクスコアを計算する手段と、
前記第１の交差行列と、前記第１のノーマルシーディービエイションスコアと、前記第１のディスクスコアと、の少なくとも一部に基づいて、前記受け付けた再構築の集合に対して第１のスケジュールを生成する手段と、を有する装置。
【請求項１１】
前記データは、ブロックにまとめられており、
前記ノーマルシーディービエイションスコアを計算する手段は、前記ノーマルシーディービエイションスコアを以下のアルゴリズムにしたがって計算する手段を有する、請求項１０に記載の装置。
【数２】
2011520182.tif 000011
ここで、
ＮＤＳ（ｔ）は、時間ｔでのノーマルシーディービエイションスコア、
ｋは、正常動作下での前記分散データストレージシステム内の全てのブロックの冗長性レベル、
ｂiは、時間ｔで残っている、冗長性レベルがｉのブロックの数、
Ｔallocは、ディスクを再構築するための最短時間、
ｆは、ユーザが定義したスケーリング係数である。
【請求項１２】
前記第１のノーマルシーディービエイションスコアの少なくとも一部に基づいて、第１の利得値を計算する手段と、
第１の性能損失値を計算する手段と、
前記計算された第１の利得値と、前記計算された第１の性能損失と、の少なくとも一部に基づいて、第１のトレードオフ値を計算する手段と、
前記計算された第１のトレードオフ値の少なくとも一部に基づいて、前記第１のスケジュールを生成する手段と、をさらに有する、請求項１０に記載の装置。
【請求項１３】
前記計算された第１のトレードオフ値が、ユーザが定義した値よりも大きい場合、回復帯域を広げる手段をさらに有する、請求項１２に記載の装置。
【請求項１４】
前記キューの集合の中の特定のキューの各々に対する交差行列は、前記特定のキュー内の再構築用の潜在的な回復元ディスクのペアの交差の大きさを有する、請求項１０に記載に装置。
【請求項１５】
前記ディスクスコアは静的スコアと動的スコアとを有する、請求項１０に記載の装置。
【請求項１６】
２番目に低い冗長性レベルを有している第２のキューにおいて再構築用の第２の交差行列を計算する手段と、
第２のノーマルシーディービエイションスコアを計算する手段と、
前記複数のディスクの各々について第２のディスクスコアを計算する手段と、
前記第１の交差行列と、前記第１のノーマルシーディービエイションスコアと、前記第１のディスクスコアと、前記第２の交差行列と、前記第２のノーマルシーディービエイションスコアと、前記第２のディスクスコアと、の少なくとも一部に基づいて、前記受け付けた再構築の集合に対して第２のスケジュールを生成する手段と、をさらに有する、請求項１０に記載の装置。
【請求項１７】
前記第２のノーマルシーディービエイションスコアの少なくとも一部に基づいて、第２の利得値を計算する手段と、
第２の性能損失値を計算する手段と、
前記計算された第２の利得値と、前記計算された第２の性能損失と、の少なくとも一部に基づいて、第２のトレードオフ値を計算する手段と、
前記計算された第２のトレードオフ値の少なくとも一部に基づいて、前記第２のスケジュールを生成する手段と、をさらに有する、請求項１６に記載の装置。
【請求項１８】
前記計算された第２のトレードオフ値が、ユーザが定義した値よりも大きい場合、回復帯域を広げる手段をさらに有する、請求項１７に記載の装置。
【請求項１９】
複数のディスクを有する分散データストレージシステム内のデータの再構築をスケジューリングするコンピュータプログラム命令を保存しているコンピュータ読み取り可能な記録媒体であって、
前記コンピュータプログラム命令は、
再構築の集合を受け付けるステップと、
前記再構築の集合を最低の冗長性レベルから最高の冗長性レベルまでの範囲内にある冗長性レベルによって順序付けされているキューの集合に分割するステップと、
前記最低の冗長性レベルを有している第１のキューにおいて再構築用の第１の交差行列を計算するステップと、
第１のノーマルシーディービエイションスコアを計算するステップと、
前記複数のディスクの各々について第１のディスクスコアを計算するステップと、
前記第１の交差行列と、前記第１のノーマルシーディービエイションスコアと、前記第１のディスクスコアと、の少なくとも一部に基づいて、前記受け付けた再構築の集合に対して第１のスケジュールを生成するステップと、を定義するコンピュータ読み取り可能な記録媒体。
【請求項２０】
前記データは、複数のブロックにまとめられており、
前記ノーマルシーディービエイションスコアを計算するステップを定義するコンピュータプログラム命令は、前記ノーマルシーディービエイションスコアを以下のアルゴリズムにしたがって計算するステップを定義するコンピュータプログラム命令を有する、請求項１９に記載のコンピュータ読み取り可能な記録媒体。
【数３】
2011520182.tif 000012
ここで、
ＮＤＳ（ｔ）は、時間ｔでのノーマルシーディービエイションスコア、
ｋは、正常動作下での前記分散データストレージシステム内の全てのブロックの冗長性レベル、
ｂiは、時間ｔで残っている、冗長性レベルがｉのブロックの数、
Ｔallocは、ディスクを再構築するための最短時間、
ｆは、ユーザが定義したスケーリング係数である。
【請求項２１】
データの再構築をスケジューリングするコンピュータプログラム命令は
前記第１のノーマルシーディービエイションスコアの少なくとも一部に基づいて、第１の利得値を計算するステップと、
第１の性能損失値を計算するステップと、
前記計算された第１の利得値と、前記計算された第１の性能損失と、の少なくとも一部に基づいて、第１のトレードオフ値を計算するステップと、
前記計算された前記第１のトレードオフ値の少なくとも一部に基づいて、前記第１のスケジュールを生成するステップと、を定義するコンピュータプログラム命令をさらに有する、請求項１９に記載のコンピュータ読み取り可能な記録媒体。
【請求項２２】
データの再構築をスケジューリングするコンピュータプログラム命令は、前記計算された第１のトレードオフ値が、ユーザが定義した値よりも大きい場合、回復帯域を広げるステップを定義するコンピュータプログラム命令をさらに有する、請求項１９に記載のコンピュータ読み取り可能な記録媒体。
【請求項２３】
前記キューの集合の中の特定のキューの各々に対する交差行列は、前記特定のキュー内の再構築用の潜在的な回復元ディスクのペアの交差の大きさを有する、請求項１９に記載のコンピュータ読み取り可能な記録媒体。
【請求項２４】
前記ディスクスコアは静的スコアと動的スコアとを有する、請求項１９に記載のコンピュータ読み取り可能な記録媒体。
【請求項２５】
データの再構築をスケジューリングするコンピュータプログラム命令は、
２番目に低い冗長性レベルを有している第２のキューにおいて再構築用の第２の交差行列を計算するステップと、
第２のノーマルシーディービエイションスコアを計算するステップと、
前記複数のディスクの各々について第２のディスクスコアを計算するステップと、
前記第１の交差行列と、前記第１のノーマルシーディービエイションスコアと、前記第１のディスクスコアと、前記第２の交差行列と、前記第２のノーマルシーディービエイションスコアと、前記第２のディスクスコアと、の少なくとも一部に基づいて、第２のスケジュールを生成するステップと、を定義するコンピュータプログラム命令をさらに有する、請求項１９に記載のコンピュータ読み取り可能な記録媒体。
【請求項２６】
データの再構築をスケジューリングするコンピュータプログラム命令は、
前記第２のノーマルシーディービエイションスコアの少なくとも一部に基づいて、第２の利得値を計算するステップと、
第２の性能損失値を計算するステップと、
前記計算された第２の利得値と、前記計算された第２の性能損失と、の少なくとも一部に基づいて、第２のトレードオフ値を計算するステップと、
前記計算された第２のトレードオフ値の少なくとも一部に基づいて、前記第２のスケジュールを生成するステップと、を定義するコンピュータプログラム命令をさらに有する、請求項２５に記載のコンピュータ読み取り可能な記録媒体。
【請求項２７】
データの再構築をスケジューリングするコンピュータプログラム命令は、前記計算された第２のトレードオフ値が、ユーザが定義した値よりも大きい場合、回復帯域を広げるステップを定義するコンピュータプログラム命令をさらに有する、請求項２６に記載のコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２００８年４月１７日に出願された米国仮出願第６１／０４５，７１８号の利益を主張し、その開示をここに取り込む。
【０００２】
本発明は、データストレージシステムに関し、特に、分散データストレージシステムの信頼性の動的定量化と改善に関する
【背景技術】
【０００３】
信頼性の高いデータの保存は、例えば、個人記録、金融取引、マルチメディアサービス、工業プロセス制御、および基礎研究などの広範なアプリケーションにわたって重要な作業である。データは、半導体媒体（例えば、フラッシュメモリ）、光電子媒体（例えば、コンパクトディスクやデジタルビデオディスク）、磁気媒体（例えば、テープやハードディスク）などの物理媒体に保存される。大容量および高速の動的読み／書き速度が要求されるアプリケーションにおいては、磁気ハードディスクが現在最も一般的なデータストレージ装置である。しかし、他の媒体の容量および読み／書き速度も増大し続けている。
【０００４】
大容量のデータストレージシステムの場合、複数のデータストレージ装置を相互に接続することがある。例えば、複数のハードディスクドライブをローカルインターフェイスを介して接続してデータストレージユニットを構成する。そして、複数のデータストレージユニットをデータ通信ネットワークを介して接続して分散データストレージシステムを構成する。各装置が故障する可能性があるため、分散データストレージシステムには複数の障害点が設けられている。信頼性を改善するために、しばしば冗長化が行われる。その場合、ＲＡＩＤ−１または複製ベースの分散システム（replica-based distributed system）などにおいて、複数のデータブロックを複製したり、ＲＡＩＤ−５または消失符号化分散システム（erasure-coded distributed system）などにおいて、追加の情報を保存したりする。システム内の冗長性の量が過度に大きくない場合は、大規模システム内で装置が故障した時に、その装置に保存されていたデータを直ちに他の装置上で再構築する必要がある。その理由は、装置の修理や交換には長時間かかることがあり、その間に新しい故障が発生する可能性があるためである。しかし、高冗長化は、装置を追加する費用が伴うため、ハードウェアを追加する代わりに、障害管理ポリシーを通じて信頼性を改善することが好ましい。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
信頼性を改善するためには、まず、分散データストレージシステムの信頼性を特徴付ける定量的な測定基準を定義する必要がある。既存の測定基準としては、データ損失確率（ＰＤＬ：Probability of Data Loss）および平均データ損失時間（ＭＴＴＤＬ：Mean Time To Data Loss）がある。ＰＤＬは、結果的にデータ損失が発生したシミュレーションの割合として推定されるか、または、システムに対するＰＤＬのモデル（通常はモデルの組み合わせ）を使用して推定される。同様に、ＭＴＴＤＬは、多くのシミュレーションを通してデータ損失が発生するまでの時間の平均値として推定されるか、または、システムの信頼性のモデル（通常はマルコフモデル）を使用して推定される。しかし、ＰＤＬおよびＭＴＴＤＬは、どのように計算される場合も、時間やシステムの現在の状態とは関係のない１つの静的な尺度を使用して信頼性を定量化している。これらの測定基準は、アプリケーションによっては有用であるが、巨視的、長期的な視野でシステムの信頼性を提供しているに過ぎず、装置の障害、データの再構築、装置の交換が発生した時に、その時点での信頼性を評価することはできない。
【０００６】
装置のさらなる冗長化を行うことなく、分散データストレージシステムの信頼性を動的に定量化するとともに、信頼性を改善する方法および装置が必要とされている。
【課題を解決するための手段】
【０００７】
本発明の実施形態においては、データは、複数のディスクを有する分散データストレージシステムに保存される。ディスクの故障時には、システムの信頼性は、スケジュールにしたがって再構築の集合（set）を実行することによって回復する。再構築の集合は、受け付けられると、最低の冗長性レベルから最高の冗長性レベルまでの範囲内にある冗長性レベルによって順序付けされているキューの集合（set）に分割される。冗長性レベルが最も低いキュー内の再構築用の第１の交差行列（intersection matrix）が計算される。システムの信頼性を特徴付ける第１のノーマルシーディービエイションスコア（Normalcy Deviation Score）が計算される。各ディスクの第１のディスクスコアが計算される。第１の交差行列と、第１のノーマルシーディービエイションスコアと、第１のディスクスコアと、の少なくとも一部に基づいて、受け付けた再構築の集合に対して第１のスケジュールが生成される。残りのキューについても上記プロセスが繰り返され、最終的なスケジュールが生成される。
【０００８】
本発明のこれらおよびその他の効果は、以下の詳細な説明と添付の図面とを参照することによって、当業者に対して明らかになろう。
【図面の簡単な説明】
【０００９】
【図１】データ通信システムの概略図である。
【図２】クラスタ割り当てについての冗長性スキームを示す図である。
【図３】チェーン化デクラスタリング（chained declustering）割り当てについての冗長性スキームを示す図である。
【図４】デクラスタリング割り当てについての冗長性スキームを示す図である。
【図５】回復プロセスについてのステップを示すフローチャートである。
【図６Ａ】ＭｉｎＩポリシーについてのステップを示すフローチャートである。
【図６Ｂ】ＭｉｎＩポリシーについてのステップを示すフローチャートである。
【図６Ｃ】ＭｉｎＩポリシーについてのステップを示すフローチャートである。
【図６Ｄ】ＭｉｎＩポリシーについてのステップを示すフローチャートである。
【図７】コンピュータの概略図である。
【発明を実施するための形態】
【００１０】
図１は、データ通信システムの概略図である。様々なネットワーク要素がデータネットワーク１０２を介して通信を行う。ネットワーク要素の数は多くてもよい（数千以上）。代表的なネットワーク要素には、ネットワークサーバ１  １０８、ネットワークサーバ２  １１０、ユーザ装置１  １１２、およびユーザ装置２  １１４がある。ユーザ装置の例としては、ワークステーション、パーソナルコンピュータ、および携帯電話がある。データは、フラッシュドライブ、ＣＤドライブ、ＤＶＤドライブ、および磁気ハードドライブなどの物理データストレージ装置に保存される。ここでは、個別の物理データストレージ装置を「ディスク」と呼ぶ。「ディスク」は、磁気ハードドライブには限定されておらず、任意の物理データストレージ装置を指すことに留意されたい。複数のディスクを接続してハードドライブのバンク（組み立て品）などのデータストレージユニットを構成することができる。ここでは、データストレージユニットは、ディスクが１つである場合も含んでいる。複数のデータストレージユニットをデータネットワーク１０２を介して接続して分散データストレージシステムを構成することができる。ここでは、分散データストレージシステムは、データストレージユニットが１つである場合も含んでいる。ここでは、分散データストレージシステムは、ディスクの集合を有している。
【００１１】
図１において、分散データストレージシステム１０４は、３つのデータストレージユニット：データストレージユニット１  １２０、データストレージユニット２  １３０、およびデータストレージユニット３  １４０を有している。各データストレージユニットは３つのディスクを有しており、データストレージユニット１  １２０はディスク１  １２２、ディスク２  １２４、およびディスク３  １２６を有し、データストレージユニット１  １３０はディスク１  １３２、ディスク２  １３４、およびディスク３  １３６を有し、データストレージユニット３  １４０はディスク１  １４２、ディスク２  １４４、およびディスク３  １４６を有している。一般に、データストレージユニット内のディスクの数は多く、例えば、現在のデータストレージユニットは１２個のハードドライブを有している。技術の進歩に伴い、その数は増え続けている。分散データストレージシステム内のデータストレージユニットの数も多く、例えば、数百以上である。
【００１２】
図１は、データ通信システム用の代表的なネットワークアーキテクチャを示している。本発明の実施形態は、特定のネットワークアーキテクチャに適合することができる。例えば、各データストレージユニット内のディスクの数は様々であり、また、データストレージユニットのグループをローカルインターフェイスまたはローカルエリアネットワークを介して接続することができる。そして、複数のグループを接続して分散データストレージシステムを構成することができる。一般に、データストレージユニットは、特定のサイトが停電したり破壊されたりした場合、複数のサイトに地理的に分散させて冗長性を実現することができる。ディスクまたはデータストレージユニットは、専用のスタンドアローンユニット、または、ネットワークサーバ１  １０８もしくはユーザ装置１  １１２などのネットワーク要素の不可欠な部分であってもよいことに留意されたい。
【００１３】
分散データストレージシステムの信頼性ステータスは動的に変化し、ディスクおよびデータストレージユニットが故障すると、それらのデータは再構築され、故障した装置は交換されたり修理されたりする。ある時点でのシステムの信頼性を定量化する測定基準は、２つの一般的なクラス：前向き（forward-looking）および後ろ向き（backward-looking）に分類される。前向きの測定基準においては、各時点での信頼性は、データ損失につながる可能性のある潜在的（potencial）な将来のイベントに関して特徴付けられる。前向きの動的な測定基準は、将来のイベントの確率に依存しているＰＤＬやＭＴＴＤＬなどの従来の静的な測定基準と同様である。後ろ向きの測定基準は、潜在的な将来のイベントには依存しておらず、システムの実際の現在のステータスを表している。現在の信頼性は、データの冗長性が減少した過去のイベントの関数である。
【００１４】
本発明の実施形態においては、システムの信頼性は、ノーマルシーディービエイションスコア（ＮＤＳ）と呼んでいる動的な後ろ向きの測定基準によって特徴付けられる。この定式化において、データはデータブロックにまとめられている。ここでは、データブロックをブロックとも呼ぶ。ブロックはフラグメントに分割される。フラグメントの部分集合（subset）によってブロックを再構築することが求められる。ここでは、ブロックはフラグメントの集合を有している。詳細は後述する。時刻ｔでのＮＤＳはアルゴリズムにしたがって計算される。
【００１５】
【数１】
2011520182.tif 000003
【００１６】
ここで、ｋは、正常動作下での分散データシステム内の全てのブロックの冗長性レベルである。ここで、正常動作とは、全てのディスクが動作可能であって、全てのデータブロックの冗長性が損なわれていない分散データストレージシステムの状態を指す。
【００１７】
ｂiは、時間ｔで残っている、冗長性レベルがｉのブロックの数、
Ｔallocは、ディスクを再構築するための最短時間、
ｆは、ユーザ（ここでは、システム管理者とも呼ぶ）が選択したスケーリング係数（scaling factor）である。
【００１８】
パラメータＴallocは、後述するデータ割り当てスキームに依存する。当業者は他の構造にしたがってまとめられているデータに対するＮＤＳアルゴリズムを開発することができる。
【００１９】
システム管理者は、冗長性レベルのさらなる損失がさらにどれだけ重大かを反映するようにｆを選択してもよい。例えば、ｆ＝１０の場合、各冗長性レベルの損失によって、システムの信頼性は、さらに１桁だけ低下する。ｋの値は、システムの冗長性レベルに依存している。システムの冗長性は、記号（ｎ，ｍ）で表すことが可能である。各データブロックは、ｎ個のフラグメントに複製され、ストライプ化され、または符号化されているが、そのうちｍ（ｍ≦ｎ）個だけがブロックの読み取りに必要となる。ここで、ｋはｎ−ｍに等しい。例えば、ＲＡＩＤ−１システムは、（２，１）でｋ＝１と記述することが可能である。これは各ブロックが複製を持つが、そのコピー（フラグメント）のうち１つだけがブロックの読み取りに必要なためである。特定のデータブロックについての全てのフラグメントが存在する場合、残っている冗長性のレベルはｋである。特定のデータブロックについての１つのフラグメントが損失した場合、残っている冗長性のレベルはｋ−１である。一般に、特定のデータブロックについての残っている冗長性のレベルは、ブロックのデータが失われることなくデータブロックがさらに失ってもよいフラグメントの数である。各ディスクが任意のデータブロックの１つのフラグメントをホストしている実施形態では、特定のデータブロックについての残っている冗長性のレベルは、特定のデータブロックが失われるまでに故障してもよいディスクの数である。つまり、残っている冗長性のレベルは、ｋ−（失われたフラグメントの数）である。
【００２０】
１つまたは２つ以上のフラグメントが失われた場合に、再構築を実行して、システムの信頼性を正常動作下での信頼性となるように回復する。ここでは、「フラグメント再構築」は、そのブロックの他のフラグメントを使用して、失われたフラグメントを再作成（再組み立て）するプロセスを指す。ここでは、「ブロック再構築」は、ブロックの失われたフラグメントを再構築するプロセスを指す。
【００２１】
ＮＤＳ測定基準の主な利点を以下に示す。
（ａ）動的かつ効率的に計算できる。分散データストレージシステムには正確な動作のためにデータ割り当ておよび装置障害情報が必要であるため、ｂiについての情報が直ちに利用可能である。さらに、指数成分を予め容易に計算可能であり、Ｔallocも予め容易に計算可能な定数である。
（ｂ）フレキシブルであり、特定の装置に関して、ユーザ（システム管理者）がパラメータを構成可能である。システム管理者は、ｆを適切に設定することによって、冗長性の損失を重み付けすることができる。
（ｃ）失われそうなブロックには、測定基準において重みを大きくすることができる。ＮＤＳは、冗長性の損失にｆで指数的に重み付けをし、各冗長性レベルにおけるブロック数に線形的に重み付けをする。
（ｄ）比較的少数のブロックの冗長性の重大な損失は、システムに残っている大量の冗長性によってならされることはない（not amortized）。ＮＤＳは冗長性を失っていないブロックには影響されない。その理由は、ｉが０からｋ−１の範囲となるためである。
（ｅ）ディスク上でデータを再構築する時間も考慮される。ディスクサイズが増加するにしたがい、失われた冗長性を再構築する時間は、システムの信頼性においてますます重要な要因となる。パラメータとして再構築時間を明示的に含めることによって、同じ障害イベント下での様々なデータ割り当てを比較することができる。ＮＤＳはディスクを再構築する時間を線形的とみなす。
【００２２】
（式１）によって記述される実施形態においては、ＮＤＳには単位がない。正常動作下では、測定基準の値は０に等しい。全てのブロックが冗長性を失った場合（つまり、装置内のいずれかの場所でのもう１回の障害がデータ損失の原因となる場合）、その値はＢ×ｆk×Ｔallocとなる。データが失われると、ＮＤＳは正の無限大となるように定義されている。したがって、測定基準の値がより小さいと、システムの信頼性がより良好になる。他の実施形態においては、ＮＤＳ値は、実現可能な最悪のスコア（データ損失前）に対して正規化（normalize）され、正規化されたスコアについて０から１の範囲となる。
【００２３】
ＮＤＳによって、同じシステムの状態の比較、または、同じ冗長性スキーム（つまり、ｎおよびｍの値が同じ）を有しているが異なるデータ割り当てスキームを有している異なるシステムの状態の比較が可能になる。また、ＮＤＳは、正常動作下での信頼性予測に使用可能なＰＤＬやＭＴＴＤＬなどの標準的な（静的）信頼性の測定基準と組み合わせることも可能である。
【００２４】
前述のように、Ｔallocはデータ割り当てスキームに依存している。３つの一般的なデータ割り当てスキームに適用される本発明の実施形態を以下に説明する。これらのデータ割り当てスキームは、クラスタリング（Ｔalloc＝Ｔclus）、チェーン化デクラスタリング（Ｔalloc＝Ｔcdc）、およびデクラスタリング（Ｔalloc＝Ｔdealloc）と呼ばれる。
【００２５】
クラスタリングは、同じブロックのフラグメントを保存しているディスクの数が最小になるように、データブロックのフラグメントを配置する。図２Ａは、４個のディスク（Ｄ０  ２０２〜Ｄ３  ２０８と符号が付されている）と全部で１２個のブロック（各々が２個のフラグメントを備える）とを備えている（２，１）のデータストレージシステムを示している。ブロックの読み取りには１個のフラグメントだけが必要である。図２Ａにおいて、ブロックおよびフラグメントはインデックスブロック：フラグメントによって示されており、例えば、表記０：１はブロック０とフラグメント１を示している。図２Ａに示すように、ディスクＤ０  ２０２およびディスクＤ１  ２０４は、ブロック０から５のフラグメントを保存しているのに対して、ディスクＤ２  ２０６およびディスクＤ３  ２０８は、ブロック６から１１のフラグメントを保存している。図２Ｂに示すように、ディスクＤ０  ２０２に障害が発生すると、次の障害の影響されやすい唯一のデータは、ディスクＤ１  ２０４上に保存されているデータであって、データ損失の可能性のある唯一の状況は、ディスクＤ１  ２０４が故障することである。しかし、ディスクＤ０  ２０２上に保存されているフラグメントを再構築するには、ディスクＤ１  ２０４が唯一の回復元であり、つまり、このディスクが全てのフラグメントの再構築の回復集合における唯一のディスクである。そのため、全ての再構築がディスクＤ１  ２０４上の回復帯域（recovery bandwidth）を巡って競合することになる。
【００２６】
この場合の（一定の回復帯域ついての）最適なスケジュールは、再構築を並列にではなく順番に実行するものになる。一般に、重複している回復集合によって再構築を実行すると、重複しているディスクの回復帯域が分割されて、全ての再構築が遅くなる。クラスタリングの下で、ディスクの障害後に並列に実行可能な再構築の最大数は
【００２７】
【数２】
2011520182.tif 000004
【００２８】
となる。回復帯域が一定の場合、この数の再構築を並列に実行すると最小の再構築時間となる。したがって、クラスタリングの下での故障したディスクの全てのデータフラグメントを再構築する最小時間は：
【００２９】
【数３】
2011520182.tif 000005
【００３０】
となる。ここで、ｄsizeは故障したディスクに保存されているデータの量、ｂrは回復帯域である。ただし、Ｔclusは、データ再構築だけを考慮しており、元のディスクが交換または修理されたり、システムに再統合されたりした後に、それらのデータを元のディスクに転送することは無視していることに留意されたい。この選択の理由は、ＮＤＳは冗長性に関するものであり、ハードウェア障害後の再構築によって冗長性が増加するのに対して、元のディスクへデータを転送して戻してもそうはならないからである。さらに、Ｔclusは、ディスクが素早く交換されたり修理されたりする場合でも、データを再構築する最小時間になることに留意されたい。ディスクは、オンラインになったときには空だと仮定される。つまり、ディスクの内容全体をコピーして戻せるようになる前に再構築しなければならない。以下のＴcdcとＴdeclusとは同様に定義されている。
【００３１】
チェーン化デクラスタリングは、各ブロックのフラグメントを、論理的に隣接しているディスクにバランスよく保存されるように、分散させる。例えば、図３Ａは、この冗長性スキームの下でのフラグメントの配置を示している。データストレージシステムは、Ｄ０  ３０２〜Ｄ３  ３０８と符号が付されている４つのディスクを有している。例えば、図３Ｂにおいて、ディスクＤ０  ３０２が故障すると、ディスクＤ１  ３０４およびＤ３  ３０８の両方が再構築の構築元としての役割を果たすことができる。２つのフラグメントは並列に再構築され、クラスタリング割り当てスキームに比べると、全体の再構築時間と、データが脆弱である期間と、が減少する。しかし、ディスクＤ０  ３０２上のデータが再構築される前に、ディスクＤ１  ３０４またはＤ３  ３０８のいずれかが故障すると、その障害によってデータは失われることになる。この割り当てスキームを仮定すると、ディスクの障害後に並列に実行可能な再構築の最大数は
【００３２】
【数４】
2011520182.tif 000006
【００３３】
となる。回復帯域が一定であると仮定すると、故障したディスク上に保存されているデータを再構築するのに要する最小時間は
【００３４】
【数５】
2011520182.tif 000007
【００３５】
となる。
【００３６】
デクラスタリング（グループロケイティドデクラスタリング（Group Rotated Declustering）を省略して呼んだもの）は、ディスク間でのコロケーションの程度を最小にするように、データブロックのフラグメントを分散させる。これは、グループ内の作動中のディスクにわたって再構築の負荷を均等にさせることにつながる。図４Ａは、デクラスタリングのための複数のデータフラグメントの配置を示している。データストレージシステムは、Ｄ０  ４０３〜Ｄ３  ４０８と符号が付されている４つのディスクを有している。図４Ｂに示すように、ディスクＤ０  ４０２が故障すると、残りのディスク（Ｄ１  ４０４〜Ｄ３  ４０８）の各々は、正確に２つのフラグメントの再構築の回復元としての役割を果たすことができ、３つの再構築を並列に実行することができる。しかし、ディスクＤ０  ４０２上に保存されているデータが再構築できる前に、他のディスクのいずれかが故障すると、データが失われることになる。３つの割り当てスキームの中で、ディスク再構築を完了する時間は、デクラスタリングが最小となるであろう。デクラスタリングはフラグメントを均等に展開するため、潜在的に並列に実行可能な再構築の数は
【００３７】
【数６】
2011520182.tif 000008
【００３８】
となる。ここで、ｄgは、各グループ内のディスクの数、つまり各ディスクのデータが展開されているディスクの数である。再び、回復帯域が一定であると仮定すると、故障したディスクのデータを再構築するのに要する最小時間は
【００３９】
【数７】
2011520182.tif 000009
【００４０】
となる。
【００４１】
本発明の実施形態においては、データを故障したディスクおよびデータストレージユニットから素早く再構築して、分散データストレージシステムの長期間の冗長性の減少を避けるために、ＮＤＳがデータ回復スケジューリングポリシー（アルゴリズム）の測定基準として使用されている。このポリシーは、ここでは最小交差（ＭｉｎＩ）と呼ばれ、各フラグメントの再構築に対して回復集合を選択し、全体の再構築時間を最小化するよう再構築の集合の順番を設定する。ここでは、回復集合は、回復元ディスクおよび回復先ディスクの集合を指す。指定された回復先ディスクについて、回復集合は、回復元ディスクの集合も指す。ここでは、回復先ディスクは目標ディスクとも呼ばれる。ＭｉｎＩは、各再構築をいつ実行し、どのディスクがそれに関わるかを定める。冗長性のために、各再構築において、複数のディスクが潜在的にデータ回復元となり得る。高性能化のために、ＭｉｎＩは、各回復について異なる目標（回復先）ディスクを使用する。この判断のために、ＭｉｎＩはＮＤＳ測定基準を活用して、信頼性と性能とをトレードオフする。例えば、ある実施形態において、ディスク帯域の増加によって予測されたパーセント損失（percentage loss）を超えるパーセントＮＤＳ利得（percentage NDS gain）が発生する場合、ＭｉｎＩは、予め定められている限界まで再構築専用のディスク帯域を増加させる。
【００４２】
ＭｉｎＩスケジューリングアルゴリズムは、以下の原理に基づいて、グリードな発見的問題解決法を使用する。
（ａ）ＭｉｎＩは、現在の冗長性レベルに基づいて再構築を順序付けする。現在の冗長性の量が低ければ、優先度は高くなる。最も脆弱なデータブロックのフラグメントを最初に再構築することによって、さらなる障害が発生した場合のデータ損失の可能性を最小にすることが保証される。さらに、再構築はコピーバックよりも優先度が高く、後者は冗長性を増加させない。そのため、対応するディスク上で何らの再構築も実行されていないときにのみコピーバックを実行することができる。
（ｂ）ＭｉｎＩは、干渉を回避しながら、並列性を最大化するように各再構築の回復集合を選択する。フラグメントを再構築するためには、同じブロックの残りのフラグメントのうち任意のｍ個のフラグメントを使用することができる。ＭｉｎＩは、回復元ディスクを柔軟に選択して、並列再構築の回復集合内の交差を最小化する。また、２次元ディスクスコアとグリードなアルゴリズムとを使用して、ディスクスコアが最小であるｍ個のディスクを選択する。ＮＤＳによって計算される信頼性の利得が通常のアクセス性能における潜在的な損失を正当化するものである場合、完全に独立して実行できない（つまり、重複している回復集合を有している）再構築は、並列に実行されるだけである。
（ｃ）回復に割り当てられているディスク帯域の増加によって全体の信頼性が改善される。しかし、回復帯域が広くなると、分散データストレージシステムに実際にアクセスする帯域幅が狭くなる。さらに、システム内の全ディスクの回復帯域の増加は、ディスクの小さな集合だけが回復処理のボトルネックになっているときには、効果的ではないことがある。ＭｉｎＩは、複数の再構築に関連しているディスクの部分集合の回復帯域を、予め定められている限界値まで動的に増加させる。限界はユーザ（システム管理者）が指定することができる。このアプローチの結果、通常のアクセス帯域の損失が小さいのに、システム信頼性は高くなる。
【００４３】
ＭｉｎＩは、入力として、実施すべき再構築の集合を取り込み、出力として、スケジュールを生成する。スケジュールには、次に実施すべき再構築と使用すべき回復集合とが含まれている。入力される再構築の集合は、特定のブロックの失われたフラグメントの再作成に使用可能な既存のフラグメントの位置によって定められる。スケジュールを計算するために、ＭｉｎＩは、冗長性の残りの量に基づいて、再構築の集合を独立のキューに分割する。つまり、残っているフラグメントの数が同数であるブロックの再構築をグループにまとめる。キューは、最低の冗長性レベルから最高の冗長性レベルまでの範囲内にある冗長性レベルで順序付けされる。ポリシーは、残っている冗長性の量が最小で空ではないキューに関連付けられている再構築のスケジューリングから開始する。以下で説明するように、交差行列はこれらの再構築について計算される。ＭｉｎＩは、交差行列の中から、交差が最小の潜在的なディスク回復元の集合を有している再構築のペアを選択する。交差が最小の複数のペアが存在する場合、集合内のランダムなペアが選択される。本発明の他の実施形態は、同じ冗長性レベル内の将来的な交差を最小にする、より高度なタイブレーキングアプローチを使用してもよい。
【００４４】
その後、以下で説明するように、ＭｉｎＩは、２次元ディスクスコアを使用して選択された再構築に対して回復集合を選択する。選択された再構築が重複する回復集合を有している場合、ＭｉｎＩは、信頼性と性能との間のトレードオフに応じてそれらをスケジュールに追加する。以下で説明するように、実際のトレードオフ関数はユーザが指定することができる。そして、ポリシーは、現在の冗長性レベルのキュー内の残りの再構築を繰り返し行い、（この冗長性レベルに対する交差行列を再び参照して）すでにスケジュール内にある再構築と最も交差が少ない再構築を選択し、回復集合を割り当て、前述のように信頼性と性能とのトレードオフを取る。残りの冗長性の昇順に、他の冗長性レベルのキュー内の再構築に関する前述の処理を繰り返す。他の各冗長性レベルについて、スケジュール内に存在する以前のキューの再構築と現在のキュー内の再構築との交差が計算される。この交差についての情報は現在の交差行列内に現れる。
【００４５】
各冗長性レベルについて、第１の再構築をスケジュールに含めることが拒絶された後は、さらなる再構築を考慮する必要はない。全ての冗長性レベルのキューにわたる再構築をスケジュールに含めることが考慮された後にポリシーは停止する。スケジュールに含められない再構築は、現在のスケジュールが実行された後で再度考慮されることになる。
【００４６】
交差行列は、各冗長性レベルのキューについて計算される。行列の各要素は、そのキュー内の再構築の潜在的な回復元の集合のペアの交差の大きさを有している。ｉ番目の行は、ｉ番目の再構築の回復元の集合およびそのキュー内の残りの全ての再構築の交差の大きさを含んでいる。したがって、各交差行列は対称である。つまり、交差（ｉ、ｊ）は（ｊ、ｉ）と同じである。
【００４７】
ディスクスコアは、システム内の全てのディスクについて計算された２次元的なスコアである。ディスクスコアは静的スコアと動的スコアとを有している。ディスクの静的スコアは、回復元または回復先となり得る再構築の数を示している。ディスクの動的スコアは、回復集合が回復元または回復先のいずれかに属している、スケジュールされた再構築の数を示している。初期には、全てのディスクにディスクスコア０：０が割り当てられている。１番目の数は静的スコアを示し、２番目の数は動的スコアを示している。ＭｉｎＩは、再構築を繰り返し、幾つかの再構築の回復元になる可能性がある各ディスクの静的スコアを増加させる。動的スコアは、ＭｉｎＩが現在のスケジュールに再構築を追加すると更新される。２つのディスクのディスクスコアの比較には、最初に行われる動的スコアの比較と、動的スコアが同じである場合に続いて行われる静的スコアの比較とが含まれる。
【００４８】
ＭｉｎＩは、潜在的な回復元集合内のディスクのディスクスコアを使用して、ディスクスコアが最小となるｍ個のディスクを選択する。回復先のディスクが選択されていない場合（以前に開始された同じ再構築が、システム内の他のイベントによって中断されている場合、そのディスクが選択されていることがある）、他の使用可能なディスクの中から最小のディスクスコアを有するディスクが選択され、その動的スコアも増加させる。
【００４９】
ＭｉｎＩは、ＮＤＳを利用して信頼性と性能とのトレードオフを取り、性能の低下に比べてＮＤＳを十分に改善できる場合にだけ、２つの独立してない再構築を並列にスケジューリングする。性能が低下する理由は、ＭｉｎＩは、回復帯域を、（以下で説明するユーザ指定の限界まで）ディスク上で並列に実行されている各再構築に対し、各再構築があたかもディスク上で単独で実行されているように、割り当てるからである。このことは、重複している回復集合の再構築によって、通常のストレージアクセスに使用可能な帯域幅が奪われることを意味する。したがって、性能と信頼性とのトレードオフを取る場合、性能の変化は、通常のアクセス帯域幅のパーセント損失によって表される。ここで、通常のアクセスの帯域幅のパーセント損失は、可変損失によって表される。ＮＤＳの利得は、再構築前のＮＤＳ値と再構築後の予測されるＮＤＳ値との間のパーセント差として計算される。ここでは、ＮＤＳの利得は可変利得によって表される。
【００５０】
再構築の回復集合が、スケジュール上にすでに存在している他の再構築の回復集合と重複する場合、ＭｉｎＩは、スケジュール上の再構築の各ＮＤＳの利得の総和を、重複しているディスクの回復帯域が増加した場合にシステムが被るさらなる性能損失と比較する。当業者は、本発明の実施形態に対して様々な比較関数を指定できる。ここでは、比較関数は、トレードオフ関数とも呼ばれ、利得および損失の関数：トレードオフ（利得、損失）である。本発明の一実施形態においては、ＭｉｎＩは、信頼性利得と潜在的な性能損失との間の線形比較を使用する。言い換えると、信頼性のパーセント利得（percentage gain）が性能のパーセント損失よりも高い場合、再構築がスケジュールに追加される。最後に、再構築にさらなるディスク帯域幅を割り当てたことに起因する、最大許容可能性能損失には、ユーザが定義した限界が存在する。ＭｉｎＩは、信頼性の利得が性能の損失よりも比較的小さい場合または性能の損失の限界に達した場合に、次の冗長性レベルのキューにジャンプする。
【００５１】
図５は、回復プロセス全体の実施形態の模式図を示している。ステップ５０２において、ディスクまたはデータストレージユニットの故障が検出される。続いて、ステップ５０４に進み、回復タスクの集合（再構築の集合）が構成される。これらのタスクはステップ５０６でモニターされる。ステップ５０８において、ステータスチェックが実施される。実行を待っているタスクがない場合、ステップ５１０に進み、プロセスは終了する：つまり、故障が回復している。実行を待っているタスクが存在する場合、ステップ５１２に進み、ＭｉｎＩポリシーが実行される。ステップ５１２のさらなる詳細な説明は以下で説明する。ステップ５１２の出力はタスクの集合であり、それらタスクの集合は、ステップ５１４でスケジュールされ、ステップ５１６で実行される。その後、ステップ５０６にループバックし、ステップ５０６〜ステップ５１６が繰り返される。
【００５２】
ＭｉｎＩポリシー（ステップ５１２）の詳細を図６Ａ〜図６Ｄに示す。ステップ５１２の入力および出力は、それぞれＡ５０１およびＢ５０３で示されている。図６Ａを参照する。ステップ６０２において、アルゴリズムのパラメータが初期化される。スケジュールされ実行されｓｃｈｅｄＬｉｓｔと表されるタスクの一覧は空集合に初期化される。パラメータｒＬｅｖｅｌＱｓは、冗長性の残りの量によって順序付けられている冗長性キューの一覧に設定される。全てのディスクに対するディスクスコアが初期化される。
【００５３】
続いて、ステップ６０４に進み、ステータスチェックが実施される。ｒＬｅｖｅｌＱｓが空である場合は、ステップ６１０に進み、ｓｃｈｅｄＬｉｓｔが戻され、ＭｉｎＩポリシーを抜ける。ｒＬｅｖｅｌＱｓが空ではない場合は、ステップ６０６に進む。パラメータｒＬｅｖｅｌＱはｒＬｅｖｅｌＱｓ内の第１のリスト要素として定義され、ｒＬｅｖｅｌＱｓ．ｆｉｒｓｔ＿ｌｉｓｔ＿ｅｌｅｍｅｎｔと表される。続いて、この第１のリスト要素は、ｒＬｅｖｅｌＱｓから取り除かれる。続いて、ステップ６０８に進み、ステータスチェックが実施される。ｒＬｅｖｅｌＱが空である場合は、ステップ６０４に戻る。ｒＬｅｖｅｌＱが空ではない場合は、ステップ６１２に進む（図６Ｂを参照）。ステップ６１２においては、ｒＬｅｖｅｌＱ内の再構築について交差行列が作られる。
【００５４】
続いて、ステップ６１４に進み、ステータスチェックが実施される。ｒＬｅｖｅｌＱが空である場合は、ステップ６０４（図６Ａ）に戻る。ｒＬｅｖｅｌＱが空ではない場合は、ステップ６１６に進み、ステータスチェックが実施される。ｓｃｈｅｄＬｉｓｔが空ではない場合、ステップ６１８に進む（図６Ｃ参照）。ｓｃｈｅｄＬｉｓｔが空ではない場合、ステップ６３０に進む（図６Ｄ参照）。
【００５５】
まず、ステップ６１８から始まる分岐について説明する。ステップ６１８（図６Ｃ）において、以下の処理が実施される：（ａ）ｒＬｅｖｅｌＱから、交差行列を使用して、交差が最小である再構築のペアを選択する。そのようなペアが２つ以上存在する場合、ペアの１つを無作為に選択する。（ｂ）各再構築について、ディスクスコアが最小であるｍ個の回復元ディスクを選択する。そのような回復元ディスクの集合が２つ以上存在する場合、集合の１つを無作為に選択する、（ｃ）各再構築について、ディスクスコアが最小である他のディスクを回復先ディスクとして選択する。そのようなディスクが２つ以上存在する場合、ディスクの１つを無作為に選択する。続いて、ステップ６２０に進み、以下のパラメータが設定される：（ａ）第１の再構築の全ての回復元ディスクと回復先ディスクの集合であるｒｅｃｏｖｅｒｙ＿ｓｅｔ＿１、（ｂ）第２の再構築の全ての回復元ディスクと回復先ディスクの集合であるｒｅｃｏｖｅｒｙ＿ｓｅｔ＿２、（ｃ）ｒｅｃｏｖｅｒｙ＿ｓｅｔ＿１とｒｅｃｏｖｅｒｙ＿ｓｅｔ＿２の両方に属しているディスクの集合であるｉｎｔｅｒｓｅｃｔｉｏｎ。
【００５６】
続いて、ステップ６２２に進み、ステータスチェックが実施される。ｉｎｔｅｒｓｅｃｔｉｏｎが空である場合、ステップ６２４に進み、再構築のペアがｓｃｈｅｄＬｉｓｔに追加されるとともに、ｒＬｅｖｅｌＱから削除される。続いて、ステップ６１４（図６Ｂ）に戻る。ｉｎｔｅｒｓｅｃｔｉｏｎが空ではない場合、ステップ６２６に進み、再構築のペアに対する利得、損失、およびトレードオフが（前述のように）計算される。続いて、ステップ６２８に進み、ステータスチェックが実施される。トレードオフの値が受け入れられる場合、ステップ６２４に進み、その後にステップ６１４（図６Ｂ）に戻る。トレードオフの値が受け入れられない場合、ステップ６０４（図６Ａ）に戻る。
【００５７】
図６Ｂのステップ６１６を再度参照すると、ｓｃｈｅｄＬｉｓｔが空ではない場合、ステップ６３０（図６Ｄ）に進む。ステップ６３０において、以下の処理が実施される：（ａ）ｒＬｅｖｅｌＱから、交差行列を使用して、交差が最小である再構築を選択する。そのような再構築が２つ以上存在する場合、そのうちの１つを無作為に選択する。（ｂ）再構築について、ディスクスコアが最小であるｍ個の回復元ディスクを選択する。そのような回復元ディスクの集合が２つ以上ある場合、そのうちの１つを無作為に選択する、（ｃ）再構築について、ディスクスコアが最小である他のディスクを回復先ディスクとして選択する。そのようなディスクが２つ以上ある場合、そのうちの１つを無作為に選択する。続いて、ステップ６３２に進み、以下のパラメータが設定される：（ａ）再構築の全ての回復元ディスクと回復先ディスクの集合であるｒｅｃｏｖｅｒｙ＿ｓｅｔ、（ｂ）ｒｅｃｏｖｅｒｙ＿ｓｅｔとｓｃｈｅｄＬｉｓｔの両方に属しているディスクの集合であるｉｎｔｅｒｓｅｃｔｉｏｎ。
【００５８】
続いて、ステップ６３４に進み、ステータスチェックが実施される。ｉｎｔｅｒｓｅｃｔｉｏｎが空である場合、ステップ６３６に進み、再構築がｓｃｈｅｄＬｉｓｔに追加されるとともに、ｒＬｅｖｅｌＱから削除される。続いて、ステップ６１４（図６Ｂ）に戻る。ｉｎｔｅｒｓｅｃｔｉｏｎが空ではない場合、ステップ６３８に進み、再構築の利得、損失、およびトレードオフが計算される。続いて、ステップ６４０に進み、ステータスチェックが実施される。トレードオフの値が受け入れられる場合、ステップ６３６に進み、その後にステップ６１４（図６Ｂ）に戻る。トレードオフの値が受け入れられない場合、ステップ６０４（図６Ａ）に戻る。
【００５９】
本発明の実施形態は、データネットワーク１０２を介して分散データストレージシステム１０４と通信する回復マネージャ１０６として図１に模式的に示したコンピュータに、実装することができる。ＭｉｎＩポリシーは、回復すべき再構築が存在する場合は、常に、回復マネージャ１０６によって起動される。本発明の実施形態において、回復マネージャ１０６は、各データストレージユニット（データストレージユニット１  １２０、データストレージユニット２  １３０、およびストレージユニット３  １４０）に対し、故障しているディスク、それらの内容、各フラグメントの再構築の潜在的な回復元を問い合わせることによって、必要な再構築を追跡する。本発明の他の実施形態において、データストレージユニットは、自立的に情報（ステータスと故障警報など）を回復マネージャ１０６に送信してもよい。回復マネージャ１０６は、ＭｉｎＩの出力にしたがって即座に複数の再構築を並列にスケジューリングする。これらの再構築が完了すると、回復マネージャ１０６は、全ての再構築が実施されるまでは、ＭｉｎＩを再度呼び出す。回復マネージャ１０６は、再度データストレージユニットと相互動作をすることによって、ディスクが交換されたことを検出する。これらの信頼性イベント（故障、再構築、および交換）の後に、回復マネージャ１０６は前述のモデルを使用してシステムのＮＤＳを計算する。
【００６０】
図７は、本実施形態の回復マネージャ１０６の概略図であり、回復マネージャ１０６は、公知のコンピュータとすることができ、中央処理装置ＣＰＵ  ７０２、メモリ７０４、データストレージ装置７０６、および、データネットワークインターフェイス７０８を有している。データストレージ装置７０６は、ハードディスク、不揮発性メモリ、または、その他のコンピュータ読み取り可能な記録媒体（読み取り専用メモリであるコンパクトディスクなど）を有している。データネットワークインターフェイス７０８は、回復マネージャ１０６をデータネットワーク１０２に接続する。回復マネージャ１０６は、ユーザ入出力インターフェイス７１０を介してユーザ入出力装置７１２（キーボードやマウスなど）に接続されるとともに、ビデオディスプレイインターフェイス７１４を介してビデオディスプレイ７１６に接続される。
【００６１】
公知のように、コンピュータは、コンピュータの全体動作およびアプリケーションを定めているコンピュータソフトウェアの制御の下で動作する。ＣＰＵ  ７０２は、コンピュータの全体動作およびアプリケーションを定めているコンピュータプログラム命令を実行することによって、コンピュータの全体動作およびアプリケーションを制御する。コンピュータプログラム命令は、記憶装置７０６に保存され、プログラム命令の実行が必要なときに、メモリ７０４にロードすることができる。図５および図６Ａ〜６Ｄの方法ステップは、メモリ７０４またはデータストレージ装置７０６（または、メモリ７０４とデータストレージ装置７０６との組み合わせ）に保存されているコンピュータプログラム命令によって定められ、コンピュータプログラム命令を実行するＣＰＵ  ７０２によって制御される。例えば、コンピュータプログラム命令は、図５および図６Ａ〜６Ｄの方法ステップが実装されたアルゴリズムを実行するように、当業者によってプログラムされたコンピュータ実行可能コードとして実装することができる。したがって、コンピュータプログラム命令を実行することによって、ＣＰＵ  ７０２は図５および図６Ａ〜６Ｄの方法ステップが実装されたアルゴリズムを実行することになる。
【００６２】
当業者であれば、実際のコンピュータには他の構成要素も実装できることと、図７はコンピュータの幾つかの構成要素を図示の便宜上高レベルに表示していることが理解できるであろう。
【００６３】
前述の発明を実施するための最良の形態は、あらゆる観点において、例示的で典型的であって、限定的ではないと理解されるべきであり、本明細書において開示している本発明の範囲は、発明を実施するための最良の形態から定められるのではなく、むしろ、特許法によって認められる全範囲にしたがって解釈されるように特許請求の範囲から定められる。当然、本明細書で示し詳述した実施形態は、本発明の原理を単に例示しており、当業者は本発明の範囲と精神から逸脱することなく様々な修正を実装することができる。当業者は、本発明の範囲と精神から逸脱することなく、様々な他の特徴の組み合わせを実装することができる。
【図１】
2011520182.tif 000013
【図２Ａ】
2011520182.tif 000014
【図２Ｂ】
2011520182.tif 000015
【図３Ａ】
2011520182.tif 000016
【図３Ｂ】
2011520182.tif 000017
【図４Ａ】
2011520182.tif 000018
【図４Ｂ】
2011520182.tif 000019
【図５】
2011520182.tif 000020
【図６Ａ】
2011520182.tif 000021
【図６Ｂ】
2011520182.tif 000022
【図６Ｃ】
2011520182.tif 000023
【図６Ｄ】
2011520182.tif 000024
【図７】
2011520182.tif 000025
【国際調査報告】
2011520182.tif 000026
2011520182.tif 000027