JP5961746B2 - 多次元raidのための方法およびシステム - Google Patents

多次元raidのための方法およびシステム Download PDF

Info

Publication number
JP5961746B2
JP5961746B2 JP2015501902A JP2015501902A JP5961746B2 JP 5961746 B2 JP5961746 B2 JP 5961746B2 JP 2015501902 A JP2015501902 A JP 2015501902A JP 2015501902 A JP2015501902 A JP 2015501902A JP 5961746 B2 JP5961746 B2 JP 5961746B2
Authority
JP
Japan
Prior art keywords
raid
data
raid grid
parity
grid
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015501902A
Other languages
English (en)
Other versions
JP2015516630A (ja
Inventor
ボンウィック,ジェフリー・エス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
DSSD Inc
Original Assignee
DSSD Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by DSSD Inc filed Critical DSSD Inc
Publication of JP2015516630A publication Critical patent/JP2015516630A/ja
Application granted granted Critical
Publication of JP5961746B2 publication Critical patent/JP5961746B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1057Parity-multiple bits-RAID6, i.e. RAID 6 implementations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Description

背景
ストレージシステムにおけるデータの潜在的な損失に対する保護のために、複製スキームを実施することはしばしば有利である。現在の複製スキームは、ストレージシステム内のデータを読み出すことができなくなる前に、限られた量のエラーに耐えることができるだけである。
概要
一般に、1つの局面において、本発明はデータを格納するための方法に関する。当該方法は、データを書き込む要求を受け取るステップと、上記要求に応答して、上記データを書き込むようRAIDグリッドにおけるRAIDグリッド位置を選択するステップと、上記データをメモリに書き込むステップとを含み、上記データは、上記メモリに一時的に格納されており、上記方法はさらに、上記RAIDグリッド位置が充填されていることを示すようデータ構造を更新するステップと、上記データ構造を使用して、上記RAIDグリッドにおけるデータグリッドが充填されているかどうかを決定するステップとを含み、上記RAIDグリッド位置は上記データグリッドに存在しており、上記方法はさらに、上記データグリッドが充填されているという決定に基づいて、上記データを使用して上記RAIDグリッドについてのパリティ値を計算するステップと、上記RAIDグリッド位置に対応する持続性ストレージにおける物理アドレスを決定するステップと、上記物理アドレスに対応する持続性ストレージにおける物理的位置に上記データを書き込むステップと、上記持続性ストレージに上記パリティ値を書き込むステップとを含む。
一般に、1つの局面において、本発明は、データを再構築するための方法に関する。上記方法は、第1のデータについての要求を受け取るステップと、上記第1のデータを取得するステップとを含み、上記第1のデータは持続性ストレージにおける第1の物理的位置から取得され、上記第1の物理的位置は第1の物理アドレスに関連付けられており、上記方法はさらに、上記第1のデータは破損および未取得からなるグループから選択されるものであるという第1の決定を行うステップを含み、上記第1の決定に基づいて、上記第1の物理アドレスに対応する第1のRAIDグリッド位置を識別するステップと、第1のRAIDグリッドが上記第1のRAIDグリッド位置に関連付けられることを識別するステップと、上記第1のRAIDグリッドに関連付けられる、上記第1のRAIDグリッドおよび第2のRAIDグリッドを含むRAIDキューブを識別するステップと、上記第1のRAIDグリッドにおいて少なくとも1つの値を使用して上記第1のデータを再構築する第1の試みを行うステップとを含み、上記第1の試みは失敗し、上記方法はさらに、上記第1の試みが失敗した後、上記第2のRAIDグリッドにおいて少なくとも1つの値を使用して上記第1のデータを再構築する第2の試みを行うステップを含み、上記第2の試みは成功し、上記方法はさらに、再構築された上記第1のデータを上記クライアントに提供するステップを含む。
一般に、1つの局面において、本発明は、データを再構築するための方法に関する。上記方法は、データについての要求を受け取るステップと、上記データを取得するステップとを含み、上記データは持続性ストレージにおける物理的位置から取得され、上記物理的位置は物理アドレスに関連付けられており、上記方法はさらに、上記第1のデータは破損および未取得からなるグループから選択されるものであるという第1の決定を行うステップを含み、上記第1の決定に基づいて、上記物理アドレスに対応する第1のRAIDグリッド位置を識別するステップと、RAIDグリッドが上記第1のRAIDグリッド位置に関連付けられることを識別するステップと、第2のRAIDグリッド位置における第1の値を使用して上記データを再構築する第1の試みを行うステップとを含み、上記第2のRAIDグリッド位置は、上記RAIDグリッドにおける第1のロウおよび第1のカラムからなるグループから選択される少なくとも1つに位置しており、上記第1のRAIDグリッド位置は上記第1のロウおよび上記第1のカラムの一部であり、上記第1の試みは失敗し、上記方法はさらに、上記第1の試みが失敗した後、上記データを再構築する第2の試みを行うステップを含み、上記第2の試みは成功し、上記第2の試みは、上記RAIDグリッドの再構築された部分を取得するよう、上記RAIDグリッドにおける第2のロウおよび第2のカラムからなるグループから選択される少なくとも1つのものを再構築するステップを含み、上記RAIDグリッドの上記再構築された部分は、上記第1のロウおよび上記第1のカラムからなるグループから選択される少なくとも1つと交差しており、上記第2の試みは、第3のRAIDグリッド位置における第2の値を使用して上記データを再構築するステップを含み、上記第3のRAIDグリッド位置は上記RAIDグリッドの上記再構築された部分の一部であり、上記第3のRAIDグリッド位置は、上記第1のロウおよび上記第1のカラムからなるグループから選択されるものに位置しており、上記方法はさらに、再構築された上記データを上記クライアントに提供するステップを含む。
本発明の他の局面は、以下の記載および添付の特許請求の範囲から明らかになるであろう。
本発明の一実施形態に従ったシステムを示す図である。 本発明の一実施形態に従ったRAIDグリッドを示す図である。 本発明の一実施形態に従った、RAIDキューブおよびRAIDキューブのさまざまな図を示す図である。 本発明の一実施形態に従ったデータ構造を示す図である。 本発明の一実施形態に従ったフローチャートを示す図である。 本発明の一実施形態に従ったフローチャートを示す図である。 本発明の一実施形態に従ったフローチャートを示す図である。 本発明の1つ以上の実施形態に従った例を示す図である。 本発明の1つ以上の実施形態に従った例を示す図である。 本発明の1つ以上の実施形態に従った例を示す図である。 本発明の1つ以上の実施形態に従った例を示す図である。 本発明の1つ以上の実施形態に従った例を示す図である。 本発明の1つ以上の実施形態に従った例を示す図である。 本発明の1つ以上の実施形態に従った例を示す図である。 本発明の1つ以上の実施形態に従ったフローチャートを示す図である。 本発明の1つ以上の実施形態に従った例を示す図である。 本発明の1つ以上の実施形態に従った例を示す図である。 本発明の1つ以上の実施形態に従った例を示す図である。 本発明の1つ以上の実施形態に従った例を示す図である。
詳細な説明
ここで、本発明の特定の実施形態を添付の図面を参照して詳細に記載する。本発明の実施形態の以下の詳細な説明において、本発明のより完全な理解を提供するために多くの特定の詳細が記載される。しかしながら、本発明がこれらの特定の詳細がなくても実施されてもよいことは当業者には明らかであろう。他の例では、説明を不必要に複雑にすることを回避するよう周知の機構は詳細に記載されない。
図1〜図9Dの以下の説明では、本発明のさまざまな実施形態において図に関して記載される任意の構成要素は、任意の他の図に関して記載された同様の名称を有する1つ以上の構成要素と同等であり得る。簡潔さのために、これらの構成要素の説明は、各図に関して繰り返されない。したがって、各図の構成要素の各実施形態は、参照により援用され、同様の名称を有する1つ以上の構成要素を有する他のすべての図内に随意に存在すると想定される。さらに、本発明のさまざまな実施形態に従うと、ある図の構成要素の如何なる記載も、任意の他の図中の対応する同様の名称を有する構成要素に関して記載された実施形態に加えて、当該実施形態に関連して、または当該実施形態の代わりに実施されてもよい随意の実施形態として解釈されるべきである。
一般に、本発明の実施形態は、多次元RAIDスキームを使用してデータを複製するための方法およびシステムに関する。より具体的には、本発明の実施形態は、2D RAIDスキームおよび3D RAIDスキームを実施するための方法およびシステムを提供する。
2D RAIDスキームを使用すると、所与のRAIDストライプにおいて2つより多いエラーが存在する場合、このようなRAIDスキームを実施するRAIDグリッド内に格納されたデータが回復され得る。同様に、3D RAIDスキームを使用すると、所与のRAIDストライプにおいて2つより多いエラーが存在する場合、このようなRAIDスキームを実施するRAIDキューブ内に格納されたデータが回復され得る。さらに、本発明のさまざまな実施形態において、1つより多い独立した障害ドメイン(independent fault domain(IFD))に故障がある場合、すべてのデータが回復されることになる。
本発明の1つ以上の実施形態において、IFDは、所与の位置のデータがアクセス不能になる故障モードに対応する。各IFDは、ストレージアレイにおける故障の独立したモードに対応する。たとえば、(複数のNANDダイを含む)ストレージモジュールの一部であるNANDフラッシュにデータが格納される場合、IFDは、(i)ストレージモジュール、(ii)チャンネル(すなわちストレージモジュールにおけるストレージモジュールコントローラ(図示せず)によって、NANDフラッシュにデータを書き込むよう使用されるチャンネル)、および(iii)NANDダイであり得る。
この発明の目的のために、本願明細書において使用される「RAID」という用語は、「独立ディスク冗長アレイ(Redundant Array of Independent Disks)」を指す。「RAID」は独立したディスクの任意のアレイを指しているが、本発明の実施形態は、本発明の実現例に基づいて、RAIDグリッド位置(たとえば図2参照)が1つ以上の持続性ストレージデバイスに亘って分散され得る任意のタイプの持続的ストレージデバイスを使用して実施されてもよい(たとえば図3および図4参照)。
図1は、本発明の一実施形態に従ったシステムを示す。図1に示されるように、このシステムは、1つ以上のクライアント(100A,100M)と、RAIDコントローラ(104)と、メモリ(106)と、随意にFPGA(102)と、ストレージアレイ(108)とを含む。
本発明の一実施形態において、クライアント(100A,100M)は、読出要求または書込要求をRAIDコントローラ(104)に発行する機能を含む任意のシステムまたはシステム上で実行するプロセスである。本発明の一実施形態において、クライアント(100A,100M)は各々、プロセッサ(図示せず)と、メモリ(図示せず)と、持続性ストレージ(図示せず)とを含んでもよい。本発明の一実施形態において、RAIDコントローラ(104)は、多次元RAIDスキームに一致する態様でストレージアレイにデータを書き込むこと(図5A〜図5C参照)と、多次元RAIDスキームに一致する態様でストレージアレイからデータを読み出すこと(データを再構成することを含む)とを含む多次元RAIDスキームを実施するように構成される(図8参照)。本発明の一実施形態において、RAIDコントローラ(104)は、本発明の1つ以上の実施形態を実施するよう命令を実行するように構成されるプロセッサを含む。当該命令は、RAIDコントローラ(104)内に位置するかまたはRAIDコントローラ(104)に動作可能に接続される一時的でないコンピュータ読取可能媒体(図示せず)上に格納される。代替的には、RAIDコントローラ(104)は、ハードウェアを使用して実施されてもよい。当業者であれば、RAIDコントローラ(104)がソフトウェアおよび/またはハードウェアの任意の組合せを使用して実施されてもよいことを理解するであろう。
本発明の一実施形態では、RAIDコントローラ(104)は、メモリ(106)に動作可能に接続される。メモリ(106)は、任意の揮発性メモリであってもよい。当該揮発性メモリは、ダイナミックランダムアクセスメモリ(DRAM)、シンクロナスDRAM、SDR SDRAMおよびDDR SDRAMを含むが、これらに限定されない。本発明の一実施形態において、メモリ(106)は、(パリティデータを含む)さまざまなデータがストレージアレイに格納される前にこのようなデータを一時的に格納するように構成される。
本発明の一実施形態において、FPGA(102)(存在する場合)は、ストレージアレイ(108)にデータを格納するためにPおよび/もしくはQパリティ情報を計算する機能、ならびに/または多次元RAIDスキームを使用して格納された破損データを回復するのに必要なさまざまな計算を行なう機能を含む。RAIDコントローラ(104)は、本発明の1つ以上の実施形態に従って、さまざまなデータの処理をオフロードするようFPGA(102)を使用し得る。本発明の一実施形態において、ストレージアレイ(108)は、多くの個々の持続性ストレージデバイスを含む。当該持続性ストレージデバイスは、磁気メモリデバイス、光学メモリデバイス、ソリッドステートメモリデバイス、相変化メモリデバイス、任意の他の好適なタイプの持続メモリデバイス、またはその任意の組合せを含むがこれらに限定されない。
図1はFPGAを示しているが、当業者であれば、本発明はFPGAがなくても実施され得るということを理解するであろう。さらに当業者であれば、本発明から逸脱することなく、FPGAの代わりに他の構成要素が使用されてもよいことを理解するであろう。たとえば本発明は、ストレージアレイにデータを格納する目的のためにPおよび/もしくはQパリティ情報を計算することができならびに/または格納された破損データを多次元RAIDスキームを使用して回復するのに必要なさまざまな計算を行うことができるASIC,グラフィックス・プロセッシング・ユニット(GPU),汎用プロセッサ,任意の他のハードウェアデバイス、ストレージアレイ(108)にデータを格納するためにPおよび/もしくはQパリティ情報を計算しならびに/または格納された破損データを多次元RAIDスキームを使用して回復するのに必要なさまざまな計算を行なうよう構成されるハードウェア,ファームウェアおよび/もしくはソフトウェアの組み合わせを含む任意のデバイス、またはその任意の組合せを使用して実施されてもよい。
図2は、本発明の一実施形態に従ったRAIDグリッドを示す。本発明の一実施形態において、RAIDコントローラが2D RAIDスキームまたは3D RAIDスキームを実施する場合(図3を参照)、RAIDコントローラはRAIDグリッド(200)にデータを格納する。図2は、本発明の1つ以上の実施形態に従ったRAIDグリッドの概念部分を示す。RAIDグリッド(200)は、多くのRAIDグリッド位置を含んでおり、各RAIDグリッド位置は、ストレージアレイにおけるユニークな物理アドレスに最終的に書き込まれる。RAIDグリッド(200)は、(i)クライアントから受け取られたデータ(すなわち、クライアントがRAIDコントローラにストレージアレイに書き込みを行うよう命令したデータ)を格納するRAIDグリッド位置を含むデータグリッド(202)と、(ii)RAIDグリッド位置におけるデータを使用して計算されるPパリティ値をロウ(row)(以下に記載)に格納する、RAIDグリッド位置を含むロウPパリティグループ(204)と、(iii)RAIDグリッド位置におけるデータを使用して計算されるQパリティ値をロウ(以下に記載)に格納する、RAIDグリッド位置を含むロウQパリティグループ(206)と、(iv)RAIDグリッド位置におけるデータを使用して計算されるPパリティ値をカラム(column)(以下に記載)に格納する、RAIDグリッド位置を含むカラムPパリティグループ(208)と、(v)RAIDグリッド位置におけるデータを使用して計算されるQパリティ値をカラム(以下に記載)に格納する、RAIDグリッド位置を含むカラムQパリティグループ(210)と、(vi)(a)ロウPパリティグループ(204)中のRAIDグリッド位置からのデータ、(b)ロウQパリティグループ(206)中のRAIDグリッド位置からのデータ、(c)カラムPパリティグループ(208)中のRAIDグリッド位置からのデータ、および(d)カラムQパリティグループ(210)中のRAIDグリッド位置からのデータを使用して計算されたパリティ値を含むインターセクションパリティグループ(212)(以下に記載)とを含む。
ロウ(214)を参照して、本発明の一実施形態において、ロウ(214)においてPとして示されるRAIDグリッド位置に格納されるデータは、データを含むロウ(214)中のすべてのRAIDグリッド位置にPパリティ関数を適用することによって計算される(たとえばP=f(D,D,D,D)。同様に、本発明の一実施形態において、ロウ(214)中のQとして示されるRAIDグリッド位置に格納されるデータは、データを含むロウ(214)中のすべてのRAIDグリッド位置にQパリティ関数を適用することにより計算される(たとえばQ=f(D,D,D,D)。
カラム(216)を参照して、本発明の一実施形態において、カラム(216)のPとして示されるRAIDグリッド位置に格納されるデータは、データを含むカラム(216)中のすべてのRAIDグリッド位置にPパリティ関数を適用することにより計算される(たとえばP=f(D,D,D,D)。同様に、本発明の一実施形態において、カラム(216)のQによって示されるRAIDグリッド位置に格納されるデータは、データを含むカラム(216)中のすべてのRAIDグリッド位置にQパリティ関数を適用することにより計算される(たとえばQ=f(D,D,D,D)。
インターセクションパリティグループ(212)を参照して、本発明の一実施形態において、Ir1として示されるRAIDグリッド位置に格納されるデータは、ロウPパリティグループ(204)中のすべてのRAIDグリッド位置にPパリティ関数を適用することによってか、またはカラムPパリティグループ(208)中のすべてのRAIDグリッド位置にPパリティ関数を適用することによって計算され得る。たとえば、Ir1=f(Pr1,Pr2,Pr3,Pr4)またはIr1=f(Pc5,Pc6,Pc7,Pc8)である。
本発明の一実施形態において、Ir2として示されるRAIDグリッド位置に格納されたデータは、ロウQパリティグループ(204)中のすべてのRAIDグリッド位置にPパリティ関数を適用することによって、またはカラムPパリティグループ(208)中のすべてのRAIDグリッド位置にQパリティ関数を適用することによって計算され得る。たとえば、Ir2=f(Qr1,Qr2,Qr3,Qr4)またはIr2=f(Pc5,Pc6,Pc7,Pc8)である。
本発明の一実施形態において、Ir3として示されるRAIDグリッド位置に格納されたデータは、カラムPパリティグループ(210)中のすべてのRAIDグリッド位置にPパリティ関数を適用することによってか、またはロウPパリティグループ(204)中のすべてのRAIDグリッド位置にQパリティ関数を適用することによって計算され得る。たとえば、Ir3=f(Qc5,Qc6,Qc7,Qc8)またはIr3=f(Pc1,Pc2,Pc3,Pc4)である。
本発明の一実施形態において、Ir4として表示されるRAIDグリッド位置に格納されたデータは、カラムQパリティグループ(210)中のすべてのRAIDグリッド位置にQパリティ関数を適用することによってか、またはロウQパリティグループ(206)中のすべてのRAIDグリッド位置にQパリティ関数を適用することによって計算され得る。たとえば、Ir4=f(Qc1,Qc2,Qc3,Qc4)またはIr4=f(Qc5,Qc6,Qc7,Qc8)である。
本発明の一実施形態において、パリティグループのすべてについての値を計算するために使用されるPおよびQパリティ関数は、RAID6を実施するために使用される任意のPおよびQパリティ関数に対応し得る。
上で論じたように、図2に示されるRAIDグリッド(200)は、RAIDグリッドの概念的なレイアウトを示す。しかしながら、個々のRAIDグリッド位置がストレージアレイに書き込まれると、さまざまなRAIDグリッド位置の相対位置は、ロウまたはカラムに亘って変動し得る。たとえば、ロウ(214)を参照して、ロウ(214)内のRAIDグリッド位置がストレージアレイに書き込まれると、(「D」によって示される)データを含むRAIDグリッド位置と、パリティデータを含むRAIDグリッド位置(すなわち「P」および「Q」として示されるRAIDグリッド位置)との相対位置は、<D,Dr2,Dr2,D>、<Pr2,Qr2,D,D,D,D>、またはロウ(214)内の任意の他の構成であり得る。同様に、カラム(216)を参照して、データ(「D」によって示される)を含むRAIDグリッド位置と、パリティデータを含むRAIDグリッド位置(すなわち「P」および「Q」として示されるRAIDグリッド位置)との相対位置は、<D,D,D,Pc6,D,Qc6>、<Pc6,D,D,Qc6,D,D>、またはカラム(216)内の任意の他の構成であり得る。
RAIDコントローラ(またはシステムにおける別のエンティティ)は、ストレージアレイにおけるどの物理アドレスにRAIDグリッド位置の各々が書き込まれるかを決定し得る。この決定は、クライアントから特定のRAIDグリッドについて(「D」として示される)データのいずれも受け取る前になされ得る。代替的には、この決定は、ストレージアレイにRAIDグリッド位置を書き込む前になされ得る。
当業者であれば、図2は6×6であるRAIDグリッドを示すが、RAIDグリッドは、本発明から逸脱することがなければ任意の他の次元を使用して実施されてもよいということを理解するであろう。
本発明の一実施形態において、Pパリティ値は、リードソロモンシンドロームであり、したがって、Pパリティ関数は、リードソロモンシンドロームを生成し得る任意の関数に対応し得る。本発明の一実施形態では、Pパリティ関数はXOR関数である。
本発明の一実施形態において、Qパリティ値はリードソロモンシンドロームであり、したがって、Qパリティ関数は、リードソロモンシンドロームを生成し得る任意の関数に対応し得る。本発明の一実施形態では、Qパリティ値はリードソロモン符号である。本発明の一実施形態において、Q=g・D+g・D+g・D+…+gn−1・Dn−1であり、式中、Qは、図2に関して規定されたQパリティ値のうちのいずれか1つに対応し、gはフィールドのジェネレータであり、Dの値は(データグリッドからの値および/またはPもしくはQパリティ値の両方を含む1つ以上のロウまたはカラムからの値を含み得る)データに対応する。
当業者であれば、図2におけるRAIDグリッドは各ロウおよびカラムごとにPおよびQパリティを含むが、本発明の実施形態は、本発明から逸脱することがなければ、より多いまたはより少ないパリティ値を使用して実施され得るということを理解するであろう。たとえば、各ロウおよびカラムはPパリティ値のみを含んでもよい。別の例では、各ロウおよびカラムは3つのパリティ値を含んでもよい。上記の例は、本発明を限定するようには意図されない。本発明の一実施形態において、本発明の実現例において使用されるパリティ値の数に関わらず、パリティ値の各々はリードソロモンシンドロームである。
図3は、本発明の一実施形態に従った、RAIDキューブおよびRAIDキューブのさまざまな図を示す。図3に示されるように、RAIDキューブ(300)は、RAIDグリッド(302)の概念的なスタックに対応する。上で論じたように、RAIDコントローラ(またはシステムにおける別のエンティティ)は、RAIDグリッド位置の各々についてデータを格納するべきストレージアレイ内の物理アドレスを選択する。本発明の一実施形態において、物理アドレスの選択は、それに対してRAIDグリッド(またはRAIDキューブ)が保護するよう設計されるIFDに従って決定され得る。換言すると、物理アドレスは、1つ以上のIFDにおける故障から保護する態様で選択され得る。たとえば、図3に示されるように、所与のRAIDグリッド(302,304)についての各RAIDグリッド位置(図示せず)は、IFD1およびIFD2からの値のユニークな対を使用して選択されるがIFD3については同じ値を有する、ストレージアレイ(図示せず)における物理アドレスに書き込まれる(または物理アドレスに書き込まれることになる)。たとえば、(複数のNANDダイを含む)ストレージモジュールの一部であるストレージアレイ中のデータがNANDフラッシュに格納される場合、IFDは、(i)IFD1=ストレージモジュール、(ii)IFD[[1]]2=チャンネル、および(iii)IFD3=NANDダイ、であり得る。したがって、所与のRAIDグリッドにおいて、各RAIDグリッド位置におけるデータがストレージモジュール(IFD1)およびチャンネル(IFD2)のユニークな組合せに書き込まれるが、(ストレージモジュールの各々上の)同じNANDダイに書き込まれる。当業者であれば、本発明が上記の3つの独立した障害ドメインに限定されないことを理解するであろう。さらに、当業者であれば、本発明がNANDフラッシュを含むストレージアレイに限定されないことを理解するであろう。
図3を引き続き参照して、上で論じたように、RAIDキューブ(300)はRAIDグリッドの概念的なスタックである。より具体的には、本発明の一実施形態において、RAIDキューブ(300)は、(i)2つ以上のRAIDグリッド(304,306,308,310)(図2参照)を含むデータ部分(316)と、PパリティRAIDグリッド(312)およびQパリティRAIDグリッド(314)を含むパリティ部分(318)とを含み得る。
本発明の一実施形態において、データ部分(316)中のRAIDグリッド(304,306,308,310)は、RAIDグリッド内のデータ(パリティデータを含む)のみを使用してRAIDグリッド内のデータが回復されることを可能にするパリティデータ(図2参照)を含む。本発明の一実施形態において、RAIDキューブは、(データ部分(316)およびパリティ部分(318)の両方において)他のRAIDグリッドからのデータ(パリティデータを含む)を用いて、所与のRAIDグリッド(304,306,308,310)における所与のRAIDグリッド位置についてのデータが回復され得るように構成される。本発明の一実施形態では、RAIDキューブのパリティ部分(318)は、このような回復メカニズムを可能にする。
本発明の一実施形態において、PパリティRAIDグリッド(312)は、存在するRAIDグリッド(304,306,308,310)と同じ次元である。データ部分(316)中のRAIDグリッドからのデータ(パリティデータを含む)にPパリティ関数(たとえばXOR関数)を適用することによって、PパリティRAIDグリッド内のすべてのRAIDグリッド位置におけるデータが計算される(図7参照)。同様に、QパリティRAIDグリッド(314)は、存在するRAIDグリッド(304,306,308,310)と同じ次元である。データ部分(316)中のRAIDグリッドからのデータ(パリティデータを含む)にQパリティ関数を適用することによって、QパリティRAIDグリッド内のすべてのRAIDグリッド位置におけるデータが計算される(図7参照)。
図4は、本発明の一実施形態に従ったデータ構造を示す。本発明の一実施形態において、RAIDコントローラは、多次元RAIDスキームを実施するよう1つ以上のデータ構造を含む。
本発明の一実施形態において、RAIDコントローラは、クライアントによって提供されるデータとストレージアレイにおけるこのようなデータの物理アドレスとの間のマッピングをトラッキングするデータ構造を含む。本発明の一実施形態において、RAIDコントローラは、クライアントの視点からデータを識別するたとえば<オブジェクト,オフセット>(400)といった論理アドレスと、ストレージアレイ内のデータの位置を識別する物理アドレス(402)との間のマッピングを使用して、上記の情報をトラッキングする。本発明の一実施形態において、当該マッピングは、ハッシュ関数(たとえばMD5,SHA1)を<オブジェクト,オフセット>に適用することによって導出されるハッシュ値との間であり得る。当業者であれば、本発明から逸脱することがなければ、如何なる形態の論理アドレスも使用されてもよいということを理解するであろう。
本発明の一実施形態において、RAIDコントローラは、各RAIDグリッド位置(404)(図2参照)がどのようにストレージアレイにおける特定の物理アドレス(402)にマッピングされるかをトラッキングするデータ構造を含む。
本発明の一実施形態において、RAIDコントローラは、(RAIDコントローラが3D RAIDスキームを実施していると仮定して)どのRAIDグリッド(データ部分およびパリティ部分におけるRAIDグリッドを含む)(408)がどのRAIDキューブ(406)に関連付けられるかと、さらにどのRAIDグリッド位置(404)が各RAIDグリッド(408)に関連付けられるかとをトラッキングするデータ構造を含む。
本発明の一実施形態において、RAIDコントローラは、各RAIDグリッド位置(404)の状態(410)をトラッキングするデータ構造を含む。本発明の一実施形態において、RAIDグリッド位置の状態(410)は、充填(データ(もしくはパリティデータ)がRAIDグリッド位置に書き込まれていることを示す)か、または空(データ(もしくはパリティデータ)がRAIDグリッド位置に書き込まれていないことを示す)としてセットされ得る。本発明の一実施形態において、RAIDコントローラはまた、RAIDコントローラがRAIDコントローラにおいてRAIDグリッド位置に書き込むべきデータを識別した場合、RAIDグリッド位置の状態を充填にセットし得る(図5のステップ506を参照)。
本発明の一実施形態において、RAIDコントローラは、RAIDグリッドジオメトリをトラッキングするデータ構造を含む。本発明の一実施形態において、RAIDグリッドジオメトリは、RAIDグリッドのサイズと、RAIDグリッドの各次元に関連付けられるIFDとを含んでもよいがこれらに限定されない。このデータ構造(または別のデータ構造)はさらに、RAIDキューブのサイズと、RAIDキューブの各次元に関連付けられるIFDとをトラッキングし得る。
本発明の一実施形態において、RAIDコントローラは、各RAIDグリッド内の各ロウおよび/またはカラム内において、(インターセクションパリティグループ内のパリティ値を含む(図2を参照))各PおよびQパリティ値の位置をトラッキングするデータ構造を含む。
本発明の一実施形態において、RAIDコントローラは、RAIDキューブのデータ部分中のどのRAIDグリッド位置が、PパリティRAIDグリッドおよびQパリティRAIDグリッド中のPおよびQパリティ値の各々を計算するよう使用されるかをそれぞれトラッキングするデータ構造を含む。
図5A〜図5Cは、本発明の1つ以上の実施形態に従ったフローチャートを示す。より具体的には、図5A〜図5Cは、本発明の1つ以上の実施形態に従った、ストレージアレイにデータを格納するための方法を示す。フローチャートにおけるさまざまなステップが順次、提示および記載されるが、当業者であれば、ステップのうちのいくつかまたはすべてが、異なる順番で実行されてもよいこと、ステップのうちのいくつかまたはすべてが組み合わせられてもよくまたは省略されてもよいこと、およびステップのうちのいくつかまたはすべてが並行に実行されてもよいことを理解するであろう。本発明の一実施形態において、図5A、図5Bおよび図5Cに示される方法は並行において行なわれてもよい。
図5Aを参照して、ステップ502において、データを書き込む要求がクライアントから受け取られる。本発明の一実施形態において、要求は、クライアントの視点からデータを識別する<オブジェクト,オフセット>を含む。ステップ504において、RAIDコントローラは、当該要求に応答して、RAIDコントローラメモリにおける位置にデータを書き込む。
ステップ506において、RAIDコントローラは、データ構造の1つ以上を更新する(図4参照)。より具体的には、本発明の一実施形態において、RAIDコントローラは、(i)クライアントから受け取られたデータを書き込むべきストレージアレイにおける物理アドレスを選択し、(ii)データについての<オブジェクト,オフセット>と選択された物理アドレスとの間のマッピングを作成し得る。本発明の一実施形態において、データを書き込むべき物理アドレスを選択する前のある点で、RAIDコントローラは、(i)少なくとも1つのRAIDグリッドと、(ii)当該RAIDグリッドについてのRAIDグリッド位置と、(iii)各RAIDグリッド位置に関連付けられるストレージアレイにおける物理アドレスとを特定する。さらに、RAIDコントローラは、各RAIDグリッド位置の状態を空に初期化してもよい。
本発明の一実施形態において、図5Bは、本発明の1つ以上の実施形態に従った、ストレージアレイにRAIDグリッドを書き込むための方法を示す。図5Bを参照して、ステップ508において、所与のRAIDグリッド内のデータグリッド(たとえば図2における202)が充填されているかどうかについて決定がなされる。本発明の一実施形態において、この決定は、図4に関して記載されるデータ構造の1つ以上を使用してなされる。所与のRAIDグリッド内のデータグリッドが充填されている場合、当該プロセスはステップ510に進み、そうでなければプロセスは終了する。
ステップ510において、Pパリティが、データグリッドにおけるRAIDグリッド位置からの適切な値を使用してロウPパリティグループ(たとえば図2における204)中の各RAIDグリッド位置について計算される。ステップ512において、Qパリティが、データグリッドにおけるRAIDグリッド位置からの適切な値を使用してロウQパリティグループ(たとえば図2における206)中の各RAIDグリッド位置について計算される。ステップ514において、Pパリティが、データグリッドにおけるRAIDグリッド位置からの適切な値を使用してカラムPパリティグループ(たとえば図2における208)中の各RAIDグリッド位置について計算される。ステップ516において、Qパリティが、データグリッドにおけるRAIDグリッド位置からの適切な値を使用してカラムQパリティグループ(たとえば図2における210)中の各RAIDグリッド位置について計算される。
ステップ518において、インターセクションパリティグループ(たとえば図2における212)中のすべてのRAIDグリッド位置についてのパリティ値が、ロウPパリティグループ(たとえば図2における204)、ロウQパリティグループ(たとえば図2における206)、ロウQパリティグループ(たとえば図2における206)、およびカラムQパリティグループ(たとえば図2における210)の1つ以上において、RAIDグリッド位置からの適切な値を使用して計算される。
ステップ520において、RAIDグリッドについての各RAIDグリッド位置に関連付けられるデータは、ストレージアレイにおいて適切な物理アドレスに書き込まれる。本発明の一実施形態において、RAIDグリッド位置の各々についてデータを書き込むべき物理アドレスは、図4に関して記載されたデータ構造の1つ以上から得られる。ステップ522において、図4に関して記載された1つ以上のデータ構造は、RAIDグリッドがストレージアレイに書き込まれたことを反映するよう更新される。
本発明の一実施形態において、RAIDコントローラが3D RAIDスキームを実施している場合、RAIDコントローラは、図5Cに示される方法を行なってもよい。図5Cを参照して、ステップ524において、RAIDキューブのデータ部分が充填されているかどうかに関して決定がなされる。RAIDキューブのデータ部分が充填されていれば、プロセスはステップ526に進み、そうでなければプロセスは終了する。本発明の一実施形態において、この決定は、図4に関して記載されたデータ構造の1つ以上を使用してなされる。
ステップ526において、PパリティRAIDグリッド中の各RAIDグリッド位置についてのPパリティ値(たとえば図3における312)が計算される。本発明の一実施形態において、RAIDグリッド位置の各々についての値が、RAIDキューブのデータ部分(たとえば図3における316)におけるRAIDグリッドの各々から得られる1つの値を使用して計算される。
ステップ528において、QパリティRAIDグリッド(たとえば図3における314)中の各RAIDグリッド位置についてのQパリティ値が計算される。本発明の一実施形態において、RAIDグリッド位置の各々についての値が、RAIDキューブのデータ部分(たとえば図3における316)におけるRAIDグリッドの各々から得られる1つの値を使用して計算される。
ステップ530において、パリティRAIDグリッド(たとえばPパリティRAIDグリッドおよびQパリティRAIDグリッド)における各RAIDグリッド位置に関連付けられるデータは、ストレージアレイにおいて適切な物理アドレスに書き込まれる。本発明の一実施形態において、RAIDグリッド位置の各々についてデータを書き込むべき物理アドレスは、図4に関して記載されたデータ構造の1つ以上から得られる。ステップ532において、図4に関して記載された1つ以上のデータ構造は、RAIDキューブがストレージアレイに書き込まれたことを反映するよう更新される。
図6A〜図6Cは、本発明の1つ以上の実施形態に従った、RAIDグリッドをポピュレートする例を示す。当該例は、本発明の範囲を限定するようには意図されない。
図6Aを参照して、クライアントからのデータ(「D」として示される)が、RAIDグリッド内のデータグリッド(600)に書き込まれる。データグリッド(600)が(図6Aに示されるように)充填されると、RAIDコントローラ(図示せず)は、ロウPパリティグループ(602)、ロウQパリティグループ(604)、ロウQパリティグループ(606)、およびカラムQパリティグループ(608)といったグループにおいてRAIDグリッド位置についての値を計算する。図6Bは、上記のRAIDグリッド位置についての値のすべてが計算された後のRAIDグリッドを示す。この段階では、計算すべき残存する値は、インターセクションRAIDグループ(610)におけるRAIDグリッド位置についての値だけである。図6Cは、インターセクションRAIDグループ(610)における値のすべてが計算された後のRAIDグリッドを示す。
本発明の一実施形態において、所与のRAIDグリッドに対するすべてのRAIDグリッド位置についてのすべての値は、RAIDコントローラがRAIDグリッドをストレージアレイに書き込む前に、RAIDコントローラメモリに格納される。
図7A〜図7Dは、本発明の1つ以上の実施形態に従った、RAIDキューブをポピュレートする例を示す。この例は、本発明の範囲を限定するようには意図されない。
図7Dに示されるRAIDキューブを考えると、当該RAIDキューブは、RAIDグリッドA(700)と、RAIDグリッドB(702)と、RAIDグリッドC(704)と、PパリティRAIDグリッド(706)と、QパリティRAIDグリッド(708)とを含む。さらに、RAIDキューブにおける各RAIDグリッド(700,702,704,706,708)は、IFD1およびIFD2に亘って書き込まれるが一定の値のIFD3を有するRAIDグリッド位置を含む。したがって、本発明の一実施形態において、RAIDグリッドにおけるRAIDグリッド位置(「ターゲットRAIDグリッド位置」)の値は、(i)ターゲットRAIDグリッド位置が位置するロウまたはカラムにおけるRAIDグリッド位置の値のみか、(ii)ターゲットRAIDグリッド位置が位置するRAIDグリッド内の任意のRAIDグリッド位置の値か、または(iii)ターゲットRAIDグリッド位置が位置するRAIDキューブ内の任意のRAIDグリッド位置の値を使用して回復され得る。換言すると、本発明の一実施形態においては、ターゲットRAIDグリッド位置が位置するロウおよびカラムの各々において2つより多いエラーが存在する場合、RAIDグリッドおよび/またはRAIDキューブ内におけるデータおよびパリティ値の構成によってターゲットRAIDグリッド位置における値が回復されることが可能になる。
図7Aを参照して、図7Aは、RAIDキューブのデータ部分を構成する3つのRAIDグリッド(700,702,704)を含む。RAIDグリッド(700,702,704)の各々におけるRAIDグリッド位置の各々は、RAIDグリッド位置におけるデータが書き込まれるストレージアレイにおける位置を規定する3タプルを含む。この例において、3タプルにおける要素は、<IFD1,IFD2,IFD3>というIFDに対応する。この3タプルは、ストレージアレイにおける位置がどのようにさまざまなIFDに亘って選択されるかを示す。特に、RAIDグリッドAにおけるRAIDグリッド位置の各々は、IFD1およびIFD2のユニークな組合せを含むがIFD3については同じ値を含む。たとえば、IFD1がストレージモジュールである場合、IFD2はチャンネルであり、IFD3はNANDダイであり、3タプル<4,2,1>は、特定のRAIDグリッド位置におけるデータが、チャンネル2を使用して、ストレージモジュール4中のNANDダイ1における物理アドレスに書き込まれることになるということを示す。同様に、3タプル<2,3,1>は、特定のRAIDグリッド位置におけるデータが、チャンネル3を使用して、ストレージモジュール2中のNAND1における物理アドレスに書き込まれることになるということを示す。
RAIDグリッドB(702)およびRAIDグリッドC(704)は、RAIDグリッドA(700)と同様の態様で構成される。しかしながら、RAIDグリッドB(702)におけるRAIDグリッド位置についての3タプル中のIFD3についての値は、RAIDグリッドA(700)についてのRAIDグリッド位置についての3タプル中のIFD3の値と異なる。さらに、RAIDグリッドC(704)についてのRAIDグリッド位置についての3タプル中のIFD3についての値は、RAIDグリッドA(700)およびRAIDグリッドB(702)についてのRAIDグリッド位置についての3タプル中のIFD3の値と異なる。
図7Bを参照して、PパリティRAIDグリッド(706)におけるRAIDグリッド位置の各々中のデータは、RAIDグリッドA(700)、RAIDグリッドB(702)およびRAIDグリッドC(704)と同様の態様で構成される。さらに上述したように、PパリティRAIDグリッド(706)におけるRAIDグリッド位置の各々中のデータの値は、RAIDキューブ(すなわちRAIDグリッドA(700)、RAIDグリッドB(702)、RAIDグリッドC(704))におけるデータグリッド各々中の1つのRAIDグリッド位置からのデータを使用して計算される。たとえば、PパリティRAIDグリッド(706)におけるRAIDグリッド位置<1,1,4>のデータの値は、Pパリティ関数(たとえばXOR関数)を、(i)RAIDグリッドA(700)<1,1,1>からのデータ、(ii)RAIDグリッドB(702)<1,1,2>からのデータ、および(iii)RAIDグリッドC(704)<1,1,3>からのデータ、といったRAIDグリッド位置からのデータに適用することにより決定される。PパリティRAIDグリッド(706)における他のRAIDグリッド位置中のデータついての値は、同様の態様で計算される。
図7Cを参照して、QパリティRAIDグリッド(708)におけるRAIDグリッド位置の各々中のデータは、RAIDグリッドA(700)、RAIDグリッドB(702)およびRAIDグリッドC(704)と同様の態様で構成される。さらに上述したように、QパリティRAIDグリッド(708)におけるRAIDグリッド位置の各々中のデータの値は、RAIDキューブ(すなわちRAIDグリッドA(700)、RAIDグリッドB(702)、RAIDグリッドC(704))におけるデータグリッド各々中の1つのRAIDグリッド位置からのデータを使用して計算される。たとえば、QパリティRAIDグリッド(708)におけるRAIDグリッド位置<1,1,5>でのデータの値は、(上述したように)Qパリティ関数を、(i)RAIDグリッドA(700)<1,1,1>からのデータ、(ii)RAIDグリッドB(702)<1,1,2>からのデータ、および(iii)RAIDグリッドC(704)<1,1,3>からのデータ、といったRAIDグリッド位置からのデータに適用することにより決定される。QパリティRAIDグリッド(708)における他のRAIDグリッド位置中のデータついての値は、同様の態様で計算される。
図8は、本発明の1つ以上の実施形態に従ったフローチャートを示す。より具体的には、図8は、本発明の1つ以上の実施形態に従った、ストレージアレイからデータを取得するための方法を示す。
ステップ800において、データはRAIDグリッド位置から取得される。本発明の一実施形態では、データはクライアントからの要求に応答して取得される。本発明の一実施形態において、要求は<オブジェクト,オフセット>を特定し得、また、RAIDコントローラは、図4に関して記載されたデータ構造の1つ以上を使用して、要求されたデータが格納されるストレージアレイにおける物理アドレスを決定し得る。RAIDコントローラはその後、ストレージアレイから上記要求されたデータを取得し得る。
ステップ802において、ステップ800で取得されたデータが破損しているかどうかに関して決定がなされる。本発明の一実施形態では、RAIDコントローラは、データが破損しているかどうかを判断するための任意の公知の方法(たとえばチェックサム)を実施し得る。当該データが破損されていなければ、プロセスはステップ804に進み、そうでなければ、プロセスはステップ806に進む。ステップ804において、当該データはクライアントに返され、プロセスが終了する。本発明の別の実施形態において、たとえば持続性ストレージが破損もしくはプラグが抜かれるかまたは読出コマンドが失敗したためデータが取得され得ない場合、プロセスはステップ806に進み得る。
ステップ806において、RAIDコントローラは、どのRAIDグリッドからデータが取得されたのかを決定する。ステップ808において、RAIDコントローラは、データを含んでいたRAIDグリッド位置が位置するロウおよび/またはカラム内の他のRAIDグリッド位置を使用して、データを再構築するよう試みる。
ステップ810において、ステップ808における再構築の試みが成功したかどうかに関して決定がなされる。本発明の一実施形態では、RAIDコントローラは、再構築の試みが成功したかどうかを判断するための任意の公知の方法(たとえばチェックサム)を実施し得る。ステップ808における再構築の試みが成功した場合、プロセスはステップ812に進み、そうでなければ、プロセスはステップ814に進む。ステップ812において、再構築されたデータがクライアントに返され、プロセスが終了する。
ステップ814において、RAIDコントローラは、RAIDグリッドの他のロウおよび/またはカラムにおける他のRAIDグリッド位置を使用して、データを再構築することを試みる。ステップ816において、ステップ814における再構築の試みが成功したかどうかに関して決定がなされる。本発明の一実施形態では、RAIDコントローラは、再構築の試みが成功したかどうか判断するための任意の公知の方法(たとえばチェックサム)を実施し得る。ステップ814における再構築の試みが成功した場合、プロセスはステップ812に進み、そうでなければ、プロセスはステップ818に進む。
ステップ818において、RAIDコントローラは、RAIDキューブにおける他のRAIDグリッドを使用してデータを再構築することを試みる。ステップ820において、ステップ818における再構築の試みが成功したかどうかに関して決定がなされる。本発明の一実施形態では、RAIDコントローラは、再構築の試みが成功したかどうか判断するための任意の公知の方法(たとえばチェックサム)を実施し得る。ステップ818における再構築の試みが成功した場合、プロセスはステップ822に進み、そうでなければ、プロセスはステップ824に進む。ステップ822において、再構築されたデータがクライアントに返され、プロセスが終了する。ステップ824において、RAIDコントローラは、要求されたデータがストレージアレイからRAIDコントローラによって抽出され得ないということを示すエラーをクライアントに返す。
当業者であれば、RAIDキューブにおける他のRAIDグリッドを使用してデータを再構築することは、RAIDコントローラが3D RAIDスキームを実施している場合のみ行われるということを理解するであろう。
図9A〜図9Dは、本発明の1つ以上の実施形態に従った例を示す。この例は、本発明の範囲を限定するようには意図されない。図9Aを参照して、クライアントがRAIDグリッド位置(900)からのデータを要求したシナリオを考える。しかしながら、RAIDグリッド位置(900)からのデータは(シェーディングによって示されたように)破損している。RAIDコントローラはまず、ロウ(904)および/またはカラム(902)におけるRAIDグリッド位置からのデータを用いてRAIDグリッド位置(900)中のデータを再構築することを(図8のステップ808によって)試みる。しかしながら、ロウ(904)およびカラム(902)の各々が、破損データを含む3つのRAIDグリッド位置を含んでいるので、RAIDグリッド位置(900)におけるデータは、ロウ(904)および/またはカラム(902)からのデータのみを使用して回復され得ない。
図9Bを参照して、RAIDコントローラは、RAIDグリッドにおける他のRAIDグリッド位置からのデータを使用して、RAIDグリッド位置(900)におけるデータを再構築することを(図8のステップ814によって)試みる。この例において、RAIDコントローラは、ロウ(906)におけるすべての破損データを再構築する。図9Cを参照して、ロウ(906)における破損したデータの再構築に基づき、RAIDコントローラは、カラム(908)におけるすべての破損データを再構築することができる。最後に、図9Dを参照して、カラム(908)における破損データの再構築に基づき、RAIDコントローラは、ロウ(910)における他の非破損データを使用して、RAIDグリッド位置(900)におけるデータを再構築することができる。本発明の一実施形態において、図9B〜図9Dに示されるようなさまざまな破損データの再構築は、図8におけるステップ814の一部として行われる。
図9A〜図9Dに示されていないが、RAIDグリッドにおけるデータのみを使用してRAIDグリッド位置(900)におけるデータが構築され得なかった場合、RAIDコントローラが3D RAIDスキームを実施していれば、RAIDコントローラは、RAIDキューブ(図示せず)内の他のRAIDグリッドにおけるデータを用いて、RAIDグリッド位置(900)におけるデータを再構築することを(図8におけるステップ818によって)試みる。
当業者であれば、IFDに沿ってストレージアレイにデータを格納することおよび/またはNANDフラッシュにデータを格納することに関して本発明のさまざまな例が記載されているが、本発明の実施形態は、本発明から逸脱することがなければ、任意の多次元ディスクアレイ上で実施されてもよいということを理解するであろう。たとえば、RAIDグリッドにおける各RAIDグリッド位置についてのデータが別個のディスク上に格納される2次元アレイのディスク(磁気、光学、ソリッドステート、または任意の他のタイプのストレージデバイス)を使用して本発明の1つ以上の実施形態が実施され得る。
さらに、本発明の一実施形態において、RAIDコントローラが、2次元アレイのディスクを使用して3D RAIDスキームを実施している場合、RAIDコントローラは、<ディスクx,ディスクy,論理ブロックアドレス(LBA)z>(xおよびyはディスクアレイの次元)といったnタプルを使用してRAIDグリッド位置の各々についてのデータを格納し得る。さらに、所与のRAIDグリッドについて、LBAは、単一のRAIDグリッドについての各RAIDグリッド位置について一定であるが、LBAはRAIDキューブにおけるRAIDグリッドに亘って異なる。
2次元のディスクアレイを使用して本発明の実施形態を実施するための上記の例は、本発明の範囲を限定するようには意図されない。
当業者であれば、本発明は2D RAIDスキームおよび3D RAIDスキームに関して記載されているが、本発明の実施形態は任意の多次元のRAIDスキームまで拡張されてもよいということを理解するであろう。
本発明の1つ以上の実施形態は、当該システムにおける1つ以上のプロセッサによって実行される命令を使用して実施されてもよい。さらに、このような命令は、1つ以上の一時的でないコンピュータ読取可能媒体上に格納されるコンピュータ読取可能命令に対応してもよい。
本発明を限られた数の実施形態に関して記載したが、この開示の利益を有する当業者であれば、本願明細書において開示される本発明の範囲から逸脱しない他の実施形態が作り出され得るということを理解するであろう。したがって、本発明の範囲は、添付の請求の範囲によってのみ限定されるべきである。

Claims (29)

  1. 実行されるとデータを格納するための方法を行なう命令を含むプログラムであって、前記方法は、
    データを書き込む要求を受け取るステップと、
    前記要求に応答して、前記データを書き込むようRAIDグリッドにおける独立ディスク冗長アレイ(RAID)グリッド位置を選択するステップと、
    前記データをメモリに書き込むステップとを含み、前記データは、前記メモリに一時的に格納されており、前記方法はさらに、
    前記RAIDグリッド位置が充填されていることを示すようデータ構造を更新するステップと、
    前記データ構造を使用して、前記RAIDグリッドにおけるデータグリッドが充填されているかどうかを決定するステップとを含み、前記RAIDグリッド位置は前記データグリッドに存在しており、前記方法はさらに、
    前記データグリッドが充填されているという決定に基づいて、
    前記データを使用して前記RAIDグリッドについてのパリティ値を計算するステップを含み、前記RAIDグリッドは、ロウQパリティグループ、ロウPパリティグループ、カラムQパリティグループ、カラムPパリティグループおよびインターセクションパリティグループを含んでおり、前記パリティ値の各々は、前記ロウQパリティグループ、前記ロウPパリティグループ、前記カラムQパリティグループ、前記カラムPパリティグループおよび前記インターセクションパリティグループからなるグループから選択されるものに関連付けられており、前記インターセクションパリティグループに関連付けられるパリティ値は、前記ロウQパリティグループ、前記ロウPパリティグループ、前記カラムQパリティグループおよび前記カラムPパリティグループからなるグループから選択される少なくとも1つからの前記パリティ値を使用して計算され、前記方法はさらに、
    前記RAIDグリッド位置に対応する持続性ストレージにおける物理アドレスを決定するステップと、
    前記物理アドレスに対応する持続性ストレージにおける物理的位置に前記データを書き込むステップと、
    前記持続性ストレージに前記パリティ値を書き込むステップとを含む、プログラム。
  2. 前記方法はさらに、
    RAIDキューブのデータ部分が充填されているかどうかを決定するステップを含み、前記データ部分は複数のRAIDグリッドを含んでおり、前記RAIDグリッドは前記複数のRAIDグリッドのうちの1つであり、前記方法はさらに、
    前記データ部分が充填されているという決定に基づき、
    前記データ部分における値を使用して前記RAIDキューブのパリティ部分についてのパリティ値を計算するステップと、
    前記パリティ部分についての前記パリティ値を持続性ストレージに書き込むステップとを含む、請求項1に記載のプログラム。
  3. 前記パリティ部分はPパリティRAIDグリッドおよびQパリティRAIDグリッドを含む、請求項2に記載のプログラム。
  4. 前記RAIDキューブは、第1の次元、第2の次元および第3の次元を含んでおり、前記第1の次元は第1の独立した障害ドメインに関連付けられ、前記第2の次元は第2の独立した障害ドメインに関連付けられ、前記第3の次元は第3の独立した障害ドメインに関連付けられる、請求項2に記載のプログラム。
  5. 前記持続性ストレージにおける前記物理的位置は、前記第1の独立した障害ドメイン、前記第2の独立した障害ドメインおよび前記第3の独立した障害ドメインを少なくとも部分的に使用して特定される、請求項4に記載のプログラム。
  6. 前記持続性ストレージは複数のストレージモジュールを含んでおり、前記複数のストレージモジュールの各々はソリッドステートメモリを含んでおり、前記第1の独立した障害ドメインは前記複数のストレージモジュールであり、前記第2の独立した障害ドメインは前記複数のストレージモジュールの各々における複数のチャンネルであり、前記第3の独立した障害ドメインは前記複数のストレージモジュールの各々における複数のNANDダイである、請求項4に記載のプログラム。
  7. 前記パリティ値は、Pパリティ値、Qパリティ値およびインターセクションパリティ値からなるグループから選択される少なくとも1つを含む、請求項1に記載のプログラム。
  8. 前記RAIDグリッドは第1の次元および第2の次元を含んでおり、前記第1の次元は第1の独立した障害ドメインに関連付けられており、前記第2の次元は第2の独立した障害ドメインに関連付けられている、請求項1に記載のプログラム。
  9. 前記持続性ストレージにおける前記物理的位置は、前記第1の独立した障害ドメインおよび前記第2の独立した障害ドメインを少なくとも部分的に使用して特定される、請求項8に記載のプログラム。
  10. 前記持続性ストレージは複数のストレージモジュールを含んでおり、前記複数のストレージモジュールの各々はソリッドステートメモリを含んでおり、前記第1の独立した障害ドメインは前記複数のストレージモジュールであり、前記第2の独立した障害ドメインは、前記複数のストレージモジュールの各々における複数のチャンネルである、請求項9に記載のプログラム。
  11. 前記持続性ストレージは複数のストレージモジュールを含んでおり、前記複数のストレージモジュールの各々はソリッドステートメモリを含んでおり、前記第1の独立した障害ドメインは、前記複数のストレージモジュールの各々における複数のチャンネルであり、前記第2の独立した障害ドメインは、前記複数のストレージモジュールの各々における複数のNANDダイである、請求項9に記載のプログラム。
  12. 実行されるとデータを再構築するための方法を行なう命令を含むプログラムであって、前記方法は、
    第1のデータについての要求を受け取るステップと、
    前記第1のデータを取得するステップとを含み、前記第1のデータは持続性ストレージにおける第1の物理的位置から取得され、前記第1の物理的位置は第1の物理アドレスに関連付けられており、前記方法はさらに、
    前記第1のデータは破損および未取得からなるグループから選択されるものであるという第1の決定を行うステップを含み、
    前記第1の決定に基づいて、
    前記第1の物理アドレスに対応する第1の独立ディスク冗長アレイ(RAID)グリッド位置を識別するステップと、
    第1のRAIDグリッドが前記第1のRAIDグリッド位置に関連付けられることを識別するステップと、
    前記第1のRAIDグリッドに関連付けられる、前記第1のRAIDグリッドおよび第2のRAIDグリッドを含むRAIDキューブを識別するステップと、
    前記第1のRAIDグリッドにおいて少なくとも1つの値を使用して前記第1のデータを再構築する第1の試みを行うステップとを含み、前記第1の試みは失敗し、前記方法はさらに、
    前記第1の試みが失敗した後、前記第2のRAIDグリッドにおいて少なくとも1つの値を使用して前記第1のデータを再構築する第2の試みを行うステップを含み、前記第2の試みは成功し、前記方法はさらに、
    再構築された前記第1のデータをクライアントに提供するステップを含む、プログラム。
  13. 前記方法は、
    第2のデータについての要求を受け取るステップと、
    前記第2のデータを取得するステップとをさらに含み、前記第2のデータは持続性ストレージにおける第2の物理的位置から取得され、前記第2の物理的位置は、第2の物理アドレスに関連付けられており、前記方法はさらに、
    前記第2のデータが破損しているという第3の決定を行うステップを含み、
    前記第3の決定に基づいて、
    前記第2の物理アドレスに対応する第2のRAIDグリッド位置を識別するステップと、
    前記第1のRAIDグリッドが前記第2のRAIDグリッド位置に関連付けられることを識別するステップと、
    前記第1のRAIDグリッドにおける少なくとも1つの値を使用して前記第2のデータを再構築する第3の試みを行うステップとを含み、前記第3の試みは失敗し、前記方法はさらに、
    前記第3の試みが失敗した後、前記第2のRAIDグリッドにおいて少なくとも1つの値を使用して前記第2のデータを再構築する第4の試みを行うステップを含み、前記第4の試みは失敗し、前記方法はさらに、
    前記第4の試みが失敗した後、前記RAIDキューブのパリティ部分からの少なくとも1つの値を使用して前記第2のデータを再構築する第5の試みを行うステップを含み、前記第5の試みは成功し、前記方法はさらに、
    再構築された前記第2のデータを前記クライアントに提供するステップを含む、請求項12に記載のプログラム。
  14. 前記パリティ部分はPパリティ値およびQパリティ値を含む、請求項13に記載のプログラム。
  15. 前記Pパリティ値は、前記第1のRAIDグリッドに関連付けられる少なくとも1つの値と前記第2のRAIDグリッドに関連付けられる少なくとも1つの値とを使用して計算される、請求項14に記載のプログラム。
  16. 前記第1のRAIDグリッドは、前記第1のRAIDグリッドについてのロウQパリティグループ、前記第1のRAIDグリッドについてのロウPパリティグループ、前記第1のRAIDグリッドについてのカラムQパリティグループ、および前記第1のRAIDグリッドについてのカラムPパリティグループからなるグループから選択される少なくとも1つを含み、
    前記第2のRAIDグリッドは、前記第2のRAIDグリッドについてのロウQパリティグループ、前記第2のRAIDグリッドについてのロウPパリティグループ、前記第2のRAIDグリッドについてのカラムQパリティグループ、および前記第2のRAIDグリッドについてのカラムPパリティグループからなるグループから選択される少なくとも1つを含む、請求項12に記載のプログラム。
  17. 前記第1のRAIDグリッドにおける前記少なくとも1つの値は、データグリッドにおけるRAIDグリッド位置に対応する値、前記第1のRAIDグリッドについてのロウQパリティグループに関連付けられるRAIDグリッド位置に対応する値、前記第1のRAIDグリッドについてのロウPパリティグループに関連付けられるRAIDグリッド位置に対応する値、前記第1のRAIDグリッドについてのカラムQパリティグループに関連付けられるRAIDグリッド位置に対応する値、および前記第1のRAIDグリッドについてのカラムPパリティグループに関連付けられるRAIDグリッド位置に対応する値とからなるグループから選択されるものであり、前記第1のRAIDグリッドは前記データグリッドを含む、請求項12に記載のプログラム。
  18. 前記持続性ストレージはソリッドステートメモリである、請求項12に記載のプログラム。
  19. 実行されるとデータを再構築するための方法を行なう命令を含むプログラムであって、前記方法は、
    データについての要求を受け取るステップと、
    前記データを取得するステップとを含み、前記データは持続性ストレージにおける物理的位置から取得され、前記物理的位置は物理アドレスに関連付けられており、前記方法はさらに、
    前記データは破損および未取得からなるグループから選択されるものであるという第1の決定を行うステップを含み、
    前記第1の決定に基づいて、
    前記物理アドレスに対応する第1の独立ディスク冗長アレイ(RAID)グリッド位置を識別するステップと、
    RAIDグリッドが前記第1のRAIDグリッド位置に関連付けられることを識別するステップと、
    第2のRAIDグリッド位置における第1の値を使用して前記データを再構築する第1の試みを行うステップとを含み、前記第2のRAIDグリッド位置は、前記RAIDグリッドにおける第1のロウおよび第1のカラムからなるグループから選択される少なくとも1つに位置しており、前記第1のRAIDグリッド位置は前記第1のロウおよび前記第1のカラムの一部であり、前記第1の試みは失敗し、前記方法はさらに、
    前記第1の試みが失敗した後、前記データを再構築する第2の試みを行うステップを含み、前記第2の試みは成功し、前記第2の試みは、
    前記RAIDグリッドの再構築された部分を取得するよう、前記RAIDグリッドにおける第2のロウおよび第2のカラムからなるグループから選択される少なくとも1つのものを再構築するステップを含み、前記RAIDグリッドの前記再構築された部分は、前記第1のロウおよび前記第1のカラムからなるグループから選択される少なくとも1つと交差しており、前記第2の試みは、
    第3のRAIDグリッド位置における第2の値を使用して、前記データを再構築するステップを含み、前記第3のRAIDグリッド位置は前記RAIDグリッドの前記再構築された部分の一部であり、前記第3のRAIDグリッド位置は、前記第1のロウおよび前記第1のカラムからなるグループから選択されるものに位置しており、前記方法はさらに、
    再構築された前記データをクライアントに提供するステップを含む、プログラム。
  20. 実行されるとデータを再構築するための方法を行なう命令を含むプログラムであって、前記方法は、
    データについての要求を受け取るステップと、
    持続性ストレージにおける物理的位置から前記データを取得することを試みるステップとを含み、前記物理的位置は第1の物理アドレスに関連付けられており、前記方法はさらに、
    前記データは、破損および利用不可からなるグループから選択されるものであるという決定を行うステップを含み、
    前記決定に基づいて、
    第1の値を取得するようパリティ値を使用して、第2の物理アドレスに対応する第1の独立ディスク冗長アレイ(RAID)グリッド位置を再構築するステップと、
    第2の値を取得するよう前記パリティ値を使用して、第3の物理アドレスに対応する第2のRAIDグリッド位置の再構築するステップと、
    第3の値を取得するよう前記第1の値を使用して、第4の物理アドレスに対応する第3のRAIDグリッド位置の再構築するステップと、
    前記第2の値および前記第3の値を使用して前記データを再構築するステップとを含み、
    前記第1のRAIDグリッド位置はRAIDグリッドにおける第1のストライプに存在しており、
    前記第2のRAIDグリッド位置は前記RAIDグリッドにおける第2のストライプに存在しており、
    前記パリティ値は前記RAIDグリッドにおける第4のRAIDグリッド位置に位置しており、
    前記第4のRAIDグリッド位置は、前記第1のストライプおよび前記第2のストライプの一部であり、前記方法はさらに、
    再構築された前記データをクライアントに提供するステップを含む、プログラム。
  21. 前記第1のストライプは前記RAIDグリッドにおけるロウであり、前記第2のストライプは前記RAIDグリッドにおけるカラムである、請求項20に記載のプログラム。
  22. 前記第1のストライプは前記RAIDグリッドにおけるカラムであり、前記第2のストライプは前記RAIDグリッドにおけるロウである、請求項20に記載のプログラム。
  23. 前記第4のRAIDグリッド位置は、前記RAIDグリッドにおけるインターセクションパリティグループの一部である、請求項20に記載のプログラム。
  24. 前記パリティ値はインターセクションパリティ値である、請求項20に記載のプログラム。
  25. 前記パリティ値は、前記第1のストライプにおける少なくとも1つの他のパリティ値を使用して計算される、請求項20に記載のプログラム。
  26. 前記少なくとも1つの他のパリティ値は、ロウPパリティグループおよびロウQパリティグループからなるグループから選択されるものの一部である、請求項25に記載のプログラム。
  27. 前記パリティ値は、前記第2のストライプにおける少なくとも1つの他のパリティ値を使用して計算される、請求項20に記載のプログラム。
  28. 前記少なくとも1つの他のパリティ値は、カラムPパリティグループおよびカラムQパリティグループからなるグループから選択されるものの部分である、請求項27に記載のプログラム。
  29. 前記データは第5のRAIDグリッド位置に関連付けられており、前記第5のRAIDグリッド位置は前記第1のストライプの部分ではなく、前記第2のストライプの部分ではない、請求項20に記載のプログラム。
JP2015501902A 2012-03-23 2013-03-21 多次元raidのための方法およびシステム Active JP5961746B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/428,536 2012-03-23
US13/428,536 US8327185B1 (en) 2012-03-23 2012-03-23 Method and system for multi-dimensional raid
PCT/US2013/033224 WO2013142646A1 (en) 2012-03-23 2013-03-21 Method and system for multi-dimensional raid

Publications (2)

Publication Number Publication Date
JP2015516630A JP2015516630A (ja) 2015-06-11
JP5961746B2 true JP5961746B2 (ja) 2016-08-02

Family

ID=47148139

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015501902A Active JP5961746B2 (ja) 2012-03-23 2013-03-21 多次元raidのための方法およびシステム

Country Status (5)

Country Link
US (6) US8327185B1 (ja)
EP (2) EP2828754A1 (ja)
JP (1) JP5961746B2 (ja)
CN (2) CN104272261A (ja)
WO (1) WO2013142646A1 (ja)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8645751B2 (en) * 2011-11-02 2014-02-04 Empire Technology Development Llc Triple parity encoding to facilitate data recovery
US8327185B1 (en) * 2012-03-23 2012-12-04 DSSD, Inc. Method and system for multi-dimensional raid
US8464095B1 (en) * 2012-11-15 2013-06-11 DSSD, Inc. Method and system for multi-dimensional raid reconstruction and defect avoidance
US8554997B1 (en) * 2013-01-18 2013-10-08 DSSD, Inc. Method and system for mirrored multi-dimensional raid
US9244761B2 (en) 2013-06-25 2016-01-26 Microsoft Technology Licensing, Llc Erasure coding across multiple zones and sub-zones
US9378084B2 (en) 2013-06-25 2016-06-28 Microsoft Technology Licensing, Llc Erasure coding across multiple zones
AU2013392019B2 (en) 2013-08-09 2016-09-22 Xfusion Digital Technologies Co., Ltd. File processing method and apparatus, and storage device
US8924776B1 (en) 2013-12-04 2014-12-30 DSSD, Inc. Method and system for calculating parity values for multi-dimensional raid
US8949692B1 (en) 2014-01-23 2015-02-03 DSSD, Inc. Method and system for service-aware parity placement in a storage system
US20150205667A1 (en) 2014-01-23 2015-07-23 DSSD, Inc. Method and system for service-aware data placement in a storage system
WO2016073018A1 (en) * 2014-11-04 2016-05-12 Hewlett Packard Enterprise Development Lp Storing excess data in a raid 60 array
US9673840B2 (en) * 2014-12-08 2017-06-06 SK Hynix Inc. Turbo product codes for NAND flash
EP3079079B8 (en) 2015-04-07 2022-04-27 Huawei Technologies Co., Ltd. Method, apparatus and data structure for copying values of a table of a database
US10466913B2 (en) 2015-04-29 2019-11-05 EMC IP Holding Company LLC Method and system for replicating and using grid level metadata in a storage system
US9766837B2 (en) 2015-06-10 2017-09-19 Micron Technology, Inc. Stripe mapping in memory
US10191841B2 (en) * 2015-07-06 2019-01-29 Shannon Systems Ltd. Host device, access system, and access method
CN106339179B (zh) * 2015-07-06 2020-11-17 上海宝存信息科技有限公司 主机装置、存取系统、以及存取方法
US10346246B2 (en) * 2015-11-30 2019-07-09 International Business Machines Corporation Recovering data copies in a dispersed storage network
CN107533537B (zh) 2016-01-29 2021-02-26 慧与发展有限责任合伙企业 存储系统、用于存储的方法和非暂时性计算机可读介质
WO2017131751A1 (en) 2016-01-29 2017-08-03 Hewlett Packard Enterprise Development Lp Remote direct memory access
CN107430494B (zh) * 2016-01-29 2020-09-15 慧与发展有限责任合伙企业 用于远程直接存储器访问的系统、方法和介质
KR102572357B1 (ko) 2016-02-03 2023-08-29 삼성전자주식회사 Raid-6 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10152378B2 (en) * 2016-10-04 2018-12-11 Futurewei Technologies, Inc. Data protection for a cold storage system
US10705911B2 (en) 2017-04-24 2020-07-07 Hewlett Packard Enterprise Development Lp Storing data in a distributed storage system
US10466930B2 (en) 2017-04-28 2019-11-05 EMC IP Holding Company LLC Method and system for fast ordered writes with atomic multicast
US10614019B2 (en) 2017-04-28 2020-04-07 EMC IP Holding Company LLC Method and system for fast ordered writes with target collaboration
US10339062B2 (en) 2017-04-28 2019-07-02 EMC IP Holding Company LLC Method and system for writing data to and read data from persistent storage
US10289491B1 (en) 2017-04-28 2019-05-14 EMC IP Holding Company LLC Method and system for implementing multi-dimensional raid in an extensible storage array to optimize performance
US10365967B2 (en) * 2017-08-23 2019-07-30 Toshiba Memory Corporation On the fly raid parity calculation
KR102490191B1 (ko) 2018-03-05 2023-01-18 삼성전자주식회사 데이터 스토리지 장치 및 이를 포함하는 raid 시스템
WO2019227465A1 (en) 2018-06-01 2019-12-05 Microsoft Technology Licensing, Llc. Erasure coding with overlapped local reconstruction codes
CN109634771A (zh) * 2018-10-31 2019-04-16 华为技术有限公司 一种数据保护方法、装置及系统
CN110109716B (zh) * 2019-05-13 2021-11-16 深圳忆联信息系统有限公司 保证ssd固件稳定加载的方法、装置、计算机设备及存储介质
CN113377569B (zh) 2020-03-09 2024-06-07 伊姆西Ip控股有限责任公司 用于恢复数据的方法、设备和计算机程序产品
US11379318B2 (en) 2020-05-08 2022-07-05 Vmware, Inc. System and method of resyncing n-way mirrored metadata on distributed storage systems without requiring checksum in the underlying storage
US11403189B2 (en) 2020-05-08 2022-08-02 Vmware, Inc. System and method of resyncing data in erasure-coded objects on distributed storage systems without requiring checksum in the underlying storage
US11429498B2 (en) 2020-05-08 2022-08-30 Vmware, Inc. System and methods of efficiently resyncing failed components without bitmap in an erasure-coded distributed object with log-structured disk layout
US11182250B1 (en) * 2020-07-02 2021-11-23 Vmware, Inc. Systems and methods of resyncing data in erasure-coded objects with multiple failures
US11494090B2 (en) 2020-09-25 2022-11-08 Vmware, Inc. Systems and methods of maintaining fault tolerance for new writes in degraded erasure coded distributed storage
CN113703684B (zh) * 2021-08-31 2024-06-11 长江存储科技有限责任公司 基于raid的数据存储方法、数据读取方法及存储器系统
US20230385167A1 (en) * 2022-05-31 2023-11-30 Dell Products L.P. Balanced data mirroring distribution for parallel access

Family Cites Families (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5708668A (en) 1992-05-06 1998-01-13 International Business Machines Corporation Method and apparatus for operating an array of storage devices
US6415355B1 (en) * 1998-05-11 2002-07-02 Kabushiki Kaisha Toshiba Combined disk array controller and cache control method for parity generation mode and data restoration mode
US6351838B1 (en) * 1999-03-12 2002-02-26 Aurora Communications, Inc Multidimensional parity protection system
US6742081B2 (en) * 2001-04-30 2004-05-25 Sun Microsystems, Inc. Data storage array employing block checksums and dynamic striping
US7543100B2 (en) 2001-06-18 2009-06-02 3Par, Inc. Node controller for a data storage system
US20030093740A1 (en) * 2001-10-19 2003-05-15 Nebojsa Stojanovic Iterative hard decoding method for multidimensional SPC
US7180732B2 (en) * 2002-11-06 2007-02-20 Disk Dynamix Mounting apparatus for storage devices
KR20040066638A (ko) * 2003-01-20 2004-07-27 삼성전자주식회사 외부 저장 서브 시스템에서의 패리티 저장 방법 및에러블록 복구 방법
GB2400935B (en) 2003-04-26 2006-02-15 Ibm Configuring memory for a raid storage system
US7149847B2 (en) * 2003-06-26 2006-12-12 Adaptec, Inc. RAID 6 disk array architectures
CN101566931B (zh) * 2003-08-14 2011-05-18 克姆佩棱特科技公司 虚拟磁盘驱动系统和方法
US7644197B1 (en) 2003-10-15 2010-01-05 Sun Microsystems, Inc. Queue management by multiple processors
JP4595342B2 (ja) * 2004-02-19 2010-12-08 日本電気株式会社 記憶装置のデータ書き込み、読み出し方法およびデータ記憶システム
US7490083B2 (en) 2004-02-27 2009-02-10 International Business Machines Corporation Parallel apply processing in data replication with preservation of transaction integrity and source ordering of dependent updates
US7191388B1 (en) * 2004-03-01 2007-03-13 Lattice Semiconductor Corporation Fast diagonal interleaved parity (DIP) calculator
US7406621B2 (en) * 2004-04-02 2008-07-29 Seagate Technology Llc Dual redundant data storage format and method
US7237062B2 (en) * 2004-04-02 2007-06-26 Seagate Technology Llc Storage media data structure system and method
US7594075B2 (en) * 2004-10-20 2009-09-22 Seagate Technology Llc Metadata for a grid based data storage system
US7496735B2 (en) 2004-11-22 2009-02-24 Strandera Corporation Method and apparatus for incremental commitment to architectural state in a microprocessor
US7644087B2 (en) 2005-02-24 2010-01-05 Xeround Systems Ltd. Method and apparatus for data management
US8200887B2 (en) 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
US7519859B2 (en) 2005-08-30 2009-04-14 International Business Machines Corporation Fault recovery for transaction server
US8046660B2 (en) * 2006-08-07 2011-10-25 Marvell World Trade Ltd. System and method for correcting errors in non-volatile memory using product codes
US7934120B2 (en) 2006-09-11 2011-04-26 International Business Machines Corporation Storing data redundantly
US7822921B2 (en) 2006-10-31 2010-10-26 Netapp, Inc. System and method for optimizing write operations in storage systems
US7831768B2 (en) * 2006-11-03 2010-11-09 Hewlett-Packard Development Company, L.P. Method and apparatus for writing data to a disk array
US7711678B2 (en) 2006-11-17 2010-05-04 Microsoft Corporation Software transaction commit order and conflict management
US7788526B2 (en) * 2007-01-10 2010-08-31 International Business Machines Corporation Providing enhanced tolerance of data loss in a disk array system
US7752389B1 (en) 2007-06-20 2010-07-06 Emc Corporation Techniques for determining physical data layout of RAID devices
US7849356B2 (en) 2008-01-17 2010-12-07 International Business Machines Corporation Parity data management system apparatus and method
US8049980B1 (en) 2008-04-18 2011-11-01 Network Appliance, Inc. Partial disk failures and improved storage resiliency
US8234445B2 (en) 2008-06-09 2012-07-31 Infortrend Technology, Inc. RAID data protection architecture using data protection information
JP4978576B2 (ja) * 2008-07-03 2012-07-18 株式会社Jvcケンウッド 符号化方法および符号化装置ならびに復号方法および復号装置
US8078906B2 (en) * 2008-08-21 2011-12-13 Infinidat, Ltd. Grid storage system and method of operating thereof
US8626709B2 (en) 2008-09-26 2014-01-07 Codefutures Corporation Scalable relational database replication
US8645749B2 (en) * 2009-02-04 2014-02-04 Micron Technology, Inc. Systems and methods for storing and recovering controller data in non-volatile memory devices
US8572460B2 (en) * 2009-03-17 2013-10-29 Broadcom Corporation Communication device employing binary product coding with selective additional cyclic redundancy check (CRC) therein
US8145840B2 (en) * 2009-06-05 2012-03-27 Lsi Corporation Method and system for storing excess data in a redundant array of independent disk level 6
US8463826B2 (en) 2009-09-03 2013-06-11 Apple Inc. Incremental garbage collection for non-volatile memories
US8725931B1 (en) 2010-03-26 2014-05-13 Western Digital Technologies, Inc. System and method for managing the execution of memory commands in a solid-state memory
US8214560B2 (en) 2010-04-20 2012-07-03 International Business Machines Corporation Communications support in a transactional memory
US8489979B2 (en) 2010-05-28 2013-07-16 Seagate Technology Llc Methods and devices to reduce outer code failure rate variability
US8677063B2 (en) * 2010-07-30 2014-03-18 International Business Machines Corporation Parity declustered storage device array with partition groups
US8775868B2 (en) * 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment
US8782339B2 (en) * 2010-10-11 2014-07-15 Open Invention Network, Llc Storage system having cross node data redundancy and method and computer readable medium for same
CN101980137B (zh) 2010-10-19 2012-05-30 成都市华为赛门铁克科技有限公司 廉价磁盘冗余阵列重构方法、装置及系统
US8782340B2 (en) * 2010-12-06 2014-07-15 Xiotech Corporation Hot sheet upgrade facility
US8719520B1 (en) 2010-12-14 2014-05-06 Datadirect Networks, Inc. System and method for data migration between high-performance computing architectures and data storage devices with increased data reliability and integrity
JP5367686B2 (ja) * 2010-12-24 2013-12-11 株式会社東芝 データ記憶装置、メモリ制御装置及びメモリ制御方法
US8560772B1 (en) * 2010-12-29 2013-10-15 Datadirect Networks, Inc. System and method for data migration between high-performance computing architectures and data storage devices
US9104327B2 (en) 2011-05-17 2015-08-11 Sandisk Technologies Inc. Fast translation indicator to reduce secondary address table checks in a memory device
US9519555B2 (en) 2011-05-23 2016-12-13 Microsoft Technology Licensing, Llc Synchronous replication in a distributed storage environment
US20120324156A1 (en) 2011-06-17 2012-12-20 Naveen Muralimanohar Method and system of organizing a heterogeneous memory architecture
US9069657B2 (en) 2011-12-12 2015-06-30 Apple Inc. LBA bitmap usage
US8850450B2 (en) 2012-01-18 2014-09-30 International Business Machines Corporation Warning track interruption facility
US8327185B1 (en) * 2012-03-23 2012-12-04 DSSD, Inc. Method and system for multi-dimensional raid
CN103577111B (zh) 2012-07-23 2017-05-31 上海宝存信息科技有限公司 基于非易失性存储器的动态独立冗余阵列存储系统及方法
US8464095B1 (en) 2012-11-15 2013-06-11 DSSD, Inc. Method and system for multi-dimensional raid reconstruction and defect avoidance
CN103019617A (zh) 2012-11-25 2013-04-03 向志华 高效实现ssd内部raid的构建方法、数据读写方法及装置
TWI500272B (zh) * 2012-12-03 2015-09-11 Nat Univ Tsing Hua 資料偵錯系統及其方法
US8554997B1 (en) * 2013-01-18 2013-10-08 DSSD, Inc. Method and system for mirrored multi-dimensional raid
US9778943B2 (en) 2013-05-28 2017-10-03 Red Hat Israel, Ltd. Timer based virtual processor scheduling and suspension on physical processor for use of physical processor by other processing
US9529674B2 (en) 2013-06-18 2016-12-27 Dell Product, LP Storage device management of unrecoverable logical block addresses for RAID data regeneration
US9552242B1 (en) 2013-09-25 2017-01-24 Amazon Technologies, Inc. Log-structured distributed storage using a single log sequence number space
US8924776B1 (en) 2013-12-04 2014-12-30 DSSD, Inc. Method and system for calculating parity values for multi-dimensional raid
CN103902465B (zh) 2014-03-19 2017-02-08 华为技术有限公司 一种固态硬盘垃圾回收的方法、系统和固态硬盘控制器
US10523753B2 (en) 2014-05-06 2019-12-31 Western Digital Technologies, Inc. Broadcast data operations in distributed file systems
TWI567554B (zh) 2014-11-06 2017-01-21 慧榮科技股份有限公司 緩存及讀取即將寫入儲存單元之資料的方法以及使用該方法的裝置
US9558847B2 (en) 2014-11-21 2017-01-31 Sandisk Technologies Llc Defect logging in nonvolatile memory
US20160210060A1 (en) 2015-01-21 2016-07-21 HGST Netherlands B.V. Dynamic resource allocation within storage devices
US9436608B1 (en) 2015-02-12 2016-09-06 International Business Machines Corporation Memory nest efficiency with cache demand generation
US10248463B2 (en) 2015-02-13 2019-04-02 Honeywell International Inc. Apparatus and method for managing a plurality of threads in an operating system
US10466913B2 (en) 2015-04-29 2019-11-05 EMC IP Holding Company LLC Method and system for replicating and using grid level metadata in a storage system
CN106406987B (zh) 2015-07-29 2020-01-03 阿里巴巴集团控股有限公司 一种集群中的任务执行方法及装置
US10387649B2 (en) 2015-10-31 2019-08-20 Quick Heal Technologies Private Limited Detecting malware when executing in a system
US10261902B2 (en) 2016-01-04 2019-04-16 Toshiba Memory Corporation Parallel processing of a series of data units for writing
US10095414B2 (en) 2016-03-07 2018-10-09 Toshiba Memory Corporation Memory system including a controller and a nonvolatile memory having memory blocks
US9760493B1 (en) 2016-03-14 2017-09-12 Vmware, Inc. System and methods of a CPU-efficient cache replacement algorithm
US10248327B2 (en) 2016-04-01 2019-04-02 SK Hynix Inc. Throttling for a memory system using a GC/HOST ratio and operating method thereof
US20170300249A1 (en) 2016-04-15 2017-10-19 Western Digital Technologies, Inc. Validity tracking for garbage collection
US10031810B2 (en) 2016-05-10 2018-07-24 International Business Machines Corporation Generating a chain of a plurality of write requests
US20170351604A1 (en) 2016-06-02 2017-12-07 Futurewei Technologies, Inc. Host and garbage collection write ratio controller
US20180032333A1 (en) 2016-07-31 2018-02-01 Mark Kenneth Sullivan Atomic Line Multi-Tasking
KR20180104830A (ko) 2017-03-14 2018-09-27 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법

Also Published As

Publication number Publication date
CN107038087B (zh) 2020-09-25
US20210049069A1 (en) 2021-02-18
WO2013142646A1 (en) 2013-09-26
CN107038087A (zh) 2017-08-11
US8316260B1 (en) 2012-11-20
US8327185B1 (en) 2012-12-04
US20160217037A1 (en) 2016-07-28
CN104272261A (zh) 2015-01-07
JP2015516630A (ja) 2015-06-11
EP2828754A1 (en) 2015-01-28
EP3399419B1 (en) 2020-10-14
US8448021B1 (en) 2013-05-21
US9513994B2 (en) 2016-12-06
US11119856B2 (en) 2021-09-14
US20150095697A1 (en) 2015-04-02
EP3399419A1 (en) 2018-11-07

Similar Documents

Publication Publication Date Title
US11119856B2 (en) Method and system for multi-dimensional RAID
JP6058813B2 (ja) 多次元raid再構築および障害回避のための方法およびシステム
JP5968562B2 (ja) ミラーリングされた多次元raidのための方法およびシステム
US8924776B1 (en) Method and system for calculating parity values for multi-dimensional raid
CN106095700B (zh) 在存储系统中复制和使用网格层级元数据的方法和系统
US9600368B2 (en) Method and system for service-aware parity placement in a storage system
US7406621B2 (en) Dual redundant data storage format and method
CN104965768A (zh) 用于存储系统中的服务感知数据放置的方法和系统
US10409682B1 (en) Distributed RAID system
JP2020042805A (ja) 永続記憶装置の管理
US10289491B1 (en) Method and system for implementing multi-dimensional raid in an extensible storage array to optimize performance
JP4843695B2 (ja) ディスクアレイ制御装置及びディスクアレイ装置
US9471429B2 (en) Scalable protection scheme for protecting destaged data units

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151006

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160202

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160502

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160531

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160627

R150 Certificate of patent or registration of utility model

Ref document number: 5961746

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250