(58)【調査した分野】(Int.Cl.,DB名)
前記第1の対角パリティ集合に沿った前記第1の対角パリティを決定することは、所定のストライプのそれぞれの第1の対角パリティ集合に属するすべてのチャンクが前記所定のストライプ内に記憶されるように、(p−1)2個の行内でラップアラウンドする前記第1の対角パリティ集合に少なくとも一部は基づいて規定される前記第1の対角パリティを含む、請求項4に記載の方法。
前記第2の対角パリティ集合に沿った前記第2の対角パリティを決定することは、所定のストライプのそれぞれの第2の対角パリティ集合に属するすべてのチャンクが前記所定のストライプ内に記憶されるように、前記(p−1)2個の行内で部分的にラップアラウンドする前記第2の対角パリティ集合に少なくとも一部は基づいて規定される前記第2の対角パリティを含む、請求項5に記載の方法。
前記第2の行パリティに関係する1つまたは複数の行パリティ値および前記第2の対角パリティに関係する1つまたは複数の対角パリティ値を利用する第1の行−対角パリティ(RDP)スキームの実装すること、ならびに次に、前記第1の対角パリティに関係する1つまたは複数の対角パリティ値および前記第1の行パリティに関係する1つまたは複数の行パリティ値を利用する第2のRDPスキームの実装することをさらに含む、請求項6に記載の方法。
前記複数の記憶装置が、ハードディスクドライブ、ソリッドステートディスクドライブ、ダイレクトアクセス記憶装置、磁気テープ、バブルメモリ、光記憶媒体、電子ランダムアクセスまたはデジタル多用途ディスクのうちの少なくとも1つを含む、請求項1に記載の方法。
前記ストレージアレイに関係する故障が、前記複数の記憶装置のうちの1つもしくは複数における故障または前記複数の記憶装置のうちの1つもしくは複数に関係するチェックサムエラーの組み合わせを含む前記ストレージアレイに関係する3つの同時発生故障を含む、請求項1に記載の方法。
前記第1の対角パリティ集合に沿った前記第1の対角パリティを決定することは、所定のストライプのそれぞれの第1の対角パリティ集合に属するすべてのチャンクが前記所定のストライプ内に記憶されるように、(p−1)2個の行内でラップアラウンドする前記第1の対角パリティ集合に少なくとも一部は基づいて規定される前記第1の対角パリティを含む、請求項14に記載の装置。
前記第2の対角パリティ集合に沿った前記第2の対角パリティを決定することは、所定のストライプのそれぞれの第2の対角パリティ集合に属するすべてのチャンクが前記所定のストライプ内に記憶されるように、前記(p−1)2個の行内で部分的にラップアラウンドする前記第2の対角パリティ集合に少なくとも一部は基づいて規定される前記第2の対角パリティを含む、請求項15に記載の装置。
前記論理回路は、前記第2の行パリティに関係する1つまたは複数の行パリティ値および前記第2の対角パリティに関係する1つまたは複数の対角パリティ値を利用する第1の行−対角パリティ(RDP)スキームの実装すること、ならびに次に、前記第1の対角パリティに関係する1つまたは複数の対角パリティ値および前記第1の行パリティに関係する1つまたは複数の行パリティ値を利用する第2のRDPスキームの実装するようにさらに構成されている、請求項16に記載の装置。
前記ストレージアレイに関係する故障が、前記複数の記憶装置のうちの1つもしくは複数における故障または前記複数の記憶装置のうちの1つもしくは複数に関係するチェックサムエラーの組み合わせを含む前記ストレージアレイに関係する3つの同時発生故障を含む、請求項11に記載の装置。
前記第1の対角パリティ集合に沿った前記第1の対角パリティを決定することは、所定のストライプのそれぞれの第1の対角パリティ集合に属するすべてのチャンクが前記所定のストライプ内に記憶されるように、(p−1)2個の行内でラップアラウンドする前記第1の対角パリティ集合に少なくとも一部は基づいて規定される前記第1の対角パリティを含む、請求項23に記載のシステム。
前記第2の対角パリティ集合に沿った前記第2の対角パリティを決定することは、所定のストライプのそれぞれの第2の対角パリティ集合に属するすべてのチャンクが前記所定のストライプ内に記憶されるように、前記(p−1)2個の行内で部分的にラップアラウンドする前記第2の対角パリティ集合に少なくとも一部は基づいて規定される前記第2の対角パリティを含む、請求項24に記載のシステム。
前記論理回路は、さらに、前記第2の行パリティに関係する1つまたは複数の行パリティ値および前記第2の対角パリティに関係する1つまたは複数の対角パリティ値を利用する第1の行−対角パリティ(RDP)スキームの実装を可能にすること、そして、前記第1の対角パリティに関係する1つまたは複数の対角パリティ値および前記第1の行パリティに関係する1つまたは複数の行パリティ値を利用する第2のRDPスキームの実装を可能にするように構成されている、請求項25に記載のシステム。
前記複数の記憶装置が、ハードディスクドライブ、ソリッドステートディスクドライブ、ダイレクトアクセス記憶装置、磁気テープ、バブルメモリ、光記憶媒体、電子ランダムアクセスまたはデジタル多用途ディスクのうちの少なくとも1つを含む、請求項20に記載のシステム。
【発明を実施するための形態】
【0010】
下記の詳細な説明では、本明細書の一部を形成する添付の図面を参照する。図面では、別段文脈によって規定されない限り、類似の記号は、一般に類似の構成要素を識別する。発明を実施するための形態、図面、および特許請求の範囲に記載する説明のための例または実施形態は、限定するものではない。ここに提示した主題の精神および範囲から逸脱することなく、他の例または実施形態を利用することができ、他の変更を行うことができる。本明細書に全体的に記述され、図に示されたような本開示の態様を、多種多様な異なる構成に配置し、置き換え、組み合わせ、設計することが可能であり、そのすべてが明示的に企図されかつ本開示の一部を形成することが、容易に理解されるであろう。
【0011】
本開示は、特に、複数の記憶装置を有するストレージアレイに関係する故障からの復元を容易にすることに関する方法、装置、システムおよびコンピュータプログラム製品を対象とする。
【0012】
本開示において企図されるように、1つまたは複数のスキームを記憶システム内に実装し、記憶装置が故障した、または1つもしくは複数の記憶装置上に記憶したデータもしくは情報の一部が破壊された場合、データの喪失を防止することができる。また、本開示において企図されるように、これらの1つまたは複数のスキームは、ミラーリング、バックアップまたはパリティ保護を含むことができる。ミラーリングは、データを写すために必要なリソースの観点で費用が掛かる解決策であることがあり、バックアップは、複数のバックアップの間に修正されたデータを保護できないことがある。
【0013】
いくつかの例では、パリティ保護を、ミラーリングまたはバックアップに対する好ましい代替形態とすることができる。シングルパリティと典型的に呼ばれる1つのタイプのパリティ保護は、1つの記憶装置故障によって失われたデータの復元または1つの記憶装置上の破壊データの復元を可能にするデータの冗長エンコーディングを提供することができる。ダブルパリティと典型的に呼ばれるもう1つのタイプのパリティ保護は、2つの記憶装置故障を有する記憶システム内の失われたデータの復元、2つの記憶装置上の破壊データの復元、または記憶装置故障および記憶装置上の破壊データの組み合わせの復元を可能にするデータの冗長エンコーディングを提供することができる。しかしながら、いくつかの記憶装置は、多数の記憶装置を含むことができ、システムが大きいほど、3つの記憶装置故障または3つの記憶装置上の破壊データのより大きな発生確率を含むことがある。したがって、3つの記憶装置故障、3つの記憶装置上の破壊データ、または記憶装置故障および記憶装置上の破壊データの組み合わせを有する記憶システム内の喪失データの復元を可能にするパリティ保護が求められている。
【0014】
いくつかの例では、ストレージアレイに関係する故障からの復元を、トリプルパリティエンコーディングスキームによって容易にすることができる。これらの例に関して、ストレージアレイは、複数の記憶装置を有することができる。複数の記憶装置は、複数のデータ記憶装置および複数のパリティ記憶装置を含むことができる。これらのパリティ記憶装置は、第1の行パリティ記憶装置、第2の行パリティ記憶装置、第1の対角パリティ記憶装置および第2の対角パリティ記憶装置を含むことができる。これらの例に関して、複数のデータ記憶装置に関する第1の行パリティを決定することができる。第1の行パリティは、複数のデータ記憶装置にわたることがあり、かつ第1の行パリティ記憶装置上に記憶されてもよい。第1の対角パリティ集合に沿った第1の対角パリティを、次に決定することができる。第1の対角パリティは、複数のデータ記憶装置のうちの1つを除くすべておよび第1の行パリティ記憶装置にわたることができ、かつ第1の対角パリティ記憶装置上に記憶されてもよい。第2の対角パリティ集合に沿った第2の対角パリティを、やはり決定することができる。第2の対角パリティは、複数のデータ記憶装置のうちの1つを除くすべておよび第1の行パリティ記憶装置にわたることができ、かつ第2の対角パリティ記憶装置上に記憶されてもよい。複数のデータ記憶装置に関する第2の行パリティを、次に決定することができる。第2の行パリティは、複数のデータ記憶装置にわたることができ、かつ第2の行パリティ記憶装置上に記憶されてもよい。これらの例に関して、第2の行パリティの1つまたは複数の行のうちの少なくとも一部は、複数のデータ記憶装置の一部に基づいて決定された第2の行パリティを含むことができる。
【0015】
図1は、ストレージアレイに関係する故障からの復元を容易にする一例のシステムを図示する。
図1に示したように、システム100は、通信チャネル130を介してストレージアレイ120に結合されたコンピューティングプラットフォーム110を含む。やはり、
図1に示したように、コンピューティングプラットフォーム110は、(1つまたは複数の)要素プロセッサ112、メモリ114およびストレージアレイコントローラ116を含む。いくつかの例では、
図1に示されたように、(1つまたは複数の)要素プロセッサ112、システムメモリ114およびストレージアレイコントローラ116を、通信リンク118を介して通信可能に結合することができる。
【0016】
いくつかの例では、
図1に示したように、ストレージアレイコントローラ116は、リカバリマネージャ117およびストレージマネージャ119を含むことができる。システムメモリ114は、オペレーティングシステム115を含むように
図1にやはり示される。いくつかの例に関して、オペレーティングシステム115を、メモリ114内に維持することができ、(1つまたは複数の)要素プロセッサ112によって実行されるように構成することができる。また、オペレーティングシステム115は、ストレージマネージャ119と協働して機能することができ、ストレージアレイ120から読み出し、そこに書き込むことができる。
【0017】
やはり
図1に示したように、ストレージアレイ120は、データ記憶装置122−1から122−mを含むことができ、ここで、mは1よりも大きな任意の正の整数を表す。ストレージアレイ120は、行パリティ記憶装置123、対角パリティ記憶装置124、対角パリティ記憶装置125および行パリティ記憶装置126として
図1に示した4つのパリティ記憶装置をやはり含むことができる。ストレージアレイ120の複数の記憶装置を、
図1に示したように、通信チャネル130を介してストレージアレイコントローラ116に相互接続し、通信可能に結合することができる。
【0018】
いくつかの例によれば、ストレージアレイコントローラ116は、ユーザ(またはクライアント)によって要求される情報またはデータにアクセスするためにストレージアレイ120と協働することができる。ビデオテープ、光ディスク、デジタル多用途ディスク(DVD)、磁気テープ、バブルメモリ、電子式ランダムアクセスメモリ、マイクロエレクトロメカニカル記憶媒体またはデータもしくはパリティ情報を記憶するように構成された任意の他の類似の記憶媒体などのいずれかのタイプの取り付けられた記憶装置上に、データを記憶することができる。
図1には示さないが、ストレージアレイコントローラ116およびストレージアレイ120は、通信チャネル130を介してストレージアレイ120にコンピューティングプラットフォーム110を通信可能に結合するためのインターフェース回路を別々に含むことができる。これらの例に関して、通信チャネル130は、限定しないが、ユニバーサルシリアルバス(USB)、PCI−エクスプレス、シリアルアドバンストテクノロジーアタッチメント(SATA)、パラレルアドバンストテクノロジーアタッチメント(PATA)またはスモールコンピュータシステムインターフェース(SCSI)を含むようにさまざまな通信プロトコルにしたがって動作することができる。
【0019】
いくつかの例では、さらに下記に説明するように、リカバリマネージャ117は、ストレージアレイ120に関係する故障からの復元を容易にするための論理回路および/またはフィーチャを含むことができる。故障は、ストレージアレイ120の中の1つまたは複数の記憶装置の完全な故障および/またはストレージアレイ120の中の1つまたは複数の記憶装置上の破壊データまたは情報(例えば、チェックサムエラー)を含むことがある。これらの例に関して、リカバリマネージャ117は、ストレージアレイ120の4つのパリティ記憶装置を使用するトリプルパリティエンコーディングスキームを実装することができる。
【0020】
いくつかの例によれば、トリプルパリティエンコーディングスキームを実装するときには、ストレージアレイ120は、n個のデータ記憶装置および4つのパリティ記憶装置を含むことができ、ここで、n=p−1であり、pは3よりも大きな素数である。これらの例に関して、ストレージアレイ120の複数の記憶装置の各々を、リカバリマネージャ117によってチャンクに分割することができる。複数の記憶装置の各々を、次に、リカバリマネージャ117によって、各記憶装置内に同数のチャンクを含むストライプにさらに編成することができる。また、複数の記憶装置の各々を、(p−1)
2個のチャンクにストライプ化することができる。いくつかの例では、複数の記憶装置を、独立ディスクの冗長アレイ(RAID)スキーム(例えば、RAID6)にしたがってストライプ化することができるが、本開示は、RAIDストライピングスキームだけに限定されない。
【0021】
図2は、リカバリマネージャに関する一例のアーキテクチャのブロック図を図示する。
図1中のシステム100に関して上に記述したように、ストレージアレイコントローラ116は、リカバリマネージャ117を含む。いくつかの例では、リカバリマネージャ117は、ストレージアレイ120などのストレージアレイに関係する故障からの復元を容易にするように構成されたかまたは配置されたフィーチャおよび/または論理回路を含む。
【0022】
図2の例のリカバリマネージャ117は、復元論理回路210、制御論理回路220、メモリ230および入力/出力(I/O)インターフェース240を含む。
図2に図示したように、復元論理回路210を、制御論理回路220、メモリ230およびI/Oインターフェース240に結合する。復元論理回路210は、ストライプフィーチャ212、行フィーチャ214、対角フィーチャ216、もしくはリカバリフィーチャ218のうちの1つまたは複数か、またはこれらの任意の妥当な組み合わせをさらに含むことができる。
【0023】
いくつかの例では、
図2のブロック図に示された要素は、本開示において説明するようなリカバリマネージャ117を支援するまたは使用可能にするように構成される。所定のリカバリマネージャ117は、
図2に示された要素の一部の要素、すべての要素またはより多くの要素を含むことができる。例えば、復元論理回路210および制御論理回路220は、リカバリマネージャ117のフィーチャを実装するための多種多様な(1つまたは複数の)論理デバイスを別々にまたは包括的に表すことができる。一例の論理デバイスは、コンピュータ、マイクロプロセッサ、マイクロコントローラ、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、マルチコア/マルチスレッドマイクロプロセッサの隔絶したスレッドもしくはコア、またはこれらの組み合わせのうちの1つまたは複数を含むことができる。
【0024】
いくつかの例では、
図2に示したように、復元論理回路210は、ストライプフィーチャ212、行フィーチャ214、対角フィーチャ216、またはリカバリフィーチャ218を含む。復元論理回路210を、動作を実行するためにこれらのフィーチャのうちの1つまたは複数を使用するように構成することができる。より詳細に下記に説明するように、例の動作は、ストライピングスキームにしたがってストライプへと記憶装置を編成すること含むことができる。例の動作は、ストライピングスキームにしたがって記憶すべき行パリティおよび対角パリティの集合を決定すること、および決定した行パリティおよび対角パリティの集合を使用してストレージアレイ(例えば、ストレージアレイ120)に関係する故障からの復元を容易にすることをやはり含むことができる。
【0025】
いくつかの例では、制御論理回路220を、リカバリマネージャ117の全体の動作を制御するように構成することができる。上に述べたように、制御論理回路220は、リカバリマネージャ117の制御を実装するために実行可能なコンテンツまたは命令と協働して動作するように構成された任意の多種多様な(1つまたは複数の)論理デバイスを表すことができる。いくつかの代替例では、制御論理回路220のフィーチャおよび機能性を、復元論理回路210内に実装することができる。
【0026】
いくつかの例によれば、メモリ230を、実行可能なコンテンツまたは命令を記憶するように配置する。実行可能なコンテンツまたは命令を、制御論理回路220および/または復元論理回路210によって使用することができ、リカバリマネージャ117のフィーチャまたは要素を実装させるまたは起動させる。メモリ230を、行パリティまたは対角パリティを決定すること(例えば、構築アルゴリズム)およびストライピングスキームにしたがって行パリティまたは対角パリティを記憶することに関係する情報を少なくとも一時的に維持するようにやはり配置することができる。
【0027】
メモリ230は、限定しないが、揮発性メモリ、不揮発性メモリ、フラッシュメモリ、プログラマブル変数もしくは状態、ランダムアクセスメモリ(RAM)、読出し専用メモリ(ROM)、または他のスタティックもしくはダイナミック記憶媒体のうちの1つまたは複数を含む多種多様なメモリ媒体を含むことができる。
【0028】
いくつかの例では、I/Oインターフェース240は、リカバリマネージャ117と、ストレージアレイコントローラ116に通信可能に結合することができる要素または装置との間のインターフェースを提供することができる。例えば、
図1に関して上に述べたように、ストレージアレイコントローラ116を、通信リンク118を介して(1つもしくは複数の)要素プロセッサ112もしくはメモリ114に通信可能に結合するように構成することができるか、または通信チャネル130を介してストレージアレイ120に通信可能に結合するように構成することができる。I/Oインターフェース240は、例えば、リカバリマネージャ117が通信リンク118または通信チャネル130(例えば、インター集積回路(I
2C)、システム管理バス(SMBus)、シリアルペリフェラルインターフェースバス(SPI)USB、SATA、PATA、SCSI、eSATA、PCI−Express、IEEE802.1、IEEE802.11、IEEE802.16、GSM、GPRS、EDGE、W−CDMA、HSPA、LTE、CDMA−2000、EV−DO、等)によって通信することを可能にするためにさまざまな無線通信および/または有線通信プロトコルにしたがって動作するように構成されたインターフェースを含むことができる。
【0029】
図3A〜
図3Dは、ストレージアレイに関するトリプルパリティエンコーディングに関係する例のパリティテーブルを図示する。いくつかの例では、ストレージアレイは、
図1に示したようなストレージアレイ120と同様であってもよい。
図3A〜
図3Dに示したように、テーブル310、テーブル320、テーブル330およびテーブル340を、4つのパリティ記憶装置の使用に少なくとも一部は基づいて構築することができる。これらのパリティテーブルは、トリプルパリティエンコーディングスキームの一例を提供する。このトリプルパリティエンコーディングスキームは、ストレージアレイ120の3つまでの故障(完全な(1つもしくは複数の)装置故障または(1つもしくは複数の)データ破壊)に関係する故障からの復元を容易にすることができる。これらの例に関して、
図1に示された4つのパリティ記憶装置に加えて、ストレージアレイは、4つのデータ記憶装置をやはり含む。
図3A〜
図3Dに示したように、4つのデータ記憶装置に関係するパリティを、列ヘッダ122−1から122−4として示し、4つのパリティ記憶装置に関係するパリティを、列ヘッダ123〜126として示す。
【0030】
いくつかの例によれば、上に説明したように、ストレージアレイ120の記憶装置を(p−1)
2個のチャンクに分割することができ、ここで、pは3よりも大きな素数である。そこで、
図3A〜
図3Dに関して上に述べた例のストレージアレイに関しては、p=5である。したがって、これらの例に関して、ストレージアレイ120の記憶装置を(5−1)
2=16個のチャンクに分割することができる。16個のチャンクに分割することの結果として、
図3A〜
図3Dに示したパリティテーブルの各々は、16行を含む。
【0031】
いくつかの例では、
図3A〜
図3Dに示したトリプルパリティエンコーディングスキームは、下記に示すような1つまたは複数の例の方程式またはアルゴリズムを実装することに少なくとも一部は基づくことができる。例の方程式は、データ記憶装置122−1から122−4の各々について下記の仮定に少なくとも一部は基づくことができる:
pは3よりも大きな素数であり、
データ記憶装置は、Dとして表され、
D(k,j)および(k=0、1、...p−2)および(j=0、1、...、(p−1)
2−1)、
ここで、jはデータ記憶装置kについてのj番目のチャンクである。
例の方程式は、パリティ記憶装置123〜126の各々について下記の仮定に少なくとも一部はやはり基づくことができる:
pは3よりも大きな素数であり、
パリティ記憶装置は、DPとして表され、
DP(i,j)および(i=1、2、3、4)および(j=0、1、...、(p−1)
2−1)、
ここで、jはパリティ記憶装置iについてのj番目のチャンクである。
【0032】
いくつかの例では、データ記憶装置122−1から122−4にわたる第1の行パリティを、例の方程式(1)にしたがって決定することができる。これらの例に関して、第1の行パリティは、
図3Aのテーブル310の右端列内に識別され、行パリティ記憶装置123内に記憶されてもよい。
【0034】
いくつかの例では、第1の対角パリティ集合に沿った第1の対角パリティを、例の方程式(2)にしたがって決定することができる。さらに下記に説明するように、第1の対角パリティは、データ記憶装置122−1から122−4のうちの1つを除くすべておよび行パリティ記憶装置123にわたることができる。これらの例に関して、第1の対角パリティは、
図3Bのテーブル320の右端列内に識別され、対角パリティ記憶装置124内に記憶されてもよい。
(2)もし(p−1)=(p−2)であれば、
【0037】
いくつかの例によれば、テーブル320に示したように、第1の対角パリティ集合に沿った第1の対角パリティを、(p−1)
2個の行内でラップアラウンドする第1の対角パリティ集合に少なくとも一部は基づいて規定することができ、その結果、所定のストライプのそれぞれの第1の対角パリティ集合に属するすべてのチャンクが、所定のストライプ内に記憶される。例えば、テーブル320の右端列において「0」と識別された第1の対角パリティ集合は、行1のところにデータ記憶装置122−1、行4のところにデータ記憶装置122−3、行3のところにデータ記憶装置122−4および行2のところに行パリティ記憶装置123からのチャンクを含む。また、「0」と認識された第1の対角パリティ集合が、データ記憶装置122−1から122−4のうちの1つを除くすべておよび行パリティ記憶装置123にわたることに留意すること。除外された1つの記憶装置は、データ記憶装置122−2である。さらに、他の第1の対角パリティ集合もやはり、データ記憶装置122−1から122−4のうちの1つを除くすべておよび行パリティ記憶装置123にわたることに留意すること。
【0038】
いくつかの例では、第2の対角パリティ集合に沿った第2の対角パリティを、例の方程式(3)にしたがって決定することができる。さらに下記に説明するように、第2の対角パリティは、データ記憶装置122−1から122−4のうちの1つを除くすべておよび行パリティ記憶装置123にわたることができる。これらの例に関して、第2の対角パリティは、
図3Cのテーブル330の右端列内に識別され、対角パリティ記憶装置125内に記憶されてもよい。
(3)もし(j/(p−1)==(p−2))であれば、
【0041】
いくつかの例によれば、テーブル330に示したように、第2の対角パリティ集合に沿った第2の対角パリティを、(p−1)
2個の行内でラップアラウンドする第2の対角パリティ集合に少なくとも一部は基づいて規定することができ、その結果、所定のストライプのそれぞれの第2の対角パリティ集合に属するすべてのチャンクが、所定のストライプ内に記憶される。また、テーブル320に関して上に説明したものと同様に、第1の対角パリティ集合が、データ記憶装置122−1から122−4のうちの1つを除くすべておよび行パリティ記憶装置123にわたる。
【0042】
いくつかの例では、データ記憶装置122−1から122−4にわたる第2の行パリティを、例の方程式(4)にしたがって決定することができる。これらの例に関して、第2の行パリティは、
図3Dのテーブル340の右端列内に識別され、行パリティ記憶装置126内に記憶されてもよい。
(4)もし(j%(p−1)+1>j/(p−1)+1)であれば、
【0045】
いくつかの例によれば、テーブル340に示したように、第2の行パリティは、データ記憶装置122−1から122−4にわたることができる。また、これらの例に関して、決定した第2の行パリティの少なくとも一部は、データ記憶装置の4つすべてというよりはむしろデータ記憶装置の一部に基づくことがある。例えば、テーブル340の行2のところの行パリティは、4つのデータ記憶装置のうちの3つに基づいて決定された行パリティを示し、行12のところの行パリティは、4つのデータ記憶装置のうちの2つに基づいて決定された行パリティを示す。
【0046】
いくつかの例によれば、リカバリマネージャ117は、(例えば、リカバリフィーチャ218を介して)ストレージアレイ120に関係するさまざまな異なるタイプの故障を復元するように構成された論理回路および/またはフィーチャを含むことができる。例えば、3つのデータ記憶装置が故障する場合には、リカバリマネージャ117は、行パリティ記憶装置126内に記憶された第2の行パリティに関係する1つまたは複数の行パリティ値および対角パリティ記憶装置125内に記憶された第2の対角パリティに関係する1つまたは複数の対角パリティ値を利用することができる第1の行−対角パリティ(RDP)スキームを実装することができる。リカバリマネージャ117は、対角パリティ記憶装置124内に記憶された第1の対角パリティに関係する1つまたは複数の対角パリティ値および行パリティ記憶装置123内に記憶された第1の行パリティに関係する1つまたは複数の行パリティ値を利用第2のRDPスキームをやはり実装することができる。これらの例に関して、第1および第2のRDPスキームを実装することによって、3つの故障した記憶装置内に維持されたデータを復元することができる。
【0047】
いくつかの例では、データ記憶装置およびパリティ記憶装置の組み合わせが、故障することがあるか、またはデータ破壊を有することがある。例えば、データ記憶装置のうちの1つならびに行パリティ記憶装置123および対角パリティ記憶装置124の両者が、故障することがあるか、またはデータ破壊を有することがある。リカバリマネージャ117は、対角パリティ記憶装置124内に記憶された第1の対角パリティに関係する1つまたは複数の対角パリティ値および行パリティ記憶装置126内に記憶された第2の行パリティに関係する1つまたは複数の行パリティ値を利用する1つのRDPスキームを実装することができる。これらの例に関して、1つのRDPスキームを実装することの結果として、故障したデータ記憶装置内に維持されたデータを、行パリティ記憶装置123および対角パリティ記憶装置124内に記憶されたパリティ値と同様に復元することができる。
【0048】
上に記述した例の故障は、ストレージアレイ120の故障したまたはデータ破壊した記憶装置内に記憶したデータまたはパリティ値を復元するために、リカバリマネージャ117が1つまたは複数のRDPスキームをどのように実装することができるかのほんの2つの例である。データまたはパリティ値を復元するために行パリティ記憶装置123、126または対角パリティ記憶装置124、125内に記憶された行パリティ値および対角パリティ値を使用することによって、さまざまな他のRDPスキームを実装することができる。
【0049】
図4は、ストレージアレイに関係する故障からの復元を容易にするための例の方法の流れ図を図示する。いくつかの例では、
図1に示したようなシステム100を、
図4に示された流れ図に関する例の方法を図説するために使用する。
図2に示したようなリカバリマネージャ117を、例の方法を図説するためにやはり使用することができる。しかし、説明する方法は、
図1または
図2に関して示したかまたは説明した実装形態に限定されない。例の方法を、
図1または
図2に示された要素のうちの1つまたは複数を有する別のシステムまたはマネージャ上に実装することができる。
【0050】
ブロック410(記憶装置をストライプ化する)において始めて、リカバリマネージャ117は、(例えば、ストライプフィーチャ212を介して)ストレージアレイ120の記憶装置をストライプ化するように構成された論理回路および/またはフィーチャを含むことができる。いくつかの例では、記憶装置を、チャンクに分割することができ、次に各記憶装置内に同数のチャンクを含むストライプへと編成することができる。前に記述したように、ストレージアレイ120の記憶装置を、(p−1)
2個に、この式のpについては5の値を有し(5−1)
2個すなわち16個のチャンクに分割することができる。
【0051】
ブロック410からブロック420(第1の行パリティを決定する)へと続けると、リカバリマネージャ117は、(例えば、行フィーチャ214を介して)第1の行パリティを決定するように構成された論理回路および/またはフィーチャを含むことができる。いくつかの例では、行フィーチャ214は、第1の行パリティを決定するために例の方程式(1)を実装することができる。これらの例に関して、第1の行パリティを、行パリティ記憶装置123内に記憶することができる。
【0052】
ブロック420からブロック430(第1の対角パリティを決定する)へと続けると、リカバリマネージャ117は、(例えば、対角フィーチャ216を介して)第1の対角パリティを決定するように構成された論理回路および/またはフィーチャを含むことができる。いくつかの例では、対角フィーチャ216は、第1の対角パリティを決定するために例の方程式(2)を実装することができる。これらの例に関して、第1の対角パリティを、対角パリティ記憶装置124内に記憶することができる。
【0053】
ブロック430からブロック440(第2の対角パリティを決定する)へと続けると、リカバリマネージャ117は、(例えば、対角フィーチャ216を介して)第2の対角パリティを決定するように構成された論理回路および/またはフィーチャを含むことができる。いくつかの例では、対角フィーチャ216は、第2の対角パリティを決定するために例の方程式(3)を実装することができる。これらの例に関して、第2の対角パリティを、対角パリティ記憶装置125内に記憶することができる。
【0054】
ブロック440からブロック450(第2の行パリティを決定する)へと続けると、リカバリマネージャ117は、(例えば、行フィーチャ214を介して)第2の行パリティを決定するように構成された論理回路および/またはフィーチャを含むことができる。いくつかの例では、行フィーチャ214は、第2の行パリティを決定するために例の方程式(4)を実装することができる。これらの例に関して、第2の行パリティを、行パリティ記憶装置126内に記憶することができる。
【0055】
ブロック450から判断ブロック460(故障またはデータ破壊?)へと続けると、リカバリマネージャ117は、故障またはデータ破壊が(例えば、リカバリフィーチャ218を介して)ストレージアレイ120の記憶装置のうちの1つまたは複数の上に生じたかどうかを決定するように構成された論理回路および/またはフィーチャを含むことができる。故障またはデータ破壊が生じている場合には、プロセスはブロック470へと移動する。そうでなければ、プロセスはブロック480へと移動する。
【0056】
判断ブロック460からブロック470(データ/パリティ復元を実装する)へと移動すると、リカバリマネージャ117は、(例えば、リカバリフィーチャ218を介して)1つまたは複数のリカバリスキームを実装するように構成された論理回路および/またはフィーチャを含むことができる。いくつかの例では、1つまたは複数のリカバリスキームは、ストレージアレイ120の記憶装置に関係する装置故障および/またはデータ破壊によって失われたデータまたはパリティ情報を復元させるためのRDPスキームを含むことができる。
【0057】
ブロック470から判断ブロック480(ストライプ化すべき新たな情報か?)へと続けると、リカバリマネージャ117は、新たな情報またはデータが(例えば、ストライプフィーチャ212を介して)ストレージアレイ120の記憶装置についてストライプ化する必要があるかどうかを決定するように構成された論理回路および/またはフィーチャを含むことができる。新たな情報またはデータをストライプ化する場合には、プロセスは、ブロック420へと移動し、行/対角パリティを決定することができる。そうでなければ、プロセスは判断ブロック460へと移動する。
【0058】
図5は、一例のコンピュータプログラム製品500のブロック図を図示する。いくつかの例では、
図5に示したように、コンピュータプログラム製品500は、信号担持媒体502を含み、これは、ストレージアレイ(例えば、ストレージアレイ120)に関係する故障からの復元を容易にするための命令504をやはり含むことができる。ストレージアレイは、複数の記憶装置を有することができ、これは複数のデータ記憶装置、第1の行パリティ記憶装置、第2の行パリティ記憶装置、第1の対角パリティ記憶装置および第2の対角パリティ記憶装置を含む。命令504は、論理回路(例えば、復元論理回路210)によって実行されると、論理回路に複数のデータ記憶装置に関する第1の行パリティを決定させることができる。第1の行パリティは、複数のデータ記憶装置にわたることができ、第1の行パリティ記憶装置上に記憶されてもよい。命令504は、論理回路に第1の対角パリティ集合に沿った第1の対角パリティをやはり決定させることができる。第1の対角パリティは、複数のデータ記憶装置のうちの1つを除くすべておよび第1の行パリティ記憶装置にわたることができ、第1の対角パリティ記憶装置上に記憶されてもよい。命令504は、論理回路に第2の対角パリティ集合に沿った第2の対角パリティをやはり決定させることができる。第2の対角パリティは、複数のデータ記憶装置のうちの1つを除くすべておよび第1の行パリティ記憶装置にわたることができ、第2の対角パリティ記憶装置上に記憶されてもよい。命令504は、論理回路に複数のデータ記憶装置に関する第2の行パリティをやはり決定させることができる。第2の行パリティは、複数のデータ記憶装置にわたることができ、第2の行パリティ記憶装置上に記憶されてもよい。いくつかの例では、第2の行パリティの1つまたは複数の行の少なくとも一部は、複数のデータ記憶装置の一部に基づいて決定された第2の行パリティを含むことができる。
【0059】
また、
図5に示されたように、いくつかの例では、コンピュータ製品500は、コンピュータ可読媒体506、記録可能媒体508および通信媒体510のうちの1つまたは複数を含むことができる。これらの要素のまわりの点線のボックスは、限定しないが信号担持媒体502内に含まれる異なるタイプの媒体を示す。これらのタイプの媒体は、論理回路(例えば、復元論理回路210)によって実行される命令504を配送することができる。コンピュータ可読媒体506および記録可能媒体508は、フレキシブルディスク、ハードディスクドライブ(HDD)、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、デジタルテープ、コンピュータメモリ、等を含むことができるが、これらに限定されない。通信媒体510は、デジタルおよび/またはアナログ通信媒体(例えば、光ファイバケーブル、導波路、有線通信リンク、無線通信リンク、等)を含むことができるが、これらに限定されない。
【0060】
図6は、一例のコンピューティングデバイス600を図示する。いくつかの例では、
図1〜
図2に示されたリカバリマネージャ117を、コンピューティングデバイス600上に実装することができる。これらの例では、コンピューティングデバイス600の要素を、持続性ストレージのブロックを割り当てるように、またはファイルシステムもしくはアプリケーションが持続性ストレージのブロックにアクセスするように配置するまたは構成することができる。ごく基本的な構成601では、コンピューティングデバイス600は、典型的には1つまたは複数のプロセッサ610およびシステムメモリ620を含む。メモリバス630を、プロセッサ610とシステムメモリ620との間の通信のために使用することができる。
【0061】
所望の構成に応じて、プロセッサ610を、限定しないが、マイクロプロセッサ(μP)、マイクロコントローラ(μC)、デジタル信号プロセッサ(DSP)、またはこれらの任意の組み合わせ含む任意のタイプのものとすることができる。プロセッサ610は、レベル1キャッシュ611およびレベル2キャッシュ612などのキャシングの1つまたは複数のレベル、プロセッサコア613、ならびにレジスタ614を含むことができる。プロセッサコア613は、演算論理ユニット(ALU)、浮動小数点ユニット(FPU)、デジタル信号処理コア(DSPコア)、またはこれらの任意の組み合わせを含むことができる。メモリコントローラ615を、プロセッサ610とともにやはり使用することができるか、またはいくつかの実装形態では、メモリコントローラ615を、プロセッサ610の内部部分とすることができる。
【0062】
所望の構成に応じて、システムメモリ620を、限定しないが、揮発性メモリ(RAMなど)、不揮発性メモリ(ROM、フラッシュメモリ、等など)、またはこれらの任意の組み合わせを含む任意のタイプのものとすることができる。システムメモリ620は、典型的には、オペレーティングシステム621、1つまたは複数のアプリケーション622、およびプログラムデータ624を含む。アプリケーション622は、
図2に示したリカバリマネージャ117アーキテクチャに関して記述したアクションを含む本明細書に記載したような機能を実行するように配置された命令623を含む。プログラムデータ624は、命令623(例えば、行/対角パリティを決定すること)を実装するために有用であるリカバリデータ625を含む。いくつかの例では、アプリケーション622を、オペレーティングシステム621上でプログラムデータ624とともに動作するように配置することが可能であり、その結果、ストレージアレイに関係する故障からの復元を容易にするための実装形態を、本明細書において説明したように提供することができる。この記述した基本構成は、破線601内のこれらの構成要素によって
図6中に図示される。
【0063】
コンピューティングデバイス600は、追加の特徴または機能ならびに基本構成601と任意の必要な装置およびインターフェースとの間の通信を容易にするための追加のインターフェースを有することができる。例えば、ストレージインターフェースバス641を介して、基本構成601と1つまたは複数のデータ記憶装置650との間の通信を容易にするために、バス/インターフェースコントローラ640使用することができる。データ記憶装置650を、取り外し式記憶装置651、非取り外し式記憶装置652、またはこれらの組み合わせとすることができる。取り外し式記憶装置および非取り外し式記憶装置の例は、いくつかの例を挙げると、フレキシブルディスクドライブおよびハードディスクドライブ(HDD)などの磁気ディスク装置、コンパクトディスク(CD)ドライブまたはデジタル多用途ディスク(DVD)ドライブなどの光ディスクドライブ、ソリッドステートドライブ(SSD)、ならびにテープドライブを含む。例のコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報の記憶のための任意の方法または技術において実装される揮発性および不揮発性媒体、取り外し式および非取り外し式媒体を含むことができる。
【0064】
システムメモリ620、取り外し式ストレージ651、および非取り外し式ストレージ652は、すべてコンピュータ記憶媒体の例である。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気記憶装置、または所望の情報を記憶するために使用することが可能でありかつコンピューティングデバイス600によってアクセスされることが可能な任意の他の媒体を含むが、これらに限定されない。任意のそのようなコンピュータ記憶媒体を、デバイス600の一部とすることができる。
【0065】
コンピューティングデバイス600は、バス/インターフェースコントローラ640を介して、さまざまなインターフェース装置(例えば、出力インターフェース、周辺インターフェース、および通信インターフェース)から基本構成601への通信を容易にするためのインターフェースバス642をやはり含むことができる。例の出力インターフェース660は、グラフィック処理ユニット661およびオーディオ処理ユニット662を含み、これらを、1つまたは複数のA/Vポート663を介してディスプレイまたはスピーカなどのさまざまな外部装置と通信するように構成することができる。例の周辺インターフェース670は、シリアルインターフェースコントローラ671またはパラレルインターフェースコントローラ672を含み、これらを、1つまたは複数のI/Oポート673を介して、入力装置(例えば、キーボード、マウス、ペン、音声入力装置、タッチ入力装置、等)または他の周辺装置(例えば、プリンタ、スキャナ、等)などの外部装置と通信するように構成することができる。一例の通信インターフェース680は、ネットワークコントローラ681を含み、これを、1つまたは複数の通信ポート682を介してネットワーク通信による1つまたは複数の他のコンピューティングデバイス690との通信を容易にするように配置することができる。ネットワーク通信接続は、通信媒体の一例である。通信媒体を、典型的には、コンピュータ可読命令、データ構造、プログラムモジュール、または搬送波もしくは他の移送機構などの変調したデータ信号中の他のデータによって具体化することができ、任意の情報配信媒体を含む。「変調したデータ信号」は、その特性の1つもしくは複数が、信号または信号中の情報を符号化するように設定または変更された信号とすることができる。例として、限定ではなく、通信媒体は、有線ネットワークまたは直接有線接続などの有線媒体、ならびに音響、無線周波数(RF)、赤外線(IR)および他のワイヤレス媒体などのワイヤレス媒体を含むことができる。本明細書において使用されるときコンピュータ可読媒体という用語は、記憶媒体および通信媒体の両方を含むことができる。
【0066】
コンピューティングデバイス600を、セルフォン、スマートフォン、パーソナルデータアシスタント(PDA)、パーソナルメディアプレーヤ装置、ワイヤレスウェブウォッチ装置、パーソナルハンドセット装置、特定用途向け装置、または上記の機能のいずれかを含むハイブリッド装置などのスモールフォームファクタ携帯型(もしくはモバイル)電子装置の一部として実装することができる。コンピューティングデバイス600を、ラップトップコンピュータおよび非ラップトップコンピュータ構成の両方を含むパーソナルコンピュータとしてやはり実装することができるか、またはワークステーションもしくはサーバ構成中にやはり実装することができる。
【0067】
本開示において用語「に応じて(responsive to)」または「に応答して(in response to)」に言及することは、特定の特徴および/または構造に対する応答性に限定されない。特徴は、もう1つの特徴および/または構造にやはり応じることができ、その特徴および/または構造内にやはり設置されることが可能である。その上、「結合された(coupled)」または「応じて(responsive)」または「に応答して」または「と通信して(in communication with)」、等などの用語または語句が本明細書においてまたは別記の特許請求の範囲において使用されるときには、これらの用語を、広く解釈すべきである。例えば、句「に結合される(coupled to)」は、この句が使用される文脈に関して適切であるように通信可能に、電気的におよび/または動作可能に結合されることを指すことができる。
【0068】
本明細書で説明したやり方で装置および/またはプロセスを記載し、その後そのように記載された装置(例えば、送信機、受信機、ワイヤレス装置、コンピューティングプラットフォーム、コンピューティングデバイス、等)および/または方法を、データ処理システムに統合するためにエンジニアリング方式を使用することは、当技術分野で一般的であることを当業者は認識するであろう。すなわち、本明細書に記載された装置および/または方法の少なくとも一部を、妥当な数の実験によってデータ処理システムに統合することができる。通常のデータ処理システムは、一般に、システムユニットハウジング、ビデオディスプレイ装置、揮発性メモリおよび不揮発性メモリなどのメモリ、マイクロプロセッサおよびデジタル信号プロセッサなどのプロセッサ、オペレーティングシステムなどの計算実体、ドライバ、グラフィカルユーザインタフェース、およびアプリケーションプログラムのうちの1つもしくは複数、タッチパッドもしくはスクリーンなどの1つもしくは複数の相互作用装置、ならびに/またはフィードバックループおよびコントロールモータを含むコントロールシステム(例えば、位置検知用および/もしくは速度検知用フィードバック、コンポーネントの移動用および/もしくは数量の調整用コントロールモータ)を含むことを、当業者は理解するであろう。通常のデータ処理システムは、データコンピューティング/通信システムおよび/またはネットワークコンピューティング/通信システムの中に通常見られるコンポーネントなどの、市販の適切なコンポーネントを利用して実装することができる。
【0069】
本明細書に記載された主題は、さまざまなコンポーネントまたは要素をしばしば例示しており、これらのコンポーネントまたは要素は、他のさまざまなコンポーネントまたは要素に包含されるか、または他のさまざまなコンポーネントまたは要素に接続される。そのように図示されたアーキテクチャは、単に例にすぎず、実際には、同じ機能を実現する多くの他のアーキテクチャが実装可能であることが理解されよう。概念的な意味で、同じ機能を実現するコンポーネントの任意の構成は、所望の機能が実現されるように効果的に「関連付け」される。したがって、特定の機能を実現するために組み合わされた、本明細書における任意の2つのコンポーネントは、アーキテクチャまたは中間のコンポーネントにかかわらず、所望の機能が実現されるように、お互いに「関連付け」されていると見ることができる。同様に、そのように関連付けされた任意の2つのコンポーネントは、所望の機能を実現するために、互いに「動作可能に接続」または「動作可能に結合」されていると見なすこともでき、そのように関連付け可能な任意の2つのコンポーネントは、所望の機能を実現するために、互いに「動作可能に結合できる」と見なすこともできる。動作可能に結合できる場合の具体例には、物理的にかみ合わせ可能な、および/もしくは物理的に相互作用するコンポーネント、ならびに/またはワイヤレスに相互作用可能な、および/もしくはワイヤレスに相互作用するコンポーネント、ならびに/または論理的に相互作用する、および/もしくは論理的に相互作用可能なコンポーネントが含まれるが、それらに限定されない。
【0070】
本明細書における実質的にすべての複数形および/または単数形の用語の使用に対して、当業者は、状況および/または用途に適切なように、複数形から単数形に、および/または単数形から複数形に変換することができる。さまざまな単数形/複数形の置き換えは、理解しやすいように、本明細書で明確に説明することができる。
【0071】
通常、本明細書において、特に添付の特許請求の範囲(例えば、添付の特許請求の範囲の本体部)において使用される用語は、全体を通じて「オープンな(open)」用語として意図されていることが、当業者には理解されよう(例えば、用語「含む(including)」は、「含むがそれに限定されない(including but not limited to)」と解釈されるべきであり、用語「有する(having)」は、「少なくとも有する(having at least)」と解釈されるべきであり、用語「含む(includes)」は、「含むがそれに限定されない(includes but is not limited to)」と解釈されるべきである、など)。導入される請求項で具体的な数の記載が意図される場合、そのような意図は、当該請求項において明示的に記載されることになり、そのような記載がない場合、そのような意図は存在しないことが、当業者にはさらに理解されよう。例えば、理解の一助として、添付の特許請求の範囲は、導入句「少なくとも1つの(at least one)」および「1つまたは複数の(one or more)」を使用して請求項の記載を導くことを含む場合がある。しかし、そのような句の使用は、同一の請求項が、導入句「1つまたは複数の」または「少なくとも1つの」および「a」または「an」などの不定冠詞を含む場合であっても、不定冠詞「a」または「an」による請求項の記載の導入が、そのように導入される請求項の記載を含む任意の特定の請求項を、単に1つのそのような記載を含む発明に限定する、ということを示唆していると解釈されるべきではない(例えば、「a」および/または「an」は、通常、「少なくとも1つの」または「1つまたは複数の」を意味すると解釈されるべきである)。同じことが、請求項の記載を導入するのに使用される定冠詞の使用にも当てはまる。また、導入される請求項の記載で具体的な数が明示的に記載されている場合でも、そのような記載は、通常、少なくとも記載された数を意味すると解釈されるべきであることが、当業者には理解されよう(例えば、他の修飾語なしでの「2つの記載(two recitations)」の単なる記載は、通常、少なくとも2つの記載、または2つ以上の記載を意味する)。さらに、「A、BおよびC、などの少なくとも1つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている(例えば、「A、B、およびCの少なくとも1つを有するシステム」は、Aのみ、Bのみ、Cのみ、AおよびBを共に、AおよびCを共に、BおよびCを共に、ならびに/またはA、B、およびCを共に、などを有するシステムを含むが、それに限定されない)。「A、B、またはC、などの少なくとも1つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている(例えば、「A、B、またはCの少なくとも1つを有するシステム」は、Aのみ、Bのみ、Cのみ、AおよびBを共に、AおよびCを共に、BおよびCを共に、ならびに/またはA、B、およびCを共に、などを有するシステムを含むが、それに限定されない)。2つ以上の代替用語を提示する事実上いかなる離接する語および/または句も、明細書、特許請求の範囲、または図面のどこにあっても、当該用語の一方(one of the terms)、当該用語のいずれか(either of the terms)、または両方の用語(both terms)を含む可能性を企図すると理解されるべきであることが、当業者にはさらに理解されよう。例えば、句「AまたはB」は、「A」または「B」あるいは「AおよびB」の可能性を含むことが理解されよう。
【0072】
さまざまな態様および実施形態を本明細書において開示してきたが、他の態様および実施形態は、当業者には明白であろう。本明細書において開示したさまざまな態様および実施形態は、例示の目的のためであり、限定するようには意図されず、真の範囲および精神は別記の特許請求の範囲によって示される。