(57)【特許請求の範囲】
【請求項１】
複数のデータ記憶装置、第１の行パリティ記憶装置、第２の行パリティ記憶装置、第１の対角パリティ記憶装置および第２の対角パリティ記憶装置を含む複数の記憶装置を有するストレージアレイに関係する故障からの復元を容易にするための方法であって、
前記複数のデータ記憶装置に関する第１の行パリティを決定することであり、前記第１の行パリティが前記複数のデータ記憶装置にわたりかつ前記第１の行パリティ記憶装置上に記憶される、第１の行パリティを決定すること、
第１の対角パリティ集合に沿った第１の対角パリティを決定することであり、前記第１の対角パリティが前記複数のデータ記憶装置のうちの１つを除くすべておよび前記第１の行パリティ記憶装置にわたり、前記決定した第１の対角パリティが前記第１の対角パリティ記憶装置上に記憶される、第１の対角パリティを決定すること、
第２の対角パリティ集合に沿った第２の対角パリティを決定することであり、前記第２の対角パリティが前記複数のデータ記憶装置のうちの１つを除くすべておよび前記第１の行パリティ記憶装置にわたり、前記決定した第２の対角パリティが前記第２の対角パリティ記憶装置上に記憶される、第２の対角パリティを決定すること、ならびに
前記複数のデータ記憶装置に関する第２の行パリティを決定することであり、前記第２の行パリティが前記複数のデータ記憶装置にわたりかつ前記第２の行パリティ記憶装置上に記憶され、前記決定された第２の行パリティの少なくとも一部が、前記複数のデータ記憶装置の一部に基づくこと
を含む方法。
【請求項２】
前記複数の記憶装置がｎ個のデータ記憶装置を備え、ここで、ｎ＝ｐ−１であり、ｐは３よりも大きな素数である、請求項１に記載の方法。
【請求項３】
前記複数の記憶装置の各々をチャンクに分割すること、および、
前記複数の記憶装置の各々を各記憶装置内に同数のチャンクを含むストライプに編成することであって、前記複数の記憶装置の各々が（ｐ−１）２個のチャンクにストライプ化される、ストライプに編成すること
をさらに含む、請求項２に記載の方法。
【請求項４】
前記第１の行パリティおよび前記第２の行パリティを決定することが、（ｐ−１）２個の行を別々に含む決定した第１の行パリティおよび決定した第２の行パリティに少なくとも一部は基づいて別々に規定される前記第１の行パリティおよび前記第２の行パリティを含む、請求項３に記載の方法。
【請求項５】
前記第１の対角パリティ集合に沿った前記第１の対角パリティを決定することは、所定のストライプのそれぞれの第１の対角パリティ集合に属するすべてのチャンクが前記所定のストライプ内に記憶されるように、（ｐ−１）２個の行内でラップアラウンドする前記第１の対角パリティ集合に少なくとも一部は基づいて規定される前記第１の対角パリティを含む、請求項４に記載の方法。
【請求項６】
前記第２の対角パリティ集合に沿った前記第２の対角パリティを決定することは、所定のストライプのそれぞれの第２の対角パリティ集合に属するすべてのチャンクが前記所定のストライプ内に記憶されるように、前記（ｐ−１）２個の行内で部分的にラップアラウンドする前記第２の対角パリティ集合に少なくとも一部は基づいて規定される前記第２の対角パリティを含む、請求項５に記載の方法。
【請求項７】
前記第２の行パリティに関係する１つまたは複数の行パリティ値および前記第２の対角パリティに関係する１つまたは複数の対角パリティ値を利用する第１の行−対角パリティ（ＲＤＰ）スキームの実装すること、ならびに次に、前記第１の対角パリティに関係する１つまたは複数の対角パリティ値および前記第１の行パリティに関係する１つまたは複数の行パリティ値を利用する第２のＲＤＰスキームの実装することをさらに含む、請求項６に記載の方法。
【請求項８】
前記複数の記憶装置の各々が、独立ディスクの冗長アレイ（ＲＡＩＤ）スキームにしたがってストライプ化される、請求項３に記載の方法。
【請求項９】
前記複数の記憶装置が、ハードディスクドライブ、ソリッドステートディスクドライブ、ダイレクトアクセス記憶装置、磁気テープ、バブルメモリ、光記憶媒体、電子ランダムアクセスまたはデジタル多用途ディスクのうちの少なくとも１つを含む、請求項１に記載の方法。
【請求項１０】
前記ストレージアレイに関係する故障が、前記複数の記憶装置のうちの１つもしくは複数における故障または前記複数の記憶装置のうちの１つもしくは複数に関係するチェックサムエラーの組み合わせを含む前記ストレージアレイに関係する３つの同時発生故障を含む、請求項１に記載の方法。
【請求項１１】
複数のデータ記憶装置、第１の行パリティ記憶装置、第２の行パリティ記憶装置、第１の対角パリティ記憶装置および第２の対角パリティ記憶装置を含む複数の記憶装置を有するストレージアレイに関係する故障からの復元を容易にするための装置であって、
論理回路を有するリカバリマネージャであり、前記論理回路が、
前記複数のデータ記憶装置に関する第１の行パリティを決定し、前記第１の行パリティが前記複数のデータ記憶装置にわたりかつ前記第１の行パリティ記憶装置上に記憶され、  第１の対角パリティ集合に沿った第１の対角パリティを決定し、前記第１の対角パリティが前記複数のデータ記憶装置のうちの１つを除くすべておよび前記第１の行パリティ記憶装置にわたり、前記決定した第１の対角パリティが前記第１の対角パリティ記憶装置上に記憶され、
第２の対角パリティ集合に沿った第２の対角パリティを決定し、前記第２の対角パリティが前記複数のデータ記憶装置のうちの１つを除くすべておよび前記第１の行パリティ記憶装置にわたり、前記決定した第２の対角パリティが前記第２の対角パリティ記憶装置上に記憶され、ならびに
前記複数のデータ記憶装置に関する第２の行パリティを決定し、前記第２の行パリティが前記複数のデータ記憶装置にわたりかつ前記第２の行パリティ記憶装置上に記憶され、前記決定された第２の行パリティの少なくとも一部が、前記複数のデータ記憶装置の一部に基づく
ように構成される、リカバリマネージャ
を備える装置。
【請求項１２】
前記複数の記憶装置がｎ個のデータ記憶装置を備え、ここで、ｎ＝ｐ−１であり、ｐは３よりも大きな素数である、請求項１１に記載の装置。
【請求項１３】
前記複数の記憶装置の各々をチャンクに分割し、および
前記複数の記憶装置の各々を各記憶装置内に同数のチャンクを含むストライプに編成し、前記複数の記憶装置の各々が（ｐ−１）２個のチャンクにストライプ化される
ように構成された前記論理回路をさらに備える、請求項１２に記載の装置。
【請求項１４】
前記第１の行パリティおよび前記第２の行パリティを決定することが、（ｐ−１）２個の行を別々に含む決定した第１の行パリティおよび決定した第２の行パリティに少なくとも一部は基づいて別々に規定される前記第１の行パリティおよび前記第２の行パリティを含む、請求項１３に記載の装置。
【請求項１５】
前記第１の対角パリティ集合に沿った前記第１の対角パリティを決定することは、所定のストライプのそれぞれの第１の対角パリティ集合に属するすべてのチャンクが前記所定のストライプ内に記憶されるように、（ｐ−１）２個の行内でラップアラウンドする前記第１の対角パリティ集合に少なくとも一部は基づいて規定される前記第１の対角パリティを含む、請求項１４に記載の装置。
【請求項１６】
前記第２の対角パリティ集合に沿った前記第２の対角パリティを決定することは、所定のストライプのそれぞれの第２の対角パリティ集合に属するすべてのチャンクが前記所定のストライプ内に記憶されるように、前記（ｐ−１）２個の行内で部分的にラップアラウンドする前記第２の対角パリティ集合に少なくとも一部は基づいて規定される前記第２の対角パリティを含む、請求項１５に記載の装置。
【請求項１７】
前記論理回路は、前記第２の行パリティに関係する１つまたは複数の行パリティ値および前記第２の対角パリティに関係する１つまたは複数の対角パリティ値を利用する第１の行−対角パリティ（ＲＤＰ）スキームの実装すること、ならびに次に、前記第１の対角パリティに関係する１つまたは複数の対角パリティ値および前記第１の行パリティに関係する１つまたは複数の行パリティ値を利用する第２のＲＤＰスキームの実装するようにさらに構成されている、請求項１６に記載の装置。
【請求項１８】
前記複数の記憶装置の各々が、独立ディスクの冗長アレイ（ＲＡＩＤ）スキームにしたがってストライプ化される、請求項１３に記載の装置。
【請求項１９】
前記ストレージアレイに関係する故障が、前記複数の記憶装置のうちの１つもしくは複数における故障または前記複数の記憶装置のうちの１つもしくは複数に関係するチェックサムエラーの組み合わせを含む前記ストレージアレイに関係する３つの同時発生故障を含む、請求項１１に記載の装置。
【請求項２０】
ストレージアレイに関係する故障からの復元を容易にするためのシステムであって、
複数のデータ記憶装置、第１の行パリティ記憶装置、第２の行パリティ記憶装置、第１の対角パリティ記憶装置および第２の対角パリティ記憶装置を含む複数の記憶装置、ならびに、論理回路を有するリカバリマネージャを有し、
前記論理回路が、
前記複数のデータ記憶装置に関する第１の行パリティを決定し、前記第１の行パリティが前記複数のデータ記憶装置にわたりかつ前記第１の行パリティ記憶装置上に記憶され、
第１の対角パリティ集合に沿った第１の対角パリティを決定し、前記第１の対角パリティが前記複数のデータ記憶装置のうちの１つを除くすべておよび前記第１の行パリティ記憶装置にわたり、前記決定した第１の対角パリティが前記第１の対角パリティ記憶装置上に記憶され、
第２の対角パリティ集合に沿った第２の対角パリティを決定し、前記第２の対角パリティが前記複数のデータ記憶装置のうちの１つを除くすべておよび前記第１の行パリティ記憶装置にわたり、前記決定した第２の対角パリティが前記第２の対角パリティ記憶装置上に記憶され、ならびに、
前記複数のデータ記憶装置に関する第２の行パリティを決定し、前記第２の行パリティが前記複数のデータ記憶装置にわたりかつ前記第２の行パリティ記憶装置上に記憶され、前記決定された第２の行パリティの少なくとも一部が、前記複数のデータ記憶装置の一部に基づく
ように構成される、リカバリマネージャ
を備えるシステム。
【請求項２１】
前記複数の記憶装置がｎ個のデータ記憶装置を備え、ここで、ｎ＝ｐ−１であり、ｐは３よりも大きな素数である、請求項２０に記載のシステム。
【請求項２２】
前記論理回路は、さらに、
前記複数の記憶装置の各々をチャンクに分割し、および
前記複数の記憶装置の各々を各記憶装置内に同数のチャンクを含むストライプに編成し、前記複数の記憶装置の各々が（ｐ−１）２個のチャンクにストライプ化される
ように構成されている、請求項２１に記載のシステム。
【請求項２３】
前記第１の行パリティおよび前記第２の行パリティを決定することが、（ｐ−１）２個の行を別々に含む決定した第１の行パリティおよび決定した第２の行パリティに少なくとも一部は基づいて別々に規定される前記第１の行パリティおよび前記第２の行パリティを含む、請求項２２に記載のシステム。
【請求項２４】
前記第１の対角パリティ集合に沿った前記第１の対角パリティを決定することは、所定のストライプのそれぞれの第１の対角パリティ集合に属するすべてのチャンクが前記所定のストライプ内に記憶されるように、（ｐ−１）２個の行内でラップアラウンドする前記第１の対角パリティ集合に少なくとも一部は基づいて規定される前記第１の対角パリティを含む、請求項２３に記載のシステム。
【請求項２５】
前記第２の対角パリティ集合に沿った前記第２の対角パリティを決定することは、所定のストライプのそれぞれの第２の対角パリティ集合に属するすべてのチャンクが前記所定のストライプ内に記憶されるように、前記（ｐ−１）２個の行内で部分的にラップアラウンドする前記第２の対角パリティ集合に少なくとも一部は基づいて規定される前記第２の対角パリティを含む、請求項２４に記載のシステム。
【請求項２６】
前記論理回路は、さらに、前記第２の行パリティに関係する１つまたは複数の行パリティ値および前記第２の対角パリティに関係する１つまたは複数の対角パリティ値を利用する第１の行−対角パリティ（ＲＤＰ）スキームの実装を可能にすること、そして、前記第１の対角パリティに関係する１つまたは複数の対角パリティ値および前記第１の行パリティに関係する１つまたは複数の行パリティ値を利用する第２のＲＤＰスキームの実装を可能にするように構成されている、請求項２５に記載のシステム。
【請求項２７】
前記複数の記憶装置の各々が、独立ディスクの冗長アレイ（ＲＡＩＤ）スキームにしたがってストライプ化される、請求項２０に記載のシステム。
【請求項２８】
前記複数の記憶装置が、ハードディスクドライブ、ソリッドステートディスクドライブ、ダイレクトアクセス記憶装置、磁気テープ、バブルメモリ、光記憶媒体、電子ランダムアクセスまたはデジタル多用途ディスクのうちの少なくとも１つを含む、請求項２０に記載のシステム。
【請求項２９】
複数のデータ記憶装置、第１の行パリティ記憶装置、第２の行パリティ記憶装置、第１の対角パリティ記憶装置および第２の対角パリティ記憶装置を含む複数の記憶装置を有するストレージアレイに関係する故障からの復元を容易にするための命令を有するコンピュータプログラムであって、前記命令が、プロセッサーによって実行されることに応答して、前記プロセッサーに、
前記複数のデータ記憶装置に関する第１の行パリティを決定させ、前記第１の行パリティが前記複数のデータ記憶装置にわたりかつ前記第１の行パリティ記憶装置上に記憶され、
第１の対角パリティ集合に沿った第１の対角パリティを決定させ、前記第１の対角パリティが前記複数のデータ記憶装置のうちの１つを除くすべておよび前記第１の行パリティ記憶装置にわたり、前記決定した第１の対角パリティが前記第１の対角パリティ記憶装置上に記憶され、
第２の対角パリティ集合に沿った第２の対角パリティを決定させ、前記第２の対角パリティが前記複数のデータ記憶装置のうちの１つを除くすべておよび前記第１の行パリティ記憶装置にわたり、前記決定した第２の対角パリティが前記第２の対角パリティ記憶装置上に記憶され、ならびに
前記複数のデータ記憶装置に関する第２の行パリティを決定させ、前記第２の行パリティが前記複数のデータ記憶装置にわたりかつ前記第２の行パリティ記憶装置上に記憶され、前記決定された第２の行パリティの少なくとも一部が、前記複数のデータ記憶装置の一部に基づく
、コンピュータプログラム。
【請求項３０】
前記複数の記憶装置がｎ個のデータ記憶装置を備え、ここで、ｎ＝ｐ−１であり、ｐは３よりも大きな素数である、請求項２９に記載のコンピュータプログラム。
【請求項３１】
前記命令が、前記プロセッサーに、
前記複数の記憶装置の各々をチャンクに分割させ、および
前記複数の記憶装置の各々を各記憶装置内に同数のチャンクを含むストライプに編成させ、前記複数の記憶装置の各々が（ｐ−１）２個のチャンクにストライプ化される
、請求項３０に記載のコンピュータプログラム。
【請求項３２】
前記ストレージアレイに関係する故障からの復元を容易にするための前記命令が、前記プロセッサーに、前記第２の行パリティに関係する１つまたは複数の行パリティ値および前記第２の対角パリティに関係する１つまたは複数の対角パリティ値を利用する第１の行−対角パリティ（ＲＤＰ）スキームを実行させ、ならびに次に、前記第１の対角パリティに関係する１つまたは複数の対角パリティ値および前記第１の行パリティに関係する１つまたは複数の行パリティ値を利用する第２のＲＤＰスキームを実行させる、請求項３１に記載のコンピュータプログラム。
【請求項３３】
前記複数の記憶装置の各々が、独立ディスクの冗長アレイ（ＲＡＩＤ）スキームにしたがってストライプ化される、請求項３０に記載のコンピュータプログラム。
【発明の詳細な説明】
【背景技術】
【０００１】
別段本明細書において示されない限り、この項に記載する手法は、本出願における特許請求の範囲に対する先行技術ではなく、この項に含まれることによって先行技術であるとは認められない。
【０００２】
データを記憶または維持するための記憶システムは、ハードディスクドライブ（ＨＨＤ）、ソリッドステートドライブ（ＳＳＤ）、またはダイレクトアクセス記憶装置（ＤＡＳＤ）などさまざまなデータ記憶装置を含むことができる。これらの記憶システムは、ストレージエリアネットワーク接続ストレージ環境、ストレージエリアネットワークまたはクライアントコンピュータもしくはホストコンピュータに直接接続されたディスクアセンブリを含むことができる１つまたは複数のタイプのストレージアーキテクチャにしたがって実装することができる。いくつかの例では、１つまたは複数のデータ記憶装置が故障した、または１つまたは複数の記憶装置上に記憶されたデータの一部が破壊された（例えば、チェックサムエラーまたはメディア読取りエラー）とき、データが失われる場合がある。データの喪失を回避するために、１つまたは複数のスキームを、記憶システムにおいて実装することができる。これらの１つまたは複数のスキームは、ミラーリング、バックアップまたはパリティ保護を含むことができる。
【発明の概要】
【課題を解決するための手段】
【０００３】
本開示は、ストレージアレイに関係する故障からの復元を容易にするためのいくつかの例の方法について記載する。ストレージアレイは、複数の記憶装置を有することができる。複数の記憶装置は、複数のデータ記憶装置、第１の行パリティ記憶装置、第２の行パリティ記憶装置、第１の対角パリティ記憶装置および第２の対角パリティ記憶装置を含むことができる。これらの例の方法は、複数のデータ記憶装置に関する第１の行パリティを決定することを含むことができる。第１の行パリティは、複数のデータ記憶装置にわたることができ、かつ第１の行パリティ記憶装置上に記憶されてもよい。第１の対角パリティ集合に沿った第１の対角パリティが、次に決定されてもよい。第１の対角パリティは、複数のデータ記憶装置のうちの１つを除くすべておよび第１の行パリティ記憶装置にわたることができ、かつ第１の対角パリティ記憶装置上に記憶されてもよい。例の方法は、第２の対角パリティ集合に沿った第２の対角パリティを決定することをやはり含むことができる。第２の対角パリティは、複数のデータ記憶装置のうちの１つを除くすべておよび第１の行パリティ記憶装置にわたることができ、かつ第２の対角パリティ記憶装置上に記憶されてもよい。複数のデータ記憶装置に関する第２の行パリティが、次に決定されてもよい。第２の行パリティは、複数のデータ記憶装置にわたることができ、かつ第２の行パリティ記憶装置上に記憶されてもよい。いくつかの例では、第２の行パリティの１つまたは複数の行のうちの少なくとも一部は、複数のデータ記憶装置の一部に基づいて決定された第２の行パリティを含むことができる。
【０００４】
本開示は、ストレージアレイに関係する故障からの復元を容易にするための例の装置をやはり記述する。ストレージアレイは、複数の記憶装置を有することができる。複数の記憶装置は、複数のデータ記憶装置、第１の行パリティ記憶装置、第２の行パリティ記憶装置、第１の対角パリティ記憶装置および第２の対角パリティ記憶装置を含むことができる。これらの例の装置は、論理回路を有するリカバリマネージャを含むことができる。論理回路は、複数のデータ記憶装置に関する第１の行パリティを決定するように構成されてもよい。第１の行パリティは、複数のデータ記憶装置にわたることができ、かつ第１の行パリティ記憶装置上に記憶されてもよい。論理回路は、第１の対角パリティ集合に沿った第１の対角パリティを決定するようにやはり構成されてもよい。第１の対角パリティは、複数のデータ記憶装置のうちの１つを除くすべておよび第１の行パリティ記憶装置にわたることができ、かつ第１の対角パリティ記憶装置上に記憶されてもよい。論理回路は、第２の対角パリティ集合に沿った第２の対角パリティを決定するようにやはり構成されてもよい。第２の対角パリティは、複数のデータ記憶装置のうちの１つを除くすべておよび第１の行パリティ記憶装置にわたることができ、かつ第２の対角パリティ記憶装置上に記憶されてもよい。論理回路は、複数のデータ記憶装置に関する第２の行パリティを決定するようにやはり構成されてもよい。第２の行パリティは、複数のデータ記憶装置にわたることができ、かつ第２の行パリティ記憶装置上に記憶されてもよい。いくつかの例では、第２の行パリティの１つまたは複数の行のうちの少なくとも一部は、複数のデータ記憶装置の一部に基づいて決定された第２の行パリティを含むことができる。
【０００５】
本開示は、ストレージアレイに関係する故障からの復元を容易にするための例のシステムをやはり記述する。これらの例のシステムは、複数の記憶装置を有することができる。複数の記憶装置は、複数のデータ記憶装置、第１の行パリティ記憶装置、第２の行パリティ記憶装置、第１の対角パリティ記憶装置および第２の対角パリティ記憶装置を含むことができる。例のシステムは、論理回路を有するリカバリマネージャをやはり含むことができる。論理回路は、複数のデータ記憶装置に関する第１の行パリティを決定するように構成されてもよい。第１の行パリティは、複数のデータ記憶装置にわたることができ、かつ第１の行パリティ記憶装置上に記憶されてもよい。論理回路は、第１の対角パリティ集合に沿った第１の対角パリティを決定するようにやはり構成されてもよい。第１の対角パリティは、複数のデータ記憶装置のうちの１つを除くすべておよび第１の行パリティ記憶装置にわたることができ、かつ第１の対角パリティ記憶装置上に記憶されてもよい。論理回路は、第２の対角パリティ集合に沿った第２の対角パリティを決定するようにやはり構成されてもよい。第２の対角パリティは、複数のデータ記憶装置のうちの１つを除くすべておよび第１の行パリティ記憶装置にわたることができ、かつ第２の対角パリティ記憶装置上に記憶されてもよい。論理回路は、複数のデータ記憶装置に関する第２の行パリティを決定するようにやはり構成されてもよい。第２の行パリティは、複数のデータ記憶装置にわたることができ、かつ第２の行パリティ記憶装置上に記憶されてもよい。いくつかの例では、第２の行パリティの１つまたは複数の行のうちの少なくとも一部は、複数のデータ記憶装置の一部に基づいて決定された第２の行パリティを含むことができる。
【０００６】
本開示は、例のコンピュータプログラム製品をやはり記述する。いくつかの例では、コンピュータプログラム製品は、複数の記憶装置を有するストレージアレイに関係する故障からの復元を容易にするための命令を有する非一時的な媒体を含むことができる。複数の記憶装置は、複数のデータ記憶装置、第１の行パリティ記憶装置、第２の行パリティ記憶装置、第１の対角パリティ記憶装置および第２の対角パリティ記憶装置を含むことができる。命令は、論理回路によって実行されたときに、論理回路に、複数のデータ記憶装置に関する第１の行パリティを決定させることができる。第１の行パリティは、複数のデータ記憶装置にわたることができ、かつ第１の行パリティ記憶装置上に記憶されてもよい。命令は、論理回路に、第１の対角パリティ集合に沿った第１の対角パリティをやはり決定させることができる。第１の対角パリティは、複数のデータ記憶装置のうちの１つを除くすべておよび第１の行パリティ記憶装置にわたることができ、かつ第１の対角パリティ記憶装置上に記憶されてもよい。命令は、論理回路に、第２の対角パリティ集合に沿った第２の対角パリティをやはり決定させることができる。第２の対角パリティは、複数のデータ記憶装置のうちの１つを除くすべておよび第１の行パリティ記憶装置にわたることができ、かつ第２の対角パリティ記憶装置上に記憶されてもよい。命令は、論理回路に、複数のデータ記憶装置に関する第２の行パリティをやはり決定させることができる。第２の行パリティは、複数のデータ記憶装置にわたることができ、かつ第２の行パリティ記憶装置上に記憶されてもよい。いくつかの例では、第２の行パリティの１つまたは複数の行のうちの少なくとも一部は、複数のデータ記憶装置の一部に基づいて決定された第２の行パリティを含むことができる。
【０００７】
前述の要約は、例示的なものにすぎず、決して限定しないものとする。上に記述した例示のための態様、実施形態、および特徴に加えて、さらなる態様、実施形態、および特徴が、図面および下記の発明を実施するための形態を参照することによって明らかになるであろう。
【０００８】
本開示の前述および他の特徴は、添付の図面と併用すると、下記の説明および別記の特許請求の範囲からより完全に明らかになるであろう。これらの図面が本開示によるいくつかの実施形態だけを示し、したがって、本開示の範囲を限定するようには見なされないことを理解して、本開示について、添付の図面の使用を介して追加の特異性および詳細を述べる。
【図面の簡単な説明】
【０００９】
【図１】ストレージアレイに関係する故障からの復元を容易にする一例のシステムの図である。
【図２】リカバリマネージャに関する一例のアーキテクチャのブロック図である。
【図３Ａ−３Ｄ】ストレージアレイに関するトリプルパリティエンコーディングに関係する例のパリティテーブルである。
【図４】ストレージアレイに関係する故障からの復元を容易にする例の方法の流れ図である。
【図５】一例のコンピュータプログラム製品のブロック図である。
【図６】本開示の少なくともいくつかの実施形態にしたがってすべてが配置された一例のコンピューティングデバイスの図である。
【発明を実施するための形態】
【００１０】
下記の詳細な説明では、本明細書の一部を形成する添付の図面を参照する。図面では、別段文脈によって規定されない限り、類似の記号は、一般に類似の構成要素を識別する。発明を実施するための形態、図面、および特許請求の範囲に記載する説明のための例または実施形態は、限定するものではない。ここに提示した主題の精神および範囲から逸脱することなく、他の例または実施形態を利用することができ、他の変更を行うことができる。本明細書に全体的に記述され、図に示されたような本開示の態様を、多種多様な異なる構成に配置し、置き換え、組み合わせ、設計することが可能であり、そのすべてが明示的に企図されかつ本開示の一部を形成することが、容易に理解されるであろう。
【００１１】
本開示は、特に、複数の記憶装置を有するストレージアレイに関係する故障からの復元を容易にすることに関する方法、装置、システムおよびコンピュータプログラム製品を対象とする。
【００１２】
本開示において企図されるように、１つまたは複数のスキームを記憶システム内に実装し、記憶装置が故障した、または１つもしくは複数の記憶装置上に記憶したデータもしくは情報の一部が破壊された場合、データの喪失を防止することができる。また、本開示において企図されるように、これらの１つまたは複数のスキームは、ミラーリング、バックアップまたはパリティ保護を含むことができる。ミラーリングは、データを写すために必要なリソースの観点で費用が掛かる解決策であることがあり、バックアップは、複数のバックアップの間に修正されたデータを保護できないことがある。
【００１３】
いくつかの例では、パリティ保護を、ミラーリングまたはバックアップに対する好ましい代替形態とすることができる。シングルパリティと典型的に呼ばれる１つのタイプのパリティ保護は、１つの記憶装置故障によって失われたデータの復元または１つの記憶装置上の破壊データの復元を可能にするデータの冗長エンコーディングを提供することができる。ダブルパリティと典型的に呼ばれるもう１つのタイプのパリティ保護は、２つの記憶装置故障を有する記憶システム内の失われたデータの復元、２つの記憶装置上の破壊データの復元、または記憶装置故障および記憶装置上の破壊データの組み合わせの復元を可能にするデータの冗長エンコーディングを提供することができる。しかしながら、いくつかの記憶装置は、多数の記憶装置を含むことができ、システムが大きいほど、３つの記憶装置故障または３つの記憶装置上の破壊データのより大きな発生確率を含むことがある。したがって、３つの記憶装置故障、３つの記憶装置上の破壊データ、または記憶装置故障および記憶装置上の破壊データの組み合わせを有する記憶システム内の喪失データの復元を可能にするパリティ保護が求められている。
【００１４】
いくつかの例では、ストレージアレイに関係する故障からの復元を、トリプルパリティエンコーディングスキームによって容易にすることができる。これらの例に関して、ストレージアレイは、複数の記憶装置を有することができる。複数の記憶装置は、複数のデータ記憶装置および複数のパリティ記憶装置を含むことができる。これらのパリティ記憶装置は、第１の行パリティ記憶装置、第２の行パリティ記憶装置、第１の対角パリティ記憶装置および第２の対角パリティ記憶装置を含むことができる。これらの例に関して、複数のデータ記憶装置に関する第１の行パリティを決定することができる。第１の行パリティは、複数のデータ記憶装置にわたることがあり、かつ第１の行パリティ記憶装置上に記憶されてもよい。第１の対角パリティ集合に沿った第１の対角パリティを、次に決定することができる。第１の対角パリティは、複数のデータ記憶装置のうちの１つを除くすべておよび第１の行パリティ記憶装置にわたることができ、かつ第１の対角パリティ記憶装置上に記憶されてもよい。第２の対角パリティ集合に沿った第２の対角パリティを、やはり決定することができる。第２の対角パリティは、複数のデータ記憶装置のうちの１つを除くすべておよび第１の行パリティ記憶装置にわたることができ、かつ第２の対角パリティ記憶装置上に記憶されてもよい。複数のデータ記憶装置に関する第２の行パリティを、次に決定することができる。第２の行パリティは、複数のデータ記憶装置にわたることができ、かつ第２の行パリティ記憶装置上に記憶されてもよい。これらの例に関して、第２の行パリティの１つまたは複数の行のうちの少なくとも一部は、複数のデータ記憶装置の一部に基づいて決定された第２の行パリティを含むことができる。
【００１５】
図１は、ストレージアレイに関係する故障からの復元を容易にする一例のシステムを図示する。図１に示したように、システム１００は、通信チャネル１３０を介してストレージアレイ１２０に結合されたコンピューティングプラットフォーム１１０を含む。やはり、図１に示したように、コンピューティングプラットフォーム１１０は、（１つまたは複数の）要素プロセッサ１１２、メモリ１１４およびストレージアレイコントローラ１１６を含む。いくつかの例では、図１に示されたように、（１つまたは複数の）要素プロセッサ１１２、システムメモリ１１４およびストレージアレイコントローラ１１６を、通信リンク１１８を介して通信可能に結合することができる。
【００１６】
いくつかの例では、図１に示したように、ストレージアレイコントローラ１１６は、リカバリマネージャ１１７およびストレージマネージャ１１９を含むことができる。システムメモリ１１４は、オペレーティングシステム１１５を含むように図１にやはり示される。いくつかの例に関して、オペレーティングシステム１１５を、メモリ１１４内に維持することができ、（１つまたは複数の）要素プロセッサ１１２によって実行されるように構成することができる。また、オペレーティングシステム１１５は、ストレージマネージャ１１９と協働して機能することができ、ストレージアレイ１２０から読み出し、そこに書き込むことができる。
【００１７】
やはり図１に示したように、ストレージアレイ１２０は、データ記憶装置１２２−１から１２２−ｍを含むことができ、ここで、ｍは１よりも大きな任意の正の整数を表す。ストレージアレイ１２０は、行パリティ記憶装置１２３、対角パリティ記憶装置１２４、対角パリティ記憶装置１２５および行パリティ記憶装置１２６として図１に示した４つのパリティ記憶装置をやはり含むことができる。ストレージアレイ１２０の複数の記憶装置を、図１に示したように、通信チャネル１３０を介してストレージアレイコントローラ１１６に相互接続し、通信可能に結合することができる。
【００１８】
いくつかの例によれば、ストレージアレイコントローラ１１６は、ユーザ（またはクライアント）によって要求される情報またはデータにアクセスするためにストレージアレイ１２０と協働することができる。ビデオテープ、光ディスク、デジタル多用途ディスク（ＤＶＤ）、磁気テープ、バブルメモリ、電子式ランダムアクセスメモリ、マイクロエレクトロメカニカル記憶媒体またはデータもしくはパリティ情報を記憶するように構成された任意の他の類似の記憶媒体などのいずれかのタイプの取り付けられた記憶装置上に、データを記憶することができる。図１には示さないが、ストレージアレイコントローラ１１６およびストレージアレイ１２０は、通信チャネル１３０を介してストレージアレイ１２０にコンピューティングプラットフォーム１１０を通信可能に結合するためのインターフェース回路を別々に含むことができる。これらの例に関して、通信チャネル１３０は、限定しないが、ユニバーサルシリアルバス（ＵＳＢ）、ＰＣＩ−エクスプレス、シリアルアドバンストテクノロジーアタッチメント（ＳＡＴＡ）、パラレルアドバンストテクノロジーアタッチメント（ＰＡＴＡ）またはスモールコンピュータシステムインターフェース（ＳＣＳＩ）を含むようにさまざまな通信プロトコルにしたがって動作することができる。
【００１９】
いくつかの例では、さらに下記に説明するように、リカバリマネージャ１１７は、ストレージアレイ１２０に関係する故障からの復元を容易にするための論理回路および／またはフィーチャを含むことができる。故障は、ストレージアレイ１２０の中の１つまたは複数の記憶装置の完全な故障および／またはストレージアレイ１２０の中の１つまたは複数の記憶装置上の破壊データまたは情報（例えば、チェックサムエラー）を含むことがある。これらの例に関して、リカバリマネージャ１１７は、ストレージアレイ１２０の４つのパリティ記憶装置を使用するトリプルパリティエンコーディングスキームを実装することができる。
【００２０】
いくつかの例によれば、トリプルパリティエンコーディングスキームを実装するときには、ストレージアレイ１２０は、ｎ個のデータ記憶装置および４つのパリティ記憶装置を含むことができ、ここで、ｎ＝ｐ−１であり、ｐは３よりも大きな素数である。これらの例に関して、ストレージアレイ１２０の複数の記憶装置の各々を、リカバリマネージャ１１７によってチャンクに分割することができる。複数の記憶装置の各々を、次に、リカバリマネージャ１１７によって、各記憶装置内に同数のチャンクを含むストライプにさらに編成することができる。また、複数の記憶装置の各々を、（ｐ−１）２個のチャンクにストライプ化することができる。いくつかの例では、複数の記憶装置を、独立ディスクの冗長アレイ（ＲＡＩＤ）スキーム（例えば、ＲＡＩＤ６）にしたがってストライプ化することができるが、本開示は、ＲＡＩＤストライピングスキームだけに限定されない。
【００２１】
図２は、リカバリマネージャに関する一例のアーキテクチャのブロック図を図示する。図１中のシステム１００に関して上に記述したように、ストレージアレイコントローラ１１６は、リカバリマネージャ１１７を含む。いくつかの例では、リカバリマネージャ１１７は、ストレージアレイ１２０などのストレージアレイに関係する故障からの復元を容易にするように構成されたかまたは配置されたフィーチャおよび／または論理回路を含む。
【００２２】
図２の例のリカバリマネージャ１１７は、復元論理回路２１０、制御論理回路２２０、メモリ２３０および入力／出力（Ｉ／Ｏ）インターフェース２４０を含む。図２に図示したように、復元論理回路２１０を、制御論理回路２２０、メモリ２３０およびＩ／Ｏインターフェース２４０に結合する。復元論理回路２１０は、ストライプフィーチャ２１２、行フィーチャ２１４、対角フィーチャ２１６、もしくはリカバリフィーチャ２１８のうちの１つまたは複数か、またはこれらの任意の妥当な組み合わせをさらに含むことができる。
【００２３】
いくつかの例では、図２のブロック図に示された要素は、本開示において説明するようなリカバリマネージャ１１７を支援するまたは使用可能にするように構成される。所定のリカバリマネージャ１１７は、図２に示された要素の一部の要素、すべての要素またはより多くの要素を含むことができる。例えば、復元論理回路２１０および制御論理回路２２０は、リカバリマネージャ１１７のフィーチャを実装するための多種多様な（１つまたは複数の）論理デバイスを別々にまたは包括的に表すことができる。一例の論理デバイスは、コンピュータ、マイクロプロセッサ、マイクロコントローラ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、マルチコア／マルチスレッドマイクロプロセッサの隔絶したスレッドもしくはコア、またはこれらの組み合わせのうちの１つまたは複数を含むことができる。
【００２４】
いくつかの例では、図２に示したように、復元論理回路２１０は、ストライプフィーチャ２１２、行フィーチャ２１４、対角フィーチャ２１６、またはリカバリフィーチャ２１８を含む。復元論理回路２１０を、動作を実行するためにこれらのフィーチャのうちの１つまたは複数を使用するように構成することができる。より詳細に下記に説明するように、例の動作は、ストライピングスキームにしたがってストライプへと記憶装置を編成すること含むことができる。例の動作は、ストライピングスキームにしたがって記憶すべき行パリティおよび対角パリティの集合を決定すること、および決定した行パリティおよび対角パリティの集合を使用してストレージアレイ（例えば、ストレージアレイ１２０）に関係する故障からの復元を容易にすることをやはり含むことができる。
【００２５】
いくつかの例では、制御論理回路２２０を、リカバリマネージャ１１７の全体の動作を制御するように構成することができる。上に述べたように、制御論理回路２２０は、リカバリマネージャ１１７の制御を実装するために実行可能なコンテンツまたは命令と協働して動作するように構成された任意の多種多様な（１つまたは複数の）論理デバイスを表すことができる。いくつかの代替例では、制御論理回路２２０のフィーチャおよび機能性を、復元論理回路２１０内に実装することができる。
【００２６】
いくつかの例によれば、メモリ２３０を、実行可能なコンテンツまたは命令を記憶するように配置する。実行可能なコンテンツまたは命令を、制御論理回路２２０および／または復元論理回路２１０によって使用することができ、リカバリマネージャ１１７のフィーチャまたは要素を実装させるまたは起動させる。メモリ２３０を、行パリティまたは対角パリティを決定すること（例えば、構築アルゴリズム）およびストライピングスキームにしたがって行パリティまたは対角パリティを記憶することに関係する情報を少なくとも一時的に維持するようにやはり配置することができる。
【００２７】
メモリ２３０は、限定しないが、揮発性メモリ、不揮発性メモリ、フラッシュメモリ、プログラマブル変数もしくは状態、ランダムアクセスメモリ（ＲＡＭ）、読出し専用メモリ（ＲＯＭ）、または他のスタティックもしくはダイナミック記憶媒体のうちの１つまたは複数を含む多種多様なメモリ媒体を含むことができる。
【００２８】
いくつかの例では、Ｉ／Ｏインターフェース２４０は、リカバリマネージャ１１７と、ストレージアレイコントローラ１１６に通信可能に結合することができる要素または装置との間のインターフェースを提供することができる。例えば、図１に関して上に述べたように、ストレージアレイコントローラ１１６を、通信リンク１１８を介して（１つもしくは複数の）要素プロセッサ１１２もしくはメモリ１１４に通信可能に結合するように構成することができるか、または通信チャネル１３０を介してストレージアレイ１２０に通信可能に結合するように構成することができる。Ｉ／Ｏインターフェース２４０は、例えば、リカバリマネージャ１１７が通信リンク１１８または通信チャネル１３０（例えば、インター集積回路（Ｉ２Ｃ）、システム管理バス（ＳＭＢｕｓ）、シリアルペリフェラルインターフェースバス（ＳＰＩ）ＵＳＢ、ＳＡＴＡ、ＰＡＴＡ、ＳＣＳＩ、ｅＳＡＴＡ、ＰＣＩ−Ｅｘｐｒｅｓｓ、ＩＥＥＥ８０２．１、ＩＥＥＥ８０２．１１、ＩＥＥＥ８０２．１６、ＧＳＭ、ＧＰＲＳ、ＥＤＧＥ、Ｗ−ＣＤＭＡ、ＨＳＰＡ、ＬＴＥ、ＣＤＭＡ−２０００、ＥＶ−ＤＯ、等）によって通信することを可能にするためにさまざまな無線通信および／または有線通信プロトコルにしたがって動作するように構成されたインターフェースを含むことができる。
【００２９】
図３Ａ〜図３Ｄは、ストレージアレイに関するトリプルパリティエンコーディングに関係する例のパリティテーブルを図示する。いくつかの例では、ストレージアレイは、図１に示したようなストレージアレイ１２０と同様であってもよい。図３Ａ〜図３Ｄに示したように、テーブル３１０、テーブル３２０、テーブル３３０およびテーブル３４０を、４つのパリティ記憶装置の使用に少なくとも一部は基づいて構築することができる。これらのパリティテーブルは、トリプルパリティエンコーディングスキームの一例を提供する。このトリプルパリティエンコーディングスキームは、ストレージアレイ１２０の３つまでの故障（完全な（１つもしくは複数の）装置故障または（１つもしくは複数の）データ破壊）に関係する故障からの復元を容易にすることができる。これらの例に関して、図１に示された４つのパリティ記憶装置に加えて、ストレージアレイは、４つのデータ記憶装置をやはり含む。図３Ａ〜図３Ｄに示したように、４つのデータ記憶装置に関係するパリティを、列ヘッダ１２２−１から１２２−４として示し、４つのパリティ記憶装置に関係するパリティを、列ヘッダ１２３〜１２６として示す。
【００３０】
いくつかの例によれば、上に説明したように、ストレージアレイ１２０の記憶装置を（ｐ−１）２個のチャンクに分割することができ、ここで、ｐは３よりも大きな素数である。そこで、図３Ａ〜図３Ｄに関して上に述べた例のストレージアレイに関しては、ｐ＝５である。したがって、これらの例に関して、ストレージアレイ１２０の記憶装置を（５−１）２＝１６個のチャンクに分割することができる。１６個のチャンクに分割することの結果として、図３Ａ〜図３Ｄに示したパリティテーブルの各々は、１６行を含む。
【００３１】
いくつかの例では、図３Ａ〜図３Ｄに示したトリプルパリティエンコーディングスキームは、下記に示すような１つまたは複数の例の方程式またはアルゴリズムを実装することに少なくとも一部は基づくことができる。例の方程式は、データ記憶装置１２２−１から１２２−４の各々について下記の仮定に少なくとも一部は基づくことができる：
ｐは３よりも大きな素数であり、
データ記憶装置は、Ｄとして表され、
Ｄ（ｋ，ｊ）および（ｋ＝０、１、．．．ｐ−２）および（ｊ＝０、１、．．．、（ｐ−１）２−１）、
ここで、ｊはデータ記憶装置ｋについてのｊ番目のチャンクである。
例の方程式は、パリティ記憶装置１２３〜１２６の各々について下記の仮定に少なくとも一部はやはり基づくことができる：
ｐは３よりも大きな素数であり、
パリティ記憶装置は、ＤＰとして表され、
ＤＰ（ｉ，ｊ）および（ｉ＝１、２、３、４）および（ｊ＝０、１、．．．、（ｐ−１）２−１）、
ここで、ｊはパリティ記憶装置ｉについてのｊ番目のチャンクである。
【００３２】
いくつかの例では、データ記憶装置１２２−１から１２２−４にわたる第１の行パリティを、例の方程式（１）にしたがって決定することができる。これらの例に関して、第１の行パリティは、図３Ａのテーブル３１０の右端列内に識別され、行パリティ記憶装置１２３内に記憶されてもよい。
【００３３】
【数１】
0005993018.tif 000002
【００３４】
いくつかの例では、第１の対角パリティ集合に沿った第１の対角パリティを、例の方程式（２）にしたがって決定することができる。さらに下記に説明するように、第１の対角パリティは、データ記憶装置１２２−１から１２２−４のうちの１つを除くすべておよび行パリティ記憶装置１２３にわたることができる。これらの例に関して、第１の対角パリティは、図３Ｂのテーブル３２０の右端列内に識別され、対角パリティ記憶装置１２４内に記憶されてもよい。
（２）もし（ｐ−１）＝（ｐ−２）であれば、
【００３５】
【数２】
0005993018.tif 000003
そうでなければ、
【００３６】
【数３】
0005993018.tif 000004
【００３７】
いくつかの例によれば、テーブル３２０に示したように、第１の対角パリティ集合に沿った第１の対角パリティを、（ｐ−１）２個の行内でラップアラウンドする第１の対角パリティ集合に少なくとも一部は基づいて規定することができ、その結果、所定のストライプのそれぞれの第１の対角パリティ集合に属するすべてのチャンクが、所定のストライプ内に記憶される。例えば、テーブル３２０の右端列において「０」と識別された第１の対角パリティ集合は、行１のところにデータ記憶装置１２２−１、行４のところにデータ記憶装置１２２−３、行３のところにデータ記憶装置１２２−４および行２のところに行パリティ記憶装置１２３からのチャンクを含む。また、「０」と認識された第１の対角パリティ集合が、データ記憶装置１２２−１から１２２−４のうちの１つを除くすべておよび行パリティ記憶装置１２３にわたることに留意すること。除外された１つの記憶装置は、データ記憶装置１２２−２である。さらに、他の第１の対角パリティ集合もやはり、データ記憶装置１２２−１から１２２−４のうちの１つを除くすべておよび行パリティ記憶装置１２３にわたることに留意すること。
【００３８】
いくつかの例では、第２の対角パリティ集合に沿った第２の対角パリティを、例の方程式（３）にしたがって決定することができる。さらに下記に説明するように、第２の対角パリティは、データ記憶装置１２２−１から１２２−４のうちの１つを除くすべておよび行パリティ記憶装置１２３にわたることができる。これらの例に関して、第２の対角パリティは、図３Ｃのテーブル３３０の右端列内に識別され、対角パリティ記憶装置１２５内に記憶されてもよい。
（３）もし（ｊ／（ｐ−１）＝＝（ｐ−２））であれば、
【００３９】
【数４】
0005993018.tif 000005
そうでなければ、
【００４０】
【数５】
0005993018.tif 000006
【００４１】
いくつかの例によれば、テーブル３３０に示したように、第２の対角パリティ集合に沿った第２の対角パリティを、（ｐ−１）２個の行内でラップアラウンドする第２の対角パリティ集合に少なくとも一部は基づいて規定することができ、その結果、所定のストライプのそれぞれの第２の対角パリティ集合に属するすべてのチャンクが、所定のストライプ内に記憶される。また、テーブル３２０に関して上に説明したものと同様に、第１の対角パリティ集合が、データ記憶装置１２２−１から１２２−４のうちの１つを除くすべておよび行パリティ記憶装置１２３にわたる。
【００４２】
いくつかの例では、データ記憶装置１２２−１から１２２−４にわたる第２の行パリティを、例の方程式（４）にしたがって決定することができる。これらの例に関して、第２の行パリティは、図３Ｄのテーブル３４０の右端列内に識別され、行パリティ記憶装置１２６内に記憶されてもよい。
（４）もし（ｊ％（ｐ−１）＋１＞ｊ／（ｐ−１）＋１）であれば、
【００４３】
【数６】
0005993018.tif 000007
そうでなければ、
【００４４】
【数７】
0005993018.tif 000008
【００４５】
いくつかの例によれば、テーブル３４０に示したように、第２の行パリティは、データ記憶装置１２２−１から１２２−４にわたることができる。また、これらの例に関して、決定した第２の行パリティの少なくとも一部は、データ記憶装置の４つすべてというよりはむしろデータ記憶装置の一部に基づくことがある。例えば、テーブル３４０の行２のところの行パリティは、４つのデータ記憶装置のうちの３つに基づいて決定された行パリティを示し、行１２のところの行パリティは、４つのデータ記憶装置のうちの２つに基づいて決定された行パリティを示す。
【００４６】
いくつかの例によれば、リカバリマネージャ１１７は、（例えば、リカバリフィーチャ２１８を介して）ストレージアレイ１２０に関係するさまざまな異なるタイプの故障を復元するように構成された論理回路および／またはフィーチャを含むことができる。例えば、３つのデータ記憶装置が故障する場合には、リカバリマネージャ１１７は、行パリティ記憶装置１２６内に記憶された第２の行パリティに関係する１つまたは複数の行パリティ値および対角パリティ記憶装置１２５内に記憶された第２の対角パリティに関係する１つまたは複数の対角パリティ値を利用することができる第１の行−対角パリティ（ＲＤＰ）スキームを実装することができる。リカバリマネージャ１１７は、対角パリティ記憶装置１２４内に記憶された第１の対角パリティに関係する１つまたは複数の対角パリティ値および行パリティ記憶装置１２３内に記憶された第１の行パリティに関係する１つまたは複数の行パリティ値を利用第２のＲＤＰスキームをやはり実装することができる。これらの例に関して、第１および第２のＲＤＰスキームを実装することによって、３つの故障した記憶装置内に維持されたデータを復元することができる。
【００４７】
いくつかの例では、データ記憶装置およびパリティ記憶装置の組み合わせが、故障することがあるか、またはデータ破壊を有することがある。例えば、データ記憶装置のうちの１つならびに行パリティ記憶装置１２３および対角パリティ記憶装置１２４の両者が、故障することがあるか、またはデータ破壊を有することがある。リカバリマネージャ１１７は、対角パリティ記憶装置１２４内に記憶された第１の対角パリティに関係する１つまたは複数の対角パリティ値および行パリティ記憶装置１２６内に記憶された第２の行パリティに関係する１つまたは複数の行パリティ値を利用する１つのＲＤＰスキームを実装することができる。これらの例に関して、１つのＲＤＰスキームを実装することの結果として、故障したデータ記憶装置内に維持されたデータを、行パリティ記憶装置１２３および対角パリティ記憶装置１２４内に記憶されたパリティ値と同様に復元することができる。
【００４８】
上に記述した例の故障は、ストレージアレイ１２０の故障したまたはデータ破壊した記憶装置内に記憶したデータまたはパリティ値を復元するために、リカバリマネージャ１１７が１つまたは複数のＲＤＰスキームをどのように実装することができるかのほんの２つの例である。データまたはパリティ値を復元するために行パリティ記憶装置１２３、１２６または対角パリティ記憶装置１２４、１２５内に記憶された行パリティ値および対角パリティ値を使用することによって、さまざまな他のＲＤＰスキームを実装することができる。
【００４９】
図４は、ストレージアレイに関係する故障からの復元を容易にするための例の方法の流れ図を図示する。いくつかの例では、図１に示したようなシステム１００を、図４に示された流れ図に関する例の方法を図説するために使用する。図２に示したようなリカバリマネージャ１１７を、例の方法を図説するためにやはり使用することができる。しかし、説明する方法は、図１または図２に関して示したかまたは説明した実装形態に限定されない。例の方法を、図１または図２に示された要素のうちの１つまたは複数を有する別のシステムまたはマネージャ上に実装することができる。
【００５０】
ブロック４１０（記憶装置をストライプ化する）において始めて、リカバリマネージャ１１７は、（例えば、ストライプフィーチャ２１２を介して）ストレージアレイ１２０の記憶装置をストライプ化するように構成された論理回路および／またはフィーチャを含むことができる。いくつかの例では、記憶装置を、チャンクに分割することができ、次に各記憶装置内に同数のチャンクを含むストライプへと編成することができる。前に記述したように、ストレージアレイ１２０の記憶装置を、（ｐ−１）２個に、この式のｐについては５の値を有し（５−１）２個すなわち１６個のチャンクに分割することができる。
【００５１】
ブロック４１０からブロック４２０（第１の行パリティを決定する）へと続けると、リカバリマネージャ１１７は、（例えば、行フィーチャ２１４を介して）第１の行パリティを決定するように構成された論理回路および／またはフィーチャを含むことができる。いくつかの例では、行フィーチャ２１４は、第１の行パリティを決定するために例の方程式（１）を実装することができる。これらの例に関して、第１の行パリティを、行パリティ記憶装置１２３内に記憶することができる。
【００５２】
ブロック４２０からブロック４３０（第１の対角パリティを決定する）へと続けると、リカバリマネージャ１１７は、（例えば、対角フィーチャ２１６を介して）第１の対角パリティを決定するように構成された論理回路および／またはフィーチャを含むことができる。いくつかの例では、対角フィーチャ２１６は、第１の対角パリティを決定するために例の方程式（２）を実装することができる。これらの例に関して、第１の対角パリティを、対角パリティ記憶装置１２４内に記憶することができる。
【００５３】
ブロック４３０からブロック４４０（第２の対角パリティを決定する）へと続けると、リカバリマネージャ１１７は、（例えば、対角フィーチャ２１６を介して）第２の対角パリティを決定するように構成された論理回路および／またはフィーチャを含むことができる。いくつかの例では、対角フィーチャ２１６は、第２の対角パリティを決定するために例の方程式（３）を実装することができる。これらの例に関して、第２の対角パリティを、対角パリティ記憶装置１２５内に記憶することができる。
【００５４】
ブロック４４０からブロック４５０（第２の行パリティを決定する）へと続けると、リカバリマネージャ１１７は、（例えば、行フィーチャ２１４を介して）第２の行パリティを決定するように構成された論理回路および／またはフィーチャを含むことができる。いくつかの例では、行フィーチャ２１４は、第２の行パリティを決定するために例の方程式（４）を実装することができる。これらの例に関して、第２の行パリティを、行パリティ記憶装置１２６内に記憶することができる。
【００５５】
ブロック４５０から判断ブロック４６０（故障またはデータ破壊？）へと続けると、リカバリマネージャ１１７は、故障またはデータ破壊が（例えば、リカバリフィーチャ２１８を介して）ストレージアレイ１２０の記憶装置のうちの１つまたは複数の上に生じたかどうかを決定するように構成された論理回路および／またはフィーチャを含むことができる。故障またはデータ破壊が生じている場合には、プロセスはブロック４７０へと移動する。そうでなければ、プロセスはブロック４８０へと移動する。
【００５６】
判断ブロック４６０からブロック４７０（データ／パリティ復元を実装する）へと移動すると、リカバリマネージャ１１７は、（例えば、リカバリフィーチャ２１８を介して）１つまたは複数のリカバリスキームを実装するように構成された論理回路および／またはフィーチャを含むことができる。いくつかの例では、１つまたは複数のリカバリスキームは、ストレージアレイ１２０の記憶装置に関係する装置故障および／またはデータ破壊によって失われたデータまたはパリティ情報を復元させるためのＲＤＰスキームを含むことができる。
【００５７】
ブロック４７０から判断ブロック４８０（ストライプ化すべき新たな情報か？）へと続けると、リカバリマネージャ１１７は、新たな情報またはデータが（例えば、ストライプフィーチャ２１２を介して）ストレージアレイ１２０の記憶装置についてストライプ化する必要があるかどうかを決定するように構成された論理回路および／またはフィーチャを含むことができる。新たな情報またはデータをストライプ化する場合には、プロセスは、ブロック４２０へと移動し、行／対角パリティを決定することができる。そうでなければ、プロセスは判断ブロック４６０へと移動する。
【００５８】
図５は、一例のコンピュータプログラム製品５００のブロック図を図示する。いくつかの例では、図５に示したように、コンピュータプログラム製品５００は、信号担持媒体５０２を含み、これは、ストレージアレイ（例えば、ストレージアレイ１２０）に関係する故障からの復元を容易にするための命令５０４をやはり含むことができる。ストレージアレイは、複数の記憶装置を有することができ、これは複数のデータ記憶装置、第１の行パリティ記憶装置、第２の行パリティ記憶装置、第１の対角パリティ記憶装置および第２の対角パリティ記憶装置を含む。命令５０４は、論理回路（例えば、復元論理回路２１０）によって実行されると、論理回路に複数のデータ記憶装置に関する第１の行パリティを決定させることができる。第１の行パリティは、複数のデータ記憶装置にわたることができ、第１の行パリティ記憶装置上に記憶されてもよい。命令５０４は、論理回路に第１の対角パリティ集合に沿った第１の対角パリティをやはり決定させることができる。第１の対角パリティは、複数のデータ記憶装置のうちの１つを除くすべておよび第１の行パリティ記憶装置にわたることができ、第１の対角パリティ記憶装置上に記憶されてもよい。命令５０４は、論理回路に第２の対角パリティ集合に沿った第２の対角パリティをやはり決定させることができる。第２の対角パリティは、複数のデータ記憶装置のうちの１つを除くすべておよび第１の行パリティ記憶装置にわたることができ、第２の対角パリティ記憶装置上に記憶されてもよい。命令５０４は、論理回路に複数のデータ記憶装置に関する第２の行パリティをやはり決定させることができる。第２の行パリティは、複数のデータ記憶装置にわたることができ、第２の行パリティ記憶装置上に記憶されてもよい。いくつかの例では、第２の行パリティの１つまたは複数の行の少なくとも一部は、複数のデータ記憶装置の一部に基づいて決定された第２の行パリティを含むことができる。
【００５９】
また、図５に示されたように、いくつかの例では、コンピュータ製品５００は、コンピュータ可読媒体５０６、記録可能媒体５０８および通信媒体５１０のうちの１つまたは複数を含むことができる。これらの要素のまわりの点線のボックスは、限定しないが信号担持媒体５０２内に含まれる異なるタイプの媒体を示す。これらのタイプの媒体は、論理回路（例えば、復元論理回路２１０）によって実行される命令５０４を配送することができる。コンピュータ可読媒体５０６および記録可能媒体５０８は、フレキシブルディスク、ハードディスクドライブ（ＨＤＤ）、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、デジタルテープ、コンピュータメモリ、等を含むことができるが、これらに限定されない。通信媒体５１０は、デジタルおよび／またはアナログ通信媒体（例えば、光ファイバケーブル、導波路、有線通信リンク、無線通信リンク、等）を含むことができるが、これらに限定されない。
【００６０】
図６は、一例のコンピューティングデバイス６００を図示する。いくつかの例では、図１〜図２に示されたリカバリマネージャ１１７を、コンピューティングデバイス６００上に実装することができる。これらの例では、コンピューティングデバイス６００の要素を、持続性ストレージのブロックを割り当てるように、またはファイルシステムもしくはアプリケーションが持続性ストレージのブロックにアクセスするように配置するまたは構成することができる。ごく基本的な構成６０１では、コンピューティングデバイス６００は、典型的には１つまたは複数のプロセッサ６１０およびシステムメモリ６２０を含む。メモリバス６３０を、プロセッサ６１０とシステムメモリ６２０との間の通信のために使用することができる。
【００６１】
所望の構成に応じて、プロセッサ６１０を、限定しないが、マイクロプロセッサ（μＰ）、マイクロコントローラ（μＣ）、デジタル信号プロセッサ（ＤＳＰ）、またはこれらの任意の組み合わせ含む任意のタイプのものとすることができる。プロセッサ６１０は、レベル１キャッシュ６１１およびレベル２キャッシュ６１２などのキャシングの１つまたは複数のレベル、プロセッサコア６１３、ならびにレジスタ６１４を含むことができる。プロセッサコア６１３は、演算論理ユニット（ＡＬＵ）、浮動小数点ユニット（ＦＰＵ）、デジタル信号処理コア（ＤＳＰコア）、またはこれらの任意の組み合わせを含むことができる。メモリコントローラ６１５を、プロセッサ６１０とともにやはり使用することができるか、またはいくつかの実装形態では、メモリコントローラ６１５を、プロセッサ６１０の内部部分とすることができる。
【００６２】
所望の構成に応じて、システムメモリ６２０を、限定しないが、揮発性メモリ（ＲＡＭなど）、不揮発性メモリ（ＲＯＭ、フラッシュメモリ、等など）、またはこれらの任意の組み合わせを含む任意のタイプのものとすることができる。システムメモリ６２０は、典型的には、オペレーティングシステム６２１、１つまたは複数のアプリケーション６２２、およびプログラムデータ６２４を含む。アプリケーション６２２は、図２に示したリカバリマネージャ１１７アーキテクチャに関して記述したアクションを含む本明細書に記載したような機能を実行するように配置された命令６２３を含む。プログラムデータ６２４は、命令６２３（例えば、行／対角パリティを決定すること）を実装するために有用であるリカバリデータ６２５を含む。いくつかの例では、アプリケーション６２２を、オペレーティングシステム６２１上でプログラムデータ６２４とともに動作するように配置することが可能であり、その結果、ストレージアレイに関係する故障からの復元を容易にするための実装形態を、本明細書において説明したように提供することができる。この記述した基本構成は、破線６０１内のこれらの構成要素によって図６中に図示される。
【００６３】
コンピューティングデバイス６００は、追加の特徴または機能ならびに基本構成６０１と任意の必要な装置およびインターフェースとの間の通信を容易にするための追加のインターフェースを有することができる。例えば、ストレージインターフェースバス６４１を介して、基本構成６０１と１つまたは複数のデータ記憶装置６５０との間の通信を容易にするために、バス／インターフェースコントローラ６４０使用することができる。データ記憶装置６５０を、取り外し式記憶装置６５１、非取り外し式記憶装置６５２、またはこれらの組み合わせとすることができる。取り外し式記憶装置および非取り外し式記憶装置の例は、いくつかの例を挙げると、フレキシブルディスクドライブおよびハードディスクドライブ（ＨＤＤ）などの磁気ディスク装置、コンパクトディスク（ＣＤ）ドライブまたはデジタル多用途ディスク（ＤＶＤ）ドライブなどの光ディスクドライブ、ソリッドステートドライブ（ＳＳＤ）、ならびにテープドライブを含む。例のコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報の記憶のための任意の方法または技術において実装される揮発性および不揮発性媒体、取り外し式および非取り外し式媒体を含むことができる。
【００６４】
システムメモリ６２０、取り外し式ストレージ６５１、および非取り外し式ストレージ６５２は、すべてコンピュータ記憶媒体の例である。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気記憶装置、または所望の情報を記憶するために使用することが可能でありかつコンピューティングデバイス６００によってアクセスされることが可能な任意の他の媒体を含むが、これらに限定されない。任意のそのようなコンピュータ記憶媒体を、デバイス６００の一部とすることができる。
【００６５】
コンピューティングデバイス６００は、バス／インターフェースコントローラ６４０を介して、さまざまなインターフェース装置（例えば、出力インターフェース、周辺インターフェース、および通信インターフェース）から基本構成６０１への通信を容易にするためのインターフェースバス６４２をやはり含むことができる。例の出力インターフェース６６０は、グラフィック処理ユニット６６１およびオーディオ処理ユニット６６２を含み、これらを、１つまたは複数のＡ／Ｖポート６６３を介してディスプレイまたはスピーカなどのさまざまな外部装置と通信するように構成することができる。例の周辺インターフェース６７０は、シリアルインターフェースコントローラ６７１またはパラレルインターフェースコントローラ６７２を含み、これらを、１つまたは複数のＩ／Ｏポート６７３を介して、入力装置（例えば、キーボード、マウス、ペン、音声入力装置、タッチ入力装置、等）または他の周辺装置（例えば、プリンタ、スキャナ、等）などの外部装置と通信するように構成することができる。一例の通信インターフェース６８０は、ネットワークコントローラ６８１を含み、これを、１つまたは複数の通信ポート６８２を介してネットワーク通信による１つまたは複数の他のコンピューティングデバイス６９０との通信を容易にするように配置することができる。ネットワーク通信接続は、通信媒体の一例である。通信媒体を、典型的には、コンピュータ可読命令、データ構造、プログラムモジュール、または搬送波もしくは他の移送機構などの変調したデータ信号中の他のデータによって具体化することができ、任意の情報配信媒体を含む。「変調したデータ信号」は、その特性の１つもしくは複数が、信号または信号中の情報を符号化するように設定または変更された信号とすることができる。例として、限定ではなく、通信媒体は、有線ネットワークまたは直接有線接続などの有線媒体、ならびに音響、無線周波数（ＲＦ）、赤外線（ＩＲ）および他のワイヤレス媒体などのワイヤレス媒体を含むことができる。本明細書において使用されるときコンピュータ可読媒体という用語は、記憶媒体および通信媒体の両方を含むことができる。
【００６６】
コンピューティングデバイス６００を、セルフォン、スマートフォン、パーソナルデータアシスタント（ＰＤＡ）、パーソナルメディアプレーヤ装置、ワイヤレスウェブウォッチ装置、パーソナルハンドセット装置、特定用途向け装置、または上記の機能のいずれかを含むハイブリッド装置などのスモールフォームファクタ携帯型（もしくはモバイル）電子装置の一部として実装することができる。コンピューティングデバイス６００を、ラップトップコンピュータおよび非ラップトップコンピュータ構成の両方を含むパーソナルコンピュータとしてやはり実装することができるか、またはワークステーションもしくはサーバ構成中にやはり実装することができる。
【００６７】
本開示において用語「に応じて（ｒｅｓｐｏｎｓｉｖｅ  ｔｏ）」または「に応答して（ｉｎ  ｒｅｓｐｏｎｓｅ  ｔｏ）」に言及することは、特定の特徴および／または構造に対する応答性に限定されない。特徴は、もう１つの特徴および／または構造にやはり応じることができ、その特徴および／または構造内にやはり設置されることが可能である。その上、「結合された（ｃｏｕｐｌｅｄ）」または「応じて（ｒｅｓｐｏｎｓｉｖｅ）」または「に応答して」または「と通信して（ｉｎ  ｃｏｍｍｕｎｉｃａｔｉｏｎ  ｗｉｔｈ）」、等などの用語または語句が本明細書においてまたは別記の特許請求の範囲において使用されるときには、これらの用語を、広く解釈すべきである。例えば、句「に結合される（ｃｏｕｐｌｅｄ  ｔｏ）」は、この句が使用される文脈に関して適切であるように通信可能に、電気的におよび／または動作可能に結合されることを指すことができる。
【００６８】
本明細書で説明したやり方で装置および／またはプロセスを記載し、その後そのように記載された装置（例えば、送信機、受信機、ワイヤレス装置、コンピューティングプラットフォーム、コンピューティングデバイス、等）および／または方法を、データ処理システムに統合するためにエンジニアリング方式を使用することは、当技術分野で一般的であることを当業者は認識するであろう。すなわち、本明細書に記載された装置および／または方法の少なくとも一部を、妥当な数の実験によってデータ処理システムに統合することができる。通常のデータ処理システムは、一般に、システムユニットハウジング、ビデオディスプレイ装置、揮発性メモリおよび不揮発性メモリなどのメモリ、マイクロプロセッサおよびデジタル信号プロセッサなどのプロセッサ、オペレーティングシステムなどの計算実体、ドライバ、グラフィカルユーザインタフェース、およびアプリケーションプログラムのうちの１つもしくは複数、タッチパッドもしくはスクリーンなどの１つもしくは複数の相互作用装置、ならびに／またはフィードバックループおよびコントロールモータを含むコントロールシステム（例えば、位置検知用および／もしくは速度検知用フィードバック、コンポーネントの移動用および／もしくは数量の調整用コントロールモータ）を含むことを、当業者は理解するであろう。通常のデータ処理システムは、データコンピューティング／通信システムおよび／またはネットワークコンピューティング／通信システムの中に通常見られるコンポーネントなどの、市販の適切なコンポーネントを利用して実装することができる。
【００６９】
本明細書に記載された主題は、さまざまなコンポーネントまたは要素をしばしば例示しており、これらのコンポーネントまたは要素は、他のさまざまなコンポーネントまたは要素に包含されるか、または他のさまざまなコンポーネントまたは要素に接続される。そのように図示されたアーキテクチャは、単に例にすぎず、実際には、同じ機能を実現する多くの他のアーキテクチャが実装可能であることが理解されよう。概念的な意味で、同じ機能を実現するコンポーネントの任意の構成は、所望の機能が実現されるように効果的に「関連付け」される。したがって、特定の機能を実現するために組み合わされた、本明細書における任意の２つのコンポーネントは、アーキテクチャまたは中間のコンポーネントにかかわらず、所望の機能が実現されるように、お互いに「関連付け」されていると見ることができる。同様に、そのように関連付けされた任意の２つのコンポーネントは、所望の機能を実現するために、互いに「動作可能に接続」または「動作可能に結合」されていると見なすこともでき、そのように関連付け可能な任意の２つのコンポーネントは、所望の機能を実現するために、互いに「動作可能に結合できる」と見なすこともできる。動作可能に結合できる場合の具体例には、物理的にかみ合わせ可能な、および／もしくは物理的に相互作用するコンポーネント、ならびに／またはワイヤレスに相互作用可能な、および／もしくはワイヤレスに相互作用するコンポーネント、ならびに／または論理的に相互作用する、および／もしくは論理的に相互作用可能なコンポーネントが含まれるが、それらに限定されない。
【００７０】
本明細書における実質的にすべての複数形および／または単数形の用語の使用に対して、当業者は、状況および／または用途に適切なように、複数形から単数形に、および／または単数形から複数形に変換することができる。さまざまな単数形／複数形の置き換えは、理解しやすいように、本明細書で明確に説明することができる。
【００７１】
通常、本明細書において、特に添付の特許請求の範囲（例えば、添付の特許請求の範囲の本体部）において使用される用語は、全体を通じて「オープンな（ｏｐｅｎ）」用語として意図されていることが、当業者には理解されよう（例えば、用語「含む（ｉｎｃｌｕｄｉｎｇ）」は、「含むがそれに限定されない（ｉｎｃｌｕｄｉｎｇ  ｂｕｔ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきであり、用語「有する（ｈａｖｉｎｇ）」は、「少なくとも有する（ｈａｖｉｎｇ  ａｔ  ｌｅａｓｔ）」と解釈されるべきであり、用語「含む（ｉｎｃｌｕｄｅｓ）」は、「含むがそれに限定されない（ｉｎｃｌｕｄｅｓ  ｂｕｔ  ｉｓ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきである、など）。導入される請求項で具体的な数の記載が意図される場合、そのような意図は、当該請求項において明示的に記載されることになり、そのような記載がない場合、そのような意図は存在しないことが、当業者にはさらに理解されよう。例えば、理解の一助として、添付の特許請求の範囲は、導入句「少なくとも１つの（ａｔ  ｌｅａｓｔ  ｏｎｅ）」および「１つまたは複数の（ｏｎｅ  ｏｒ  ｍｏｒｅ）」を使用して請求項の記載を導くことを含む場合がある。しかし、そのような句の使用は、同一の請求項が、導入句「１つまたは複数の」または「少なくとも１つの」および「ａ」または「ａｎ」などの不定冠詞を含む場合であっても、不定冠詞「ａ」または「ａｎ」による請求項の記載の導入が、そのように導入される請求項の記載を含む任意の特定の請求項を、単に１つのそのような記載を含む発明に限定する、ということを示唆していると解釈されるべきではない（例えば、「ａ」および／または「ａｎ」は、通常、「少なくとも１つの」または「１つまたは複数の」を意味すると解釈されるべきである）。同じことが、請求項の記載を導入するのに使用される定冠詞の使用にも当てはまる。また、導入される請求項の記載で具体的な数が明示的に記載されている場合でも、そのような記載は、通常、少なくとも記載された数を意味すると解釈されるべきであることが、当業者には理解されよう（例えば、他の修飾語なしでの「２つの記載（ｔｗｏ  ｒｅｃｉｔａｔｉｏｎｓ）」の単なる記載は、通常、少なくとも２つの記載、または２つ以上の記載を意味する）。さらに、「Ａ、ＢおよびＣ、などの少なくとも１つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている（例えば、「Ａ、Ｂ、およびＣの少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを共に、ＡおよびＣを共に、ＢおよびＣを共に、ならびに／またはＡ、Ｂ、およびＣを共に、などを有するシステムを含むが、それに限定されない）。「Ａ、Ｂ、またはＣ、などの少なくとも１つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている（例えば、「Ａ、Ｂ、またはＣの少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを共に、ＡおよびＣを共に、ＢおよびＣを共に、ならびに／またはＡ、Ｂ、およびＣを共に、などを有するシステ���を含むが、それに限定されない）。２つ以上の代替用語を提示する事実上いかなる離接する語および／または句も、明細書、特許請求の範囲、または図面のどこにあっても、当該用語の一方（ｏｎｅ  ｏｆ  ｔｈｅ  ｔｅｒｍｓ）、当該用語のいずれか（ｅｉｔｈｅｒ  ｏｆ  ｔｈｅ  ｔｅｒｍｓ）、または両方の用語（ｂｏｔｈ  ｔｅｒｍｓ）を含む可能性を企図すると理解されるべきであることが、当業者にはさらに理解されよう。例えば、句「ＡまたはＢ」は、「Ａ」または「Ｂ」あるいは「ＡおよびＢ」の可能性を含むことが理解されよう。
【００７２】
さまざまな態様および実施形態を本明細書において開示してきたが、他の態様および実施形態は、当業者には明白であろう。本明細書において開示したさまざまな態様および実施形態は、例示の目的のためであり、限定するようには意図されず、真の範囲および精神は別記の特許請求の範囲によって示される。
【図４】
0005993018.tif 000009
【図５】
0005993018.tif 000010
【図１】
0005993018.tif 000011
【図２】
0005993018.tif 000012
【図３Ａ】
0005993018.tif 000013
【図３Ｂ】
0005993018.tif 000014
【図３Ｃ】
0005993018.tif 000015
【図３Ｄ】
0005993018.tif 000016
【図６】
0005993018.tif 000017