JP2021002350A - 消去コードベースのデータ処理方法および装置 - Google Patents

消去コードベースのデータ処理方法および装置 Download PDF

Info

Publication number
JP2021002350A
JP2021002350A JP2020108769A JP2020108769A JP2021002350A JP 2021002350 A JP2021002350 A JP 2021002350A JP 2020108769 A JP2020108769 A JP 2020108769A JP 2020108769 A JP2020108769 A JP 2020108769A JP 2021002350 A JP2021002350 A JP 2021002350A
Authority
JP
Japan
Prior art keywords
parity
data
chunks
storage controller
slice
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.)
Granted
Application number
JP2020108769A
Other languages
English (en)
Other versions
JP7047018B2 (ja
Inventor
ヤンシン・ゼン
Yanxing Zeng
リアン・チェン
Liang Chen
ルリアン・ドン
Ruliang Dong
ジンイ・ジャン
Jinyi Zhang
ケボ・フ
Kebo Fu
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2021002350A publication Critical patent/JP2021002350A/ja
Application granted granted Critical
Publication of JP7047018B2 publication Critical patent/JP7047018B2/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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3761Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using code combining, i.e. using combining of codeword portions which may have been transmitted separately, e.g. Digital Fountain codes, Raptor codes or Luby Transform [LT] codes
    • 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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/154Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Algebra (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Detection And Correction Of Errors (AREA)
  • Error Detection And Correction (AREA)

Abstract

【課題】消去コードベースのデータ処理方法を提供する。【解決手段】本出願は、消去コードベースのデータ処理方法を開示する。K個のデータチャンクを取得した後、ストレージコントローラは、各データチャンクを2つのデータスライスに分割し、2*Mパリティスライスを取得するために、次に2*M行と2*(K+M)列の要素を含むパリティ行列に基づいて2*Kデータスライスをエンコードする。最後に、ストレージコントローラは、K個のデータチャンクとM個のパリティチャンクを異なるストレージデバイスに別々に格納する。データ処理方法を使用するストレージコントローラの再構築プロセスは、少ないコンピューティングリソースを占有する。【選択図】図1

Description

本出願は、ストレージ技術の分野に関し、より具体的には、消去コードベースのデータ処理方法およびデータ処理方法を実施するストレージコントローラに関する。
消去コード(EC)は、典型的なエラー訂正コードの技術分野である。消去コードのコアは、データチャンクをエンコードしてパリティチャンクを取得するためのものである。データチャンクとパリティチャンクは、チャンクグループを共に形成する。例えば、K個のデータチャンクとM個のパリティチャンクがあると想定すると、ECエンコード後に取得されるチャンクグループの長さは、K+Mである。これに対応して、ストレージシステムでは、K個のデータチャンクとM個のパリティチャンクが異なるハードディスク(または他のタイプのストレージデバイス)に別々に格納されることで、フォールトトレランス能力を有するストレージシステムが形成される。K+Mは、EC構成方式と呼ばれ、ECは通常、従来のリードソロモンコード(RS)を含む。
例として、従来のRSコードが使用される。K+M構成のRSコードの場合、エラーがいずれかのハードディスクのデータで発生したとき、別のハードディスクのデータが読み取られ、ハードディスクのデータを再構築(復元)する必要がある。
しかし、ハードディスク容量が大きくなると、ハードディスクが故障したとき、ハードディスクに格納されたデータを再構築するために必要なデータ読み取り量が増加し、またハードディスクに格納されたデータを再構築するために必要な時間も増加するため、ストレージシステムの作業効率に影響を及ぼす。
本出願は、消去コードベースのデータ処理方法を提供する。この方法を使用するストレージコントローラの再構築プロセスは、比較的少ないコンピューティングリソースを占有する。
第1の態様は、消去コードベースのデータ処理方法を提供する。方法は、ストレージコントローラによって、K個のデータチャンクを取得するステップであって、Kが正の整数である、ステップを含む。次に、ストレージコントローラは、2*Kデータスライスを取得するために、各データチャンクを2つのデータスライスに分割する。ストレージコントローラは、2*Mパリティスライスを取得するために、パリティ行列に基づいて2*Kデータスライスをエンコードし、2*Mパリティスライスは、M個のパリティチャンクを形成し、Mは、正の整数である。K個のデータチャンクとM個のパリティチャンクは、チャンクグループを形成する。最後に、ストレージコントローラは、K個のデータチャンクとM個のパリティチャンクを複数のストレージデバイスに格納する。K+M個のチャンクは、K+M個の異なるストレージデバイスに格納されてもよく、各ストレージデバイスは、1つのチャンクを格納する。
前述の使用されたパリティ行列は、2*M行と2*(K+M)列の要素を含み、要素の各列は、1つのデータスライスまたは1つのパリティスライスに対応する。最初の列から2*K番目の列の各々は、1つのデータスライスに対応し、(2*K+1)番目の列から2*(K+M)番目の列の各々は、1つのパリティスライスに対応する。パリティ行列の要素の各行は、1つの排他的論理和式に対応し、要素の各行に対応する排他的論理和式が使用され、2*Kデータスライスのいくつかに基づいて1つのパリティスライスを取得する。具体的には、パリティスライスを取得するために使用されるデータスライスは、排他的論理和式に対応する行の非ゼロ要素に基づいて決定される。本出願で提供されるエンコード方法を使用することによって構築されたチャンクグループが破損したチャンクを続いて再構築するとき、ストレージコントローラは、より少ないIO要求を実行する必要があり、再構築プロセスは、ストレージコントローラのより少ないコンピューティングリソースを占有し、ストレージコントローラで作動される他のサービスは、及ぼされる影響が少ない。
第1の態様を参照すると、パリティ行列は、ストレージコントローラに事前設定され、パリティ行列は、少なくとも1つの設定ルールを満たす。
第1の態様を参照すると、第1の態様のいくつかの実施態様では、少なくとも1つの設定ルールは、パリティ行列の要素が0、1、または有限体の要素であることを含む。
第1の態様を参照すると、第1の態様のいくつかの実施態様では、少なくとも1つの設定ルールは、パリティ行列にあり、任意のデータチャンクに含まれる2つのデータスライスまたは任意のパリティチャンクに含まれる2つのパリティスライスに対応する2つの列が、2*M行と2列の要素を含む最初のサブ行列を形成することを含み、最初のサブ行列の任意の2つの偶数行または任意の2つの奇数行によって形成された2*2行列の少なくとも1つは、フルランクである。
第1の態様を参照すると、第1の態様のいくつかの実施態様では、少なくとも1つの設定ルールは、パリティ行列にあり、任意のr個のチャンクに含まれる2*rスライスに対応する2*r列が、2*M行と2*r列の要素を含む2番目のサブ行列を形成することを含み、2番目のサブ行列のランクは、2rであり、rは、M以下の整数である。
少なくとも1つの設定ルールは、前述の実施態様のいずれか1つまたはいずれか2つ以上の組み合わせを含んでもよい。
第1の態様を参照すると、第1の態様のいくつかの実施態様では、方法は、ストレージコントローラによって、K個のデータチャンクおよびM個のパリティチャンクのr個のチャンクが破損していると決定するステップと、ストレージコントローラによって、パリティ行列の要素の複数の行に対応する排他的論理和式に基づいてr個の破損したチャンクを再構築し、r個の破損したチャンクを破損していないストレージデバイスに格納するステップとをさらに含み、rは、M以下の整数である。ストレージコントローラが、K個のデータチャンクおよびM個のパリティチャンクのM個を超えるチャンクが破損していると決定すると、ストレージコントローラは、破損したチャンクを再構築することができない。
第2の態様は、ストレージコントローラを提供する。ストレージコントローラは、通信モジュールと、処理モジュールとを含む。通信モジュールは、K個のデータチャンクを取得し、Kは、正の整数である、ように構成され、処理モジュールは、2*Kデータスライスを取得するために、各データチャンクを2つのデータスライスに分割し、2*Mパリティスライスを取得するために、パリティ行列に基づいて2*Kデータスライスをエンコードし、2*Mパリティスライスは、M個のパリティチャンクを形成し、Mは、正の整数である、ように構成され、パリティ行列は、2*M行と2*(K+M)列の要素を含み、要素の各列は、1つのデータスライスまたは1つのパリティスライスに対応し、要素の各行は、1つの排他的論理和式に対応し、要素の各行に対応する排他的論理和式が使用され、2*Kデータスライスのいくつかに基づいて1つのパリティスライスを取得し、通信モジュールは、K個のデータチャンクおよびM個のパリティチャンクを複数のストレージデバイスに格納するようにさらに構成される。
第2の態様を参照すると、パリティ行列は、ストレージコントローラに事前設定され、パリティ行列は、少なくとも1つの設定ルールを満たす。
第2の態様を参照すると、第2の態様のいくつかの実施態様では、少なくとも1つの設定ルールは、パリティ行列の要素が0、1、または有限体の要素であることを含む。
第2の態様を参照すると、第2の態様のいくつかの実施態様では、少なくとも1つの設定ルールは、パリティ行列にあり、任意のデータチャンクに含まれる2つのデータスライスまたは任意のパリティチャンクに含まれる2つのパリティスライスに対応する2つの列が、2*M行と2列の要素を含む最初のサブ行列を形成することを含み、最初のサブ行列の任意の2つの偶数行または任意の2つの奇数行によって形成された2*2行列の少なくとも1つは、フルランクである。
第2の態様を参照すると、第2の態様のいくつかの実施態様では、少なくとも1つの設定ルールは、パリティ行列にあり、任意のr個のチャンクに含まれる2*rスライスに対応する2*r列が、2*M行と2*r列の要素を含む2番目のサブ行列を形成することを含み、2番目のサブ行列のランクは、2rであり、rは、M以下の整数である。
第2の態様を参照すると、第2の態様のいくつかの実施態様では、処理モジュールは、K個のデータチャンクおよびM個のパリティチャンクのr個のチャンクが破損していると決定し、パリティ行列の要素の複数の行に対応する排他的論理和式に基づいてr個の破損したチャンクを再構築するようにさらに構成される。
第3の態様は、別のストレージコントローラを提供する。別のストレージコントローラは、プロセッサと、メモリとを含む。プロセッサは、メモリ内のプログラムを実行し、第1の態様および第1の態様の実施態様のいずれか1つで提供される方法を実施するように構成される。
第4の態様は、別のストレージコントローラを提供する。別のストレージコントローラは、プロセッサと、メモリと、データ処理チップとを含む。データ処理チップは、メモリ内のプログラムを実行するプロセッサと協働し、第1の態様および第1の態様の実施態様のいずれか1つで提供される方法を実施する。
第5の態様は、ストレージシステムを提供する。ストレージシステムは、複数のストレージデバイスと、第2の態様および第2の態様の実施態様のいずれか1つで提供される少なくとも1つのストレージコントローラ、または第3の態様で提供される少なくとも1つのストレージコントローラ、または第4の態様で提供される少なくとも1つのストレージコントローラとを含む。
第6の態様は、非一時的可読記憶媒体を提供する。非一時的可読記憶媒体に格納された命令がストレージコントローラによって実行されると、ストレージコントローラは、第1の態様および第1の態様の実施態様のいずれか1つで提供される方法を実施する。記憶媒体は、プログラム命令を格納する。記憶媒体は、限定はしないが、揮発性メモリ、例えば、ランダムアクセスメモリ、および不揮発性メモリを含む。
第7の態様は、コンピュータプログラム製品を提供する。コンピュータプログラム製品に含まれる命令がストレージコントローラによって実行されると、ストレージコントローラは、第1の態様および第1の態様の実施態様のいずれか1つで提供される方法を実施する。コンピュータプログラム製品は、ソフトウェアインストールパッケージであってもよい。第1の態様および第1の態様の実施態様のいずれか1つで提供される方法を使用する必要があるとき、コンピュータプログラム製品がダウンロードされてもよく、コンピュータプログラム製品に含まれる命令がストレージコントローラで実行される。
本出願の一実施形態によるストレージシステムの組織構造の概略図である。 本出願の一実施形態による別のストレージシステムの組織構造の概略図である。 本出願の一実施形態による別のストレージシステムの組織構造の概略図である。 本出願の一実施形態によるパリティ行列の概略構造図である。 本出願の一実施形態によるパリティ行列の例を示す図である。 本出願の一実施形態によるエンコード方法の概略フローチャートである。 本出願の一実施形態による再構築方法の概略フローチャートである。 本出願の一実施形態によるストレージコントローラの組織構造の概略図である。 本出願の一実施形態による別のストレージコントローラの組織構造の概略図である。 本出願の一実施形態による別のストレージコントローラの組織構造の概略図である。 本出願の一実施形態によるデータ処理チップの組織構造の概略図である。 本出願の一実施形態による別のストレージコントローラの組織構造の概略図である。
以下は、添付の図面を参照して、本出願の実施形態の技術的解決策を説明する。
本出願での「1」、「2」、「3」、「1番目」、「2番目」、および「3番目」などの序数は、複数のオブジェクトを区別するために使用されるが、複数のオブジェクトのシーケンスを制限するために使用されるものではない。
本明細書を通して、有限体は、ガロア体とも呼ばれ、GF(αw)として表される。有限体GF(αw)は、αw要素を含み、αは、素数であり、wは、正の整数である。αw要素間の加算および乗算は閉じており、すなわち、αw要素の任意の2つの要素間の加算の結果は、依然としてαw要素の1つであり、αw要素の任意の2つの要素を乗算することによって取得された結果は、依然としてαw要素の1つである。本出願での加算または乗算は、ガロア体の演算を指す。一般に、ガロア体の加算または乗算は、ガロア体の演算表を調べることによって取得される。ガロア体の演算表は、ストレージコントローラに格納されている。
本明細書を通して、2つのスライス間の排他的論理和(XOR)演算は、排他的論理和演算が2つのスライスのデータの各ビットに対して順次実施されることを意味する。例えば、排他的論理和演算は、スライス3の最初のビットを取得するために、スライス1の最初のビットおよびスライス2の最初のビットに対して実施され、これは排他的論理和演算が、スライス3の最後のビットを取得するために、スライス1の最後のビットおよびスライス2の最後のビットに対して実施されるまで同じように続く。この場合、スライス3は、排他的論理和演算をスライス1およびスライス2に対して実施することによって取得される。本明細書において、記号「
Figure 2021002350
」は、排他的論理和演算の演算子である。
本明細書を通して、記号「*」は、乗算演算の演算子である。「*」の両側の乗数がいずれもガロア体の要素でないとき、「*」は、4つの算術演算の乗算演算を表す。「*」の両側の乗数の1つがガロア体の要素であるとき、「*」は、ガロア体の乗算演算を表す。
本明細書を通して、再構築オーバーヘッドは、チャンクグループのデータを格納するK+M個のストレージデバイスのいずれか1つが破損したとき、ストレージデバイスのオーバーヘッドであり、破損したストレージデバイスを復元するために必要なアクセスオーバーヘッドを測定するために使用されるパラメータである。再構築オーバーヘッドは、破損したストレージデバイスが復元されるとき、破損していないストレージデバイスから読み取られたデータスライスのサイズとチャンクグループのすべてのデータスライスのサイズの比率に等しいか、または破損したストレージデバイスが復元されるとき、破損していないストレージデバイスから読み取られたスライスの量とチャンクグループのすべてのデータスライスの量の比率に等しい。したがって、ストレージデバイスが破損したとき、再構築オーバーヘッドが小さいほど、破損したストレージデバイスに格納されたデータを復元するために必要な時間が短いことを示している。チャンクグループの定義は、以下で詳細に説明される。
本出願の実施形態が適用されるアーキテクチャ
図1および図2は、異なるアーキテクチャを有する2つのストレージシステムを示す。図1のストレージシステムは、ストレージノードと、少なくとも1つのクライアントとを含む。クライアントとストレージノードは、通信ネットワーク(例えば、EthernetまたはInfiniBand)を使用することによって接続される。ストレージノードには、ストレージコントローラおよび複数のストレージデバイスが設けられ、ストレージノードは、実際には、ストレージアレイ、例えば、Huawei(登録商標)Oceanstor(登録商標)18000シリーズおよびDorado(登録商標)V3シリーズであってもよい。図2は、分散ストレージシステムを示す。ストレージシステムは、少なくとも1つのクライアントと、複数のストレージノードとを含み、各ストレージノードは、実際には、サーバであってもよい。クライアントとストレージノードは、通信ネットワーク(例えば、EthernetまたはInfiniBand)を使用することによって接続される。ストレージシステムの少なくとも1つのストレージノードは、ストレージコントローラを含み、各ストレージノードは、ストレージデバイスを含み、すべてのストレージノードは、通信ネットワークを使用することによって互いに通信接続を確立する。図1および図2のストレージデバイスは、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)、または他のタイプのストレージディスクであり得る。
図1のストレージノードのストレージコントローラは、クライアントによってストレージコントローラが位置するストレージアレイに送出される書き込み対象データを処理する。図2の各ストレージコントローラは、クライアントによって送出された書き込み対象データを受信し、消去コードベースのエンコードおよび再構築を書き込み対象データに対して実施することができる。ストレージコントローラがエンコードを実施した後に取得されたスライスは、ストレージコントローラが位置するストレージノードのストレージデバイスに格納され得るだけでなく、分散ストレージを実装するために、通信ネットワークを使用することによって別のストレージノードのストレージデバイスに送出されてもよい。複数のストレージコントローラが分散ストレージシステムで同時に機能し得るため、複数のストレージコントローラの各ストレージコントローラは、ストレージシステムの1つのストレージノードグループを担当し、各ストレージノードグループは、少なくとも1つのストレージノードを含む。ストレージノードグループのストレージコントローラは、クライアントによって送出された書き込み対象データを受信し、書き込み対象データをエンコードし、取得されたデータスライスおよびパリティスライスをストレージノードグループのストレージノードに格納することを担当する。以下におけるストレージコントローラは、図1または図2の任意のストレージコントローラを指すことができ、ストレージコントローラは、消去コードベースのエンコードおよび再構築を実施するように構成される。
図3に示すように、ストレージシステムの作動プロセスにおいて、ストレージコントローラは、クライアントによって送出された書き込み対象データを継続的に受信する。事前設定された量の書き込み対象データを受信した後、ストレージコントローラは、事前設定された量の書き込み対象データをK個のエンコード対象データチャンクに分割する。各データチャンクは、2つのデータスライスに分割され、2*Mパリティスライスは、2*Kデータスライスおよび消去コードベースのエンコード方法に基づいて生成される。2*Mパリティスライスは、M個のパリティチャンクを形成する。K個のデータチャンクを使用することによって生成されるすべてのK個のデータチャンクとM個のパリティチャンクは、チャンクグループを形成する。各チャンクのサイズは、要件に基づいて設定することができ、例えば、サイズは、512バイト、4kバイト、8kバイト、または32kバイトである。一般に、KおよびMは、ユーザによって設定されたエンコード構成パラメータである。ユーザの異なる要件を満たすために、ストレージコントローラは、異なるKおよびM構成用の消去コードベースのエンコードおよび再構築方法を有する。
チャンクグループが生成された後、ストレージコントローラは、チャンクグループの各チャンクをストレージデバイスに格納する。各チャンクを対応するストレージデバイスのチャンクグループに格納した後、ストレージコントローラは、クライアントによって送出された書き込み対象データを使用することによって別のチャンクグループを形成し続け、前述の方式で別のチャンクグループを処理する。
各チャンクは、格納用にストレージデバイスで2つのスライスに分割される。図3では、データチャンクに対応するスライスは、データスライスと呼ばれ、パリティチャンクに対応するスライスは、パリティスライスと呼ばれる。各チャンクの2つのスライスは同じストレージデバイスに格納されるが、2つのスライスのストレージアドレス(物理ストレージアドレスまたは論理ストレージアドレス)は、不連続または不連続である場合がある。一般に、チャンクグループのスライスのサイズは、同じである。
いずれかのストレージデバイスが破損した場合、破損したストレージデバイス上のチャンクが属するチャンクグループの他のチャンクのデータが使用され、破損したストレージデバイス上のチャンクを復元する必要がある。復元プロセスでは、消去コードに基づく再構築方法を使用する必要がある。
各パリティスライスは、排他的論理和演算を複数のデータスライスに対して実施することによって取得される。排他的論理和演算をデータスライスに対して実施することによってパリティスライスを取得するプロセスは、データスライスのエンコードプロセスとも呼ばれる。パリティスライスを生成するプロセスでは、ストレージコントローラは、ストレージコントローラに事前設定されたパリティ行列を使用することによって、2*Mパリティスライスの各々を取得するためにエンコードされるデータスライスを決定する。
排他的論理和演算の特徴により、パリティスライスおよびパリティスライスを生成するために使用されるデータスライスは、合計L個のスライスを有すると想定され、1つの残りのスライスは、排他的論理和演算をL個のスライスのいずれかのL−1個のスライスに対して実施することによって取得することができる。したがって、いずれかのストレージデバイスが破損したとき、ストレージコントローラはまた、パリティ行列を使用することによって、格納されているスライスが破損したストレージデバイスに格納された各スライスを再構築するために使用され得るストレージデバイスを学習することができる。再構築プロセスでは、ストレージコントローラは、再構築に必要な各スライスをストレージデバイスからストレージコントローラに読み取る必要がある。このプロセスでは、データを読み取るための入力/出力(IO)要求が生成される。したがって、再構築プロセスでは、ストレージコントローラによって読み取る必要のあるスライスのサイズが小さいほど(すなわち、再構築オーバーヘッドが小さいほど)、破損したデータスライスを再構築する速度が速いことを示している。再構築プロセスでは、ストレージコントローラによって読み取る必要のあるスライスが少ないほど、ストレージコントローラによって処理する必要のあるIO要求が少なく、破損したデータスライスを再構築する速度が速いことを示している。加えて、再構築プロセスでストレージコントローラによって占有されるコンピューティングリソースが少ないほど、ストレージコントローラで作動される他のサービスへの影響が小さいことを示している。
以下は、1つのチャンクグループがK個のデータチャンク(データチャンクD1〜データチャンクDK)およびM個のパリティチャンク(パリティチャンクP1〜パリティチャンクPK)を含む例を使用することによって、本出願で使用されるパリティ行列を説明する。
パリティ行列は、ストレージコントローラに事前設定され、具体的には、ストレージコントローラのメモリまたはデータ処理チップに格納され得る。パリティ行列の設定は、少なくとも1つの設定ルールを満たす。詳細は、以下で説明される。図4に示すように、パリティ行列の行の量は、2*Mであり、パリティ行列の列の量は、2*(K+M)である。パリティ行列の各列は、1つのデータスライスまたは1つのパリティスライスに対応する。例として、図4が使用される。パリティ行列の最初の列は、データスライスD10に対応し、2番目の列は、データスライスD11に対応し、データスライスD10およびデータスライスD11は、データチャンクD1に属する。パリティ行列の(2j+1)番目の列は、データスライスDj0に対応し、(2j+2)番目の列は、データスライスDj1に対応する。データスライスDj0およびデータスライスDj1は、データチャンクDjに属し、jは、1よりも大きく、Kよりも小さい整数である。パリティ行列の(2*K+1)番目の列は、パリティスライスP10に対応し、(2*K+2)番目の列は、パリティスライスP11に対応し、パリティスライスP10およびパリティスライスP11は、パリティチャンクP1に属する。パリティ行列の(2K+2*h+1)番目の列は、パリティスライスPh0に対応し、(2K+2*h+2)番目の列は、パリティスライスPh1に対応する。パリティスライスPh0およびパリティスライスPh1は、パリティチャンクPhに属し、hは、1よりも大きく、Mよりも小さい整数である。
パリティ行列は、2*M*2*(K+M)要素を含む。パリティ行列の要素は、0、1、または有限体GF(αw)の要素である。パリティ行列の各行は、1つの排他的論理和式に対応する。パリティ行列の各行では、要素が0でない列に対応するデータスライス/パリティスライスは、同じ排他的論理和式に関与する。
パリティ行列を使用してエンコードすることによって取得されたチャンクグループでは、最大r個のチャンクが破損する可能性がある。rがMよりも大きいとき、破損したチャンクは、パリティ行列を使用することによって再構築することができない。パリティ行列にあり、任意のr個のチャンクに対応する2*r列は、2*M行と2*r列のサブ行列を形成し、サブ行列のランクは、2rである。
パリティ行列にあり、任意のチャンクに対応する2つの列は、2*M行と2列のサブ行列を形成する。サブ行列の任意の2つの偶数行によって形成された2*2行列、または任意の2つの奇数行によって形成された2*2行列には、少なくとも1つのフルランク2*2行列がある。2*M行と2列のサブ行列の任意の2つの偶数行によって形成された2*2行列の合計量は、C(M、2)であり、2*M行と2列のサブ行列の任意の2つの奇数行によって形成された2*2行列の合計量は、C(M、2)であり、cは、組み合わせ演算子(組み合わせ計算機)である。2*M行と2列のサブ行列の任意の2つの偶数行によって形成された2*2行列と、2*M行と2列のサブ行列の任意の2つの奇数行によって形成された2*2行列の合計量は、2*C(M、2)であり、2*C(M、2)2*2行列は、少なくとも1つのフルランク2*2行列を含む。
本出願で提供されるパリティ行列が満たす設定ルールは、前述の設定ルールのいずれか1つ、または前述の設定ルールのいずれか2つ以上の組み合わせを含んでもよい。
以下は、K=4およびM=3の場合を例として使用し、前述の設定ルールを満たすパリティ行列を説明する。4つのデータチャンクは、D1、D2、D3、およびD4として表され、3つのパリティチャンクは、P、Q、およびRとして表される。
図5に示すように、本出願で提供されるパリティ行列は、2*(K+M)列および2*M行を含む。パリティ行列の最初の列と2番目の列は、データチャンクD1の2つのデータスライスD10とD11にそれぞれ対応し、パリティ行列の3番目の列と4番目の列は、データチャンクD2の2つのデータスライスD20とD21にそれぞれ対応する。類推によって、パリティ行列の(2k−1)番目の列と2k番目の列は、データチャンクDkの2つのスライスDk0とDk1にそれぞれ対応し、kの値の範囲は、[1、K]である。同様に、パリティ行列の9番目の列と10番目の列は、パリティチャンクPの2つのパリティスライスP0とP1にそれぞれ対応し、パリティ行列の11番目の列と12番目の列は、パリティチャンクQの2つのパリティスライスQ0とQ1にそれぞれ対応する。類推によって、パリティ行列の(2*K+2*m−1)番目の列と(2*K+2*m)番目の列は、1つのパリティチャンクの2つのスライスに別々に対応し、mの値の範囲は、[1、M]である。
パリティ行列の各行は、1つの排他的論理和方程式に対応し、2*Mの排他的論理和式の各排他的論理和式は、1つのパリティスライスをエンコードするために使用される。例として、図4で提供されるパリティ行列が使用される。パリティ行列の6つの行は、パリティチャンクP、Q、およびRの6つのパリティスライスをエンコードするために別々に使用される。6つのパリティスライスは、次のとおりである:
Figure 2021002350
Figure 2021002350
Figure 2021002350
Figure 2021002350
Figure 2021002350
Figure 2021002350
例として、図5で提供されるパリティ行列が使用される。各パリティスライスは、1つの排他的論理和式にのみ関与する(各パリティスライスに対応する列の1つの要素のみが1である)。したがって、各パリティスライスは、パリティスライスが関与する排他的論理和式を使用することによってのみ取得することができる。エンコード段階では、データチャンクD1、D2、D3、およびD4を取得した後、ストレージコントローラは、方程式(1)〜(6)に従ってエンコードすることによって、パリティチャンクP、Q、およびRの6つのパリティスライスを取得する。次に、データチャンクとパリティチャンクは、異なるストレージデバイスに別々に格納される。
各データスライスは、複数の排他的論理和式に関与する。例えば、データスライスD10は、パリティ行列の最初の行、3番目の行、および5番目の行に対応する排他的論理和式に関与する。同様に、データスライスD11を例として使用すると、データスライスD11は、パリティ行列の2番目の行、4番目の行、5番目の行、および6番目の行に対応する排他的論理和式に関与する。データチャンクD1が破損しているとき、データスライスD10は、パリティ行列の最初の行、3番目の行、および5番目の行に対応する3つの排他的論理和式のいずれか1つを使用することによって復元することができ、データスライスD11は、パリティ行列の2番目の行、4番目の行、5番目の行、および6番目の行に対応する4つの排他的論理和式のいずれか1つを使用することによって復元される。
例えば、パリティ行列の最初の行および5番目の行に対応する排他的論理和式が使用され、データスライスD10およびデータスライスD11をそれぞれ復元する。データスライスD10、D20、D30、およびD40は2つの排他的論理和式で多重化されるため、再構築オーバーヘッドは、5/8=0.625である。再構築オーバーヘッドは小さく、破損したデータスライスを再構築する速度は速い。加えて、合計5つのデータスライスD10、D11、D20、D30、およびD40のみをストレージデバイスから読み取る必要があるだけなので、ストレージコントローラは、5つのIO要求のみを開始する必要があり、破損したデータスライスを再構築する速度は、より速い。加えて、再構築プロセスでストレージコントローラによって占有されるコンピューティングリソースが少ないほど、ストレージコントローラで作動される他のサービスへの影響が小さいことを示している。
以下は、図6を使用することによって、本出願で提供されるパリティ行列に基づいてストレージコントローラによって実施されるエンコード方法を説明する。
ステップ202:ストレージコントローラは、エンコード構成パラメータKおよびMを取得する。上述のように、KおよびMは、一般に、ユーザによって設定される。
ステップ204:KおよびMに基づいてパリティ行列を選択する。ストレージコントローラは、異なるエンコード構成パラメータに対応するパリティ行列を格納し、後続のエンコードプロセスのためにステップ202で取得されたKおよびMに基づいて対応するパリティ行列を選択する。
ステップ206:ストレージコントローラは、受信した書き込み対象データがK個のデータチャンクを形成するまで、クライアントによって送出された書き込み対象データを継続的に受信する。各データチャンクのサイズは、事前設定される。
ステップ208:ストレージコントローラは、各データチャンクを2つのデータスライスに分割し、すなわち、受信した書き込み対象データを2*Kデータスライスに分割する。
ステップ202/ステップ204の実施とステップ206/ステップ208の実施との間にシーケンスはなく、ステップ202/ステップ204およびステップ206/ステップ208は、任意のシーケンスで実施されてもよいことに留意されたい。あるいは、ステップ206/ステップ208を実施するとき、ステップ202/ステップ204が実施されてもよい。
ステップ210:2*Mパリティスライスを取得するために、ステップ204で選択されたパリティ行列に基づいて2*Kデータスライスをエンコードする。具体的なエンコードプロセスについては、前述の内容および図5の具体的な実施形態を参照されたい。ステップ204で選択されたパリティ行列は、2*M行を含み、各行に対応する排他的論理和式は、1つのパリティスライスを取得するために使用される。
ステップ212:取得された2*Kデータスライスおよび2*MパリティスライスをK+M個の異なるストレージデバイスに格納し、各スライスのストレージ情報を記録する。各ストレージデバイスは、同じデータチャンクに属する2つのデータスライスを格納するか、または同じパリティチャンクに属する2つのパリティスライスを格納する。一般に、異なるチャンクは、異なるストレージデバイスに格納される。各スライスのストレージ情報は、スライスが位置するストレージデバイスの識別子ID、ストレージアドレス、またはスライスへのアクセスに使用される他の情報を含む。
一定期間の後、ステップ202〜ステップ212が複数回実施された後、ストレージシステムは、複数のチャンクグループを格納し、ストレージコントローラは、各チャンクグループの各チャンクが位置するストレージデバイスのIDを格納する必要がある。
チャンクグループの場合、エンコード方法は、再構築方式に対応する。したがって、前述のエンコード方法を使用することによって構築されたチャンクグループの再構築オーバーヘッドは、破損したチャンクが続いて再構築されると小さくなる。加えて、各チャンクが2つのスライスにのみ分割されるため、各チャンクがエンコードのためにより多くのスライスに分割される従来技術と比較して、本出願で提供されるエンコード方法を使用することによって構築されたチャンクグループが破損したチャンクを続いて再構築するとき、ストレージコントローラは、より少ないIO要求を実行する必要がある。再構築プロセスは、ストレージコントローラのより少ないコンピューティングリソースを占有し、ストレージコントローラで作動される他のサービスは、及ぼされる影響が少ない。
以下は、図7を使用することによって、本出願で提供されるパリティ行列に基づいてストレージコントローラによって実施される再構築方法を説明する。
ステップ402:ストレージコントローラは、故障パラメータrを取得し、故障パラメータrは、破損したストレージデバイスの量である。各ストレージデバイスは1つのチャンクを1つのチャンクグループに格納するため、rはまた、破損したチャンクの量を表す。ストレージコントローラはさらに、エンコード構成パラメータKおよびMならびに破損したチャンクグループの各スライスのストレージ情報を取得する必要がある。
ステップ404:ストレージコントローラは、故障パラメータrがMよりも大きいかを決定する。エンコード構成パラメータKおよびMが使用されるとき、ストレージコントローラは、破損したチャンクの最大量がMであるときにチャンク再構築をサポートする。したがって、破損したチャンクの量がMよりも大きいとき、ストレージコントローラは、ステップ406を実施する。破損したチャンクの量がMよりも大きくないとき、ストレージコントローラは、ステップ408〜ステップ414を実施する。
ステップ406:ストレージコントローラは、破損したストレージデバイスに格納されたチャンクの再構築をあきらめる。
ステップ408:ストレージコントローラは、エンコード構成パラメータKおよびMに基づいて対応するパリティ行列を選択する。ストレージコントローラは、異なるエンコード構成パラメータに対応するパリティ行列を格納し、後続の再構築プロセスのためにステップ402で取得されたKおよびMに基づいて対応するパリティ行列を選択する。
ステップ410:ストレージコントローラは、選択されたパリティ行列に基づいて、読み取る必要のある破損していないデータスライス/パリティスライスを決定する。
破損していないチャンクを再構築するために必要とされる破損していないデータスライスおよび/またはパリティスライスは、選択されたパリティ行列に基づいて決定されてもよい。各パリティスライスは、1つの排他的論理和式にのみ関与する。したがって、破損したチャンクがパリティチャンクである場合、パリティスライスを再構築する方式は1つしかなく、データスライスだけがパリティスライスの再構築に関与する必要がある(エンコード手順の再実行と同様)。データスライスの再構築には、データスライスおよびパリティスライスの関与が必要である。各データスライスは複数の排他的論理和式に関与するため、破損したチャンクがデータチャンクである場合、複数のデータスライス再構築方式がある。加えて、複数のデータスライス再構築方式の再構築オーバーヘッドは、異なる場合がある。したがって、ストレージコントローラは、各データチャンクが破損したときに最適な再構築オーバーヘッドを用いて再構築方式を格納することができ、すなわち、ストレージコントローラは、破損したデータチャンクを再構築するために、パリティ行列の2つの行に対応し、各破損したデータチャンクによって使用される排他的論理和式を格納する。
ステップ412:ストレージコントローラは、決定された破損していないデータスライス/パリティスライスのストレージ情報に基づいてストレージデバイスから破損していないデータスライス/パリティスライスを読み取る。
ステップ414:ストレージコントローラは、選択されたパリティ行列、読み取られた破損していないデータスライス/パリティスライス、および決定されたパリティ行列に基づいて破損したチャンクを再構築する。ストレージコントローラは、再構築されたチャンクを別の破損していないストレージデバイスに格納し、再構築されたチャンクが位置する、チャンクグループ内の各チャンクが位置するストレージデバイスのIDを更新する。
前述の再構築方式では、再構築オーバーヘッドは、破損したチャンクが再構築されると小さくなる。加えて、各チャンクが2つのスライスにのみ分割されるため、各チャンクがより多くのスライスに分割される従来技術と比較して、再構築方法を使用することによって構築されたチャンクグループが破損したチャンクを続いて再構築するとき、ストレージコントローラは、より少ないIO要求を実行する必要があり、再構築プロセスは、ストレージコントローラのより少ないコンピューティングリソースを占有し、ストレージコントローラで作動される他のサービスは、及ぼされる影響が少ない。
図8は、ストレージコントローラ600を提供する。ストレージコントローラ600は、図1または図2に示すストレージシステムに適用されてもよい。ストレージコントローラ600は、プロセッサ604と、メモリ608と、通信インターフェース606とを含む。必要に応じて、ストレージコントローラ600は、バス602をさらに含む。プロセッサ604、メモリ608、および通信インターフェース606は、バス602を使用することによって互いに通信する。
プロセッサ604は、中央処理装置(CPU)であってもよい。メモリ608は、揮発性メモリ、例えば、ランダムアクセスメモリ(RAM)を含み得る。メモリ608は、不揮発性メモリ、例えば、読み取り専用メモリ(ROM)、フラッシュメモリ、HDD、またはSSDをさらに含んでもよい。
通信インターフェース606は、ネットワークインターフェースおよびストレージデバイス読み取り/書き込みインターフェースを含み、これらは、クライアントによって送出された書き込み対象データを取得し、エンコードによって取得された各スライスをストレージデバイスに書き込むようにそれぞれ構成される。ネットワークインターフェースおよびストレージデバイス読み取り/書き込みインターフェースはまた、1つのインターフェースを使用することによって実装することができる。
図8で提供されるストレージコントローラ600は、エンコードプロセス中である。したがって、メモリ608は、エンコードプログラムおよびK個のデータチャンクを格納する。ストレージコントローラ600が作動すると、プロセッサ604は、図6で説明したエンコード方法を実施してパリティチャンクを生成するために、メモリ608からエンコードプログラムおよびK個のデータチャンクを読み取り、通信インターフェース606を使用することによってチャンクグループのチャンクを異なるストレージデバイスに格納する。
図9で提供されるストレージコントローラと図8で提供されるストレージコントローラは、同じストレージコントローラである。しかし、図9で提供されるストレージコントローラ600は、再構築プロセス中である。ストレージコントローラ600が位置するストレージシステムのストレージデバイスが破損したとき、プロセッサ604は、図7で説明した再構築方法を実施して破損した記憶媒体に格納されたチャンクを復元するために、メモリ608から、破損したストレージデバイスを復元するために必要な再構築プログラムおよびチャンクを読み取る。前述のエンコードプログラムと再構築プログラムを組み合わせて、1つのプログラムにすることも可能である。
パリティ行列は、複数の方式でメモリ608に格納することができ、例えば、パリティ行列は、行列の形で格納することができ、または2*Mの排他的論理和式の形でメモリ608に格納することができる。
図10は、別のストレージコントローラ800を提供する。ストレージコントローラ800は、図1または図2に示すストレージシステムに適用されてもよい。ストレージコントローラ800は、プロセッサ804と、メモリ808と、データ処理チップ810と、通信インターフェース806とを含む。必要に応じて、ストレージコントローラ800は、バス802をさらに含む。プロセッサ804、メモリ808、および通信インターフェース806は、バス802を使用することによって互いに通信する。
プロセッサ804は、CPUであってもよい。メモリ808は、揮発性メモリを含み得る。メモリ808は、不揮発性メモリをさらに含んでもよい。
通信インターフェース806は、ネットワークインターフェースおよびストレージデバイス読み取り/書き込みインターフェースを含み、これらは、クライアントによって送出された書き込み対象データを取得し、エンコードによって取得された各スライスをストレージデバイスに書き込むようにそれぞれ構成される。ネットワークインターフェースおよびストレージデバイス読み取り/書き込みインターフェースはまた、1つのインターフェースを使用することによって実装することができる。
データ処理チップ810は、回路を使用することによって実装されてもよい。回路は、特定用途向け集積回路(ASIC)またはプログラマブル論理デバイス(PLD)であり得る。前述のPLDは、複雑なプログラマブル論理デバイス(CPLD)、フィールドプログラマブルゲートアレイ(FPGA)、ジェネリックアレイ論理(GAL)、またはそれらの任意の組み合わせであってもよい。
データ処理チップ810は、パリティ行列に基づいてデータスライスをエンコードしてパリティスライスを取得し、パリティ行列に基づいて破損したスライスを再構築し、エンコードによって取得されたスライスをメモリ808に格納し、すなわち、ステップ202、ステップ204、ステップ210およびステップ402のエンコード構成パラメータKおよびMを取得する部分、ステップ408、ならびにステップ414を実施するように構成される。プロセッサ804は、メモリ内のプログラムを読み取り別のステップを実施するように構成される。
図11に示すように、データ処理チップ810は、具体的には、サイト選択ユニット8102と、演算ユニット8104と、ストレージユニット8106と、読み取り/書き込みインターフェース8108とを含み得る。サイト選択ユニット8102、演算ユニット8104、およびストレージユニット8106は、実際には、1つの回路に統合されてもよい。
読み取り/書き込みインターフェース8108は、バス802に接続され、データ処理チップ810がエンコード方法を実施するシナリオでは、バス802を使用することによって、メモリ808に格納されたチャンクを取得し、チャンクをストレージユニット8106に格納し、バス802を使用することによって、エンコード後に取得されたチャンクをメモリ808に送出し、続いてエンコードによって次のチャンクを取得するように構成される。読み取り/書き込みインターフェース8108は、データ処理チップ810が再構築方法を実施するシナリオでは、バス802を使用することによって、再構築プロセスで必要なチャンクを取得し、チャンクをストレージユニット8106に格納し、再構築されたチャンクをメモリ808に送出するようにさらに構成される。
サイト選択ユニット8102の機能は、パリティ行列と同様である。サイト選択ユニット8102は、ストレージユニット8106にあり、排他的論理和演算を実施するプロセスで演算ユニット8104によって排他的論理和演算が実施されるべきスライスを示しており、それにより演算ユニット8104は、ストレージユニット8106から対応するスライスを取得し、排他的論理和演算を完了する。
演算ユニット8104は、サイト選択ユニット8102の命令に基づいてストレージユニット8106から、排他的論理和演算が排他的論理和演算のプロセスで実施される必要がある複数のスライスを取得し、排他的論理和演算が実施された後に取得されたスライスをストレージユニット8106に格納し、続いて次の排他的論理和演算を実施する。
図12に示すように、通信モジュール1002および処理モジュール1004を含む別のストレージコントローラ1000が提供される。通信モジュール1002は、クライアントおよびストレージデバイスと通信するように構成され、処理モジュール1004は、図6および図7で提供される方法を実施するように構成される。図8〜図10の通信インターフェースは、通信モジュール1002の実施態様である。図8および図9のプロセッサ604およびメモリ608は、処理モジュール1004の実施態様である。図9のプロセッサ804、メモリ808、およびデータ処理チップ810は、処理モジュール1004の別の実施態様である。
前述の実施形態では、各実施形態の説明は、それぞれの焦点を有する。一実施形態において詳細に説明されていない部分については、他の実施形態における関連する説明を参照されたい。
本出願において開示された内容と組み合わせて説明される方法は、プロセッサによってソフトウェア命令を実行する方式で実装され得る。ソフトウェア命令は、対応するソフトウェアモジュールを含み得る。ソフトウェアモジュールは、RAM、フラッシュメモリ、ROM、消去可能なプログラマブル読み取り専用メモリ(EPROM)、電気的に消去可能なプログラマブル読み取り専用メモリ(EEPROM)、HDD、SSD、光ディスク、または当技術分野で周知の任意の他の形態の記憶媒体に格納されてもよい。
当業者は、前述の1つまたは複数の例では、本出願で説明される機能は、ハードウェアまたはソフトウェアによって実装され得ることを認識するはずである。機能がソフトウェアによって実装されると、前述の機能は、コンピュータ可読媒体に格納され、またはコンピュータ可読媒体内の1つまたは複数の命令またはコードとして送信され得る。記憶媒体は、汎用または専用のコンピュータにアクセス可能な任意の利用可能な媒体とすることができる。
本出願の目的、技術的解決策、および利点は、前述の具体的な実施形態で詳細にさらに説明されている。前述の説明は、本出願の具体的な実施形態にすぎないが、本出願の保護範囲を限定することを意図するものではないことを理解されたい。本出願の技術的解決策に基づいて行われたあらゆる修正または改善は、本出願の保護範囲に含まれるものとする。
600 ストレージコントローラ
602 バス
604 プロセッサ
606 通信インターフェース
608 メモリ
800 ストレージコントローラ
802 バス
804 プロセッサ
806 通信インターフェース
808 メモリ
810 データ処理チップ
1000 ストレージコントローラ
1002 通信モジュール
1004 処理モジュール
8102 サイト選択ユニット
8104 演算ユニット
8106 ストレージユニット
8108 読み取り/書き込みインターフェース
各チャンクは、格納用にストレージデバイスで2つのスライスに分割される。図3では、データチャンクに対応するスライスは、データスライスと呼ばれ、パリティチャンクに対応するスライスは、パリティスライスと呼ばれる。各チャンクの2つのスライスは同じストレージデバイスに格納されるが、2つのスライスのストレージアドレス(物理ストレージアドレスまたは論理ストレージアドレス)は、不連続である場合がある。一般に、チャンクグループのスライスのサイズは、同じである。

Claims (14)

  1. 消去コードベースのデータ処理方法であって、
    ストレージコントローラによって、K個のデータチャンクを取得するステップであって、Kが正の整数である、ステップと、
    前記ストレージコントローラによって、2*Kデータスライスを取得するために、各データチャンクを2つのデータスライスに分割するステップと、
    前記ストレージコントローラによって、2*Mパリティスライスを取得するために、パリティ行列に基づいて前記2*Kデータスライスをエンコードするステップであって、前記2*MパリティスライスがM個のパリティチャンクを形成し、Mが正の整数である、ステップと、
    前記ストレージコントローラによって、前記K個のデータチャンクと前記M個のパリティチャンクを複数のストレージデバイスに格納するステップと
    を含み、
    前記パリティ行列は、2*M行と2*(K+M)列の要素を含み、要素の各列は、1つのデータスライスまたは1つのパリティスライスに対応し、要素の各行は、1つの排他的論理和式に対応し、要素の各行に対応する前記排他的論理和式が使用され、前記2*Kデータスライスのいくつかに基づいて1つのパリティスライスを取得する、
    データ処理方法。
  2. 前記パリティ行列は、前記ストレージコントローラに事前設定され、前記パリティ行列は、少なくとも1つの設定ルールを満たす、請求項1に記載のデータ処理方法。
  3. 前記少なくとも1つの設定ルールは、前記パリティ行列の要素が0、1、または有限体の要素であることを含む、請求項2に記載のデータ処理方法。
  4. 前記少なくとも1つの設定ルールは、前記パリティ行列にあり、任意のデータチャンクに含まれる2つのデータスライスまたは任意のパリティチャンクに含まれる2つのパリティスライスに対応する2つの列が、2*M行と2列の要素を含む最初のサブ行列を形成することを含み、前記最初のサブ行列の任意の2つの偶数行または任意の2つの奇数行によって形成された2*2行列の少なくとも1つは、フルランクである、請求項2または3に記載のデータ処理方法。
  5. 前記少なくとも1つの設定ルールは、前記パリティ行列にあり、任意のr個のチャンクに含まれる2*rスライスに対応する2*r列が、2*M行と2*r列の要素を含む2番目のサブ行列を形成することを含み、前記2番目のサブ行列のランクは、2rであり、rは、M以下の整数である、請求項2から4のいずれか一項に記載のデータ処理方法。
  6. 前記ストレージコントローラによって、前記K個のデータチャンクおよび前記M個のパリティチャンクのr個のチャンクが破損していると決定するステップと、
    前記ストレージコントローラによって、前記パリティ行列の要素の複数の行に対応する排他的論理和式に基づいて前記r個の破損したチャンクを再構築するステップと
    をさらに含む、請求項2から5のいずれか一項に記載のデータ処理方法。
  7. 通信モジュールと、処理モジュールとを備え、
    前記通信モジュールは、K個のデータチャンクを取得し、Kは、正の整数である、ように構成され、
    前記処理モジュールは、2*Kデータスライスを取得するために、各データチャンクを2つのデータスライスに分割し、2*Mパリティスライスを取得するために、パリティ行列に基づいて前記2*Kデータスライスをエンコードし、前記2*Mパリティスライスは、M個のパリティチャンクを形成し、Mは、正の整数である、ように構成され、前記パリティ行列は、2*M行と2*(K+M)列の要素を含み、要素の各列は、1つのデータスライスまたは1つのパリティスライスに対応し、要素の各行は、1つの排他的論理和式に対応し、要素の各行に対応する前記排他的論理和式が使用され、前記2*Kデータスライスのいくつかに基づいて1つのパリティスライスを取得し、
    前記通信モジュールは、前記K個のデータチャンクおよび前記M個のパリティチャンクを複数のストレージデバイスに格納するように構成される、
    ストレージコントローラ。
  8. 前記パリティ行列は、前記ストレージコントローラに事前設定され、前記パリティ行列は、少なくとも1つの設定ルールを満たす、請求項7に記載のストレージコントローラ。
  9. 前記少なくとも1つの設定ルールは、前記パリティ行列の要素が0、1、または有限体の要素であることを含む、請求項8に記載のストレージコントローラ。
  10. 前記少なくとも1つの設定ルールは、前記パリティ行列にあり、任意のデータチャンクに含まれる2つのデータスライスまたは任意のパリティチャンクに含まれる2つのパリティスライスに対応する2つの列が、2*M行と2列の要素を含む最初のサブ行列を形成することを含み、前記最初のサブ行列の任意の2つの偶数行または任意の2つの奇数行によって形成された2*2行列の少なくとも1つは、フルランクである、請求項8または9に記載のストレージコントローラ。
  11. 前記少なくとも1つの設定ルールは、前記パリティ行列にあり、任意のr個のチャンクに含まれる2*rスライスに対応する2*r列が、2*M行と2*r列の要素を含む2番目のサブ行列を形成することを含み、前記2番目のサブ行列のランクは、2rであり、rは、M以下の整数である、請求項8から10のいずれか一項に記載のストレージコントローラ。
  12. 前記処理モジュールは、前記K個のデータチャンクおよび前記M個のパリティチャンクのr個のチャンクが破損していると決定し、前記パリティ行列の要素の複数の行に対応する排他的論理和式に基づいて前記r個の破損したチャンクを再構築するようにさらに構成される、請求項8から11のいずれか一項に記載のストレージコントローラ。
  13. プロセッサと、メモリとを備え、前記プロセッサは、請求項1から6のいずれか一項に記載の方法を実施するために前記メモリ内のプログラムを実行するように構成される、ストレージコントローラ。
  14. 非一時的可読記憶媒体であって、前記非一時的可読記憶媒体に格納されたプログラムがストレージコントローラによって実行されると、前記ストレージコントローラは、請求項1から6のいずれか一項に記載の方法を実施する、非一時的可読記憶媒体。
JP2020108769A 2019-06-24 2020-06-24 消去コードベースのデータ処理方法および装置 Active JP7047018B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
CN201910551394 2019-06-24
CN201910551394.2 2019-06-24
CN201911128710.1A CN111090540B (zh) 2019-06-24 2019-11-18 基于纠删码的数据处理方法与装置
CN201911128710.1 2019-11-18

Publications (2)

Publication Number Publication Date
JP2021002350A true JP2021002350A (ja) 2021-01-07
JP7047018B2 JP7047018B2 (ja) 2022-04-04

Family

ID=70393168

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020108769A Active JP7047018B2 (ja) 2019-06-24 2020-06-24 消去コードベースのデータ処理方法および装置

Country Status (4)

Country Link
US (1) US11249846B2 (ja)
EP (1) EP3758238A1 (ja)
JP (1) JP7047018B2 (ja)
CN (1) CN111090540B (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11037330B2 (en) * 2017-04-08 2021-06-15 Intel Corporation Low rank matrix compression
CN113806133A (zh) * 2020-06-12 2021-12-17 华为技术有限公司 一种数据写入方法和装置
CN112052115B (zh) * 2020-09-28 2022-07-08 山东云海国创云计算装备产业创新中心有限公司 数据存储纠删方法、装置、设备及计算机可读存储介质
US11899941B2 (en) 2021-11-11 2024-02-13 Samsung Electronics Co., Ltd. Storage device and operating method thereof

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019076912A1 (en) * 2017-10-16 2019-04-25 Memoscale As SYSTEMATIC AND XOR-BASED CODING TECHNIQUE FOR DISTRIBUTED STORAGE SYSTEMS

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7093182B2 (en) * 1999-08-02 2006-08-15 Inostor Corporation Data redundancy methods and apparatus
US6993701B2 (en) 2001-12-28 2006-01-31 Network Appliance, Inc. Row-diagonal parity technique for enabling efficient recovery from double failures in a storage array
US7219289B2 (en) * 2005-03-15 2007-05-15 Tandberg Data Corporation Multiply redundant raid system and XOR-efficient method and apparatus for implementing the same
US7930611B2 (en) * 2007-03-09 2011-04-19 Microsoft Corporation Erasure-resilient codes having multiple protection groups
US9304857B2 (en) * 2011-12-12 2016-04-05 Cleversafe, Inc. Retrieving data from a distributed storage network
US9537609B2 (en) * 2012-08-02 2017-01-03 International Business Machines Corporation Storing a stream of data in a dispersed storage network
SG10201500905QA (en) * 2015-02-05 2016-09-29 Nanyang Polytechnic LDPC Codes For Storage System
US10078472B2 (en) * 2015-02-27 2018-09-18 International Business Machines Corporation Rebuilding encoded data slices in a dispersed storage network
CN104850468B (zh) * 2015-05-31 2018-04-27 上海交通大学 基于校验矩阵的纠删码解码方法
WO2017113276A1 (zh) * 2015-12-31 2017-07-06 华为技术有限公司 分布式存储系统中的数据重建的方法、装置和系统
CN110089035B (zh) * 2016-12-24 2021-01-29 华为技术有限公司 存储控制器、数据处理芯片及数据处理方法
US10289488B1 (en) * 2017-04-27 2019-05-14 EMC IP Holding Company LLC System and method for recovery of unrecoverable data with erasure coding and geo XOR
CN109213420A (zh) * 2017-06-29 2019-01-15 杭州海康威视数字技术股份有限公司 数据存储方法、装置及系统
US10944429B1 (en) * 2020-01-02 2021-03-09 Silicon Motion, Inc. Data accessing method using data protection with aid of parity check matrix having partial sequential information, and associated apparatus

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019076912A1 (en) * 2017-10-16 2019-04-25 Memoscale As SYSTEMATIC AND XOR-BASED CODING TECHNIQUE FOR DISTRIBUTED STORAGE SYSTEMS

Also Published As

Publication number Publication date
CN111090540A (zh) 2020-05-01
CN111090540B (zh) 2022-06-14
US11249846B2 (en) 2022-02-15
EP3758238A1 (en) 2020-12-30
US20200401480A1 (en) 2020-12-24
JP7047018B2 (ja) 2022-04-04

Similar Documents

Publication Publication Date Title
JP7047018B2 (ja) 消去コードベースのデータ処理方法および装置
CN113407122B (zh) Raid重建的方法和设备
US10783038B2 (en) Distributed generation of random data in a storage system
CN110089035B (zh) 存储控制器、数据处理芯片及数据处理方法
US10346056B2 (en) Declustered array of storage devices with chunk groups and support for multiple erasure schemes
US10210045B1 (en) Reducing concurrency bottlenecks while rebuilding a failed drive in a data storage system
US10146618B2 (en) Distributed data storage with reduced storage overhead using reduced-dependency erasure codes
Papailiopoulos et al. Simple regenerating codes: Network coding for cloud storage
US9081752B2 (en) Redundant disk encoding via erasure decoding
CN109643258B (zh) 使用高速率最小存储再生擦除代码的多节点修复
US9606866B2 (en) Method of, and apparatus for, improved data recovery in a storage system
CN110750382A (zh) 用于提高数据修复性能的最小存储再生码编码方法及系统
WO2017048373A1 (en) Co-derived data storage patterns for distributed storage systems
US10355711B2 (en) Data processing method and system based on quasi-cyclic LDPC
WO2021012164A1 (zh) 数据重构的方法、装置、计算机设备、存储介质及系统
WO2024108930A1 (zh) 数据恢复方法及相关设备
CN110431531B (zh) 存储控制器、数据处理芯片及数据处理方法
US9229811B2 (en) Folded codes for correction of latent media errors
JP2018536220A (ja) データ・ストレージ・システムにおける自律パリティ交換方法、プログラム、およびシステム
JP2017505498A (ja) データ記憶方法及びデータ記憶デバイス、記憶されているデータの復号方法及び復号デバイス、並びに対応するコンピュータプログラム
US20190020359A1 (en) Systematic coding technique for erasure correction
TWI794541B (zh) 儲存空間之自動組態之設備及方法
JP2004185256A (ja) Raidシステム
KR20230138384A (ko) 정보 비트를 인코딩하는 장치를 포함하는 스토리지 시스템 및 그에 대한 방법
Lu et al. On the implementation of Zigzag codes for distributed storage system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200804

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200807

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210826

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210906

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211206

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: 20220228

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220323

R150 Certificate of patent or registration of utility model

Ref document number: 7047018

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150