JP2017505498A - データ記憶方法及びデータ記憶デバイス、記憶されているデータの復号方法及び復号デバイス、並びに対応するコンピュータプログラム - Google Patents

データ記憶方法及びデータ記憶デバイス、記憶されているデータの復号方法及び復号デバイス、並びに対応するコンピュータプログラム Download PDF

Info

Publication number
JP2017505498A
JP2017505498A JP2016563260A JP2016563260A JP2017505498A JP 2017505498 A JP2017505498 A JP 2017505498A JP 2016563260 A JP2016563260 A JP 2016563260A JP 2016563260 A JP2016563260 A JP 2016563260A JP 2017505498 A JP2017505498 A JP 2017505498A
Authority
JP
Japan
Prior art keywords
data
variable
variables
storage
stored
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.)
Pending
Application number
JP2016563260A
Other languages
English (en)
Inventor
ジュール,アラン
Original Assignee
アンヴォル・テクノロジー
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 アンヴォル・テクノロジー filed Critical アンヴォル・テクノロジー
Publication of JP2017505498A publication Critical patent/JP2017505498A/ja
Pending legal-status Critical Current

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/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • 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
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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/11Error 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 using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1142Decoding using trapping sets

Abstract

本発明は、ある制約によって結び付けられた変数の集合を定める誤り訂正符号を用いたデータ記憶方法に関する。各変数はソースデータ及び冗長データの少なくとも一方に関連付けられる。本発明による方法は、前記符号の少なくとも1つのストッピングサイクルを構成する変数を見いだすステップ31と、ストッピングサイクルを構成する各変数に異なる記憶媒体が割り当てられるような前記変数の割当て方式を決定するステップ32と、前記割当て方式に従って、前記変数又は前記変数に関連付けられるデータを前記記憶媒体に分散させるステップ33とを含む。【選択図】図3

Description

本発明はデータ記憶の分野に属する。
より具体的には、本発明は、複数のストレージキャリア間でデータを巧みに分散させるために、誤り訂正符号を用いて、より具体的にはグラフ符号を用いて、データを記憶するための手法に関する。
特に本発明は、疎グラフ符号(sparse graph code)を用いる。
本発明は特に、個人データ、企業データ等の記憶に用いられる。
本明細書の以下の部分において、分散記憶を用いる集中管理ネットワーク(centralized networks with distributed storage、CNDS)の分野における既存の一組の問題及び課題を説明することを試みる。もちろん、本発明はこの特定の応用分野には限定されるものではなく、概ね同様であるか、又は類似した一組の問題及び課題に対処しなければならない任意の記憶手法を対象とするものである。
従来、CNDSネットワークは、マスターサーバと、スレーブサーバを有する一以上のハードディスクドライブ群と、クライアントとにより構成される。マスターサーバは、クライアントからファイルを受信し、ファイルを分けて、スレーブサーバに送ることを担当する。スレーブサーバは、ファイルを符号化し、生成されたバイトを自らの裁量において複数のハードディスクドライブに分けることを担当する。あるハードディスクドライブが故障した場合、そのハードディスクドライブに関連付けられたスレーブサーバが、前もって計算されたパリティ値から、消えたデータをリカバリすることを担当する。マスターサーバは、記憶されたデータのクライアントによる読出しの際に、関係するスレーブサーバに要求を送り、データを集め、そのデータをクライアントに送る。
図1に、4つのクライアント11〜14と、5つのハードディスクドライブD1〜D5の集まりと、マスタータスク及びスレーブタスクを担当する唯一のサーバ15とを有するCNDSネットワークの一例を示す。
記憶されたデータを、特にハードディスクドライブの故障又は障害(loss)から守るために、複製(異なるハードディスクドライブにファイルの複数のコピーを作る)が用いられなければならないか、又は、誤り訂正符号を用いてデータが符号化されなければならない。誤り訂正符号は、送信又は記憶の後に復号器が劣化を検出又は訂正できるようにするための符号である。このような誤り訂正符号は冗長性をもたらし、それにより、ハードディスクドライブの故障時に、消えたデータを再構築できるようにする。
図1の例に戻ると、第1の符号語の第1のソースデータ群(D1A)が、例えば、ディスクドライブD1上に記憶され、第1の符号語の第2のソースデータ群(D2A)がディスクドライブD2上に記憶され、第1の符号語の第3のソースデータ群(D3A)がディスクドライブD3上に記憶され、第1の符号語の第4のソースデータ群(D4A)がディスクドライブD4上に記憶され、第1の符号語の冗長データ群(PA)がディスクドライブD5上に記憶される。同じようにして、例えば、第2の符号語の第1のソースデータ群(D1B)が、例えば、ディスクドライブD1上に記憶され、第2の符号語の第2のソースデータ群(D2B)がディスクドライブD2上に記憶され、第2の符号語の第3のソースデータ群(D2C)がディスクドライブD3上に記憶され、第2の符号語の冗長データ群(PB)がディスクドライブD5上に記憶され、第2の符号語の第4のソースデータ群(D2D)がディスクドライブD4上に記憶される等である。
別の例では、N個のハードディスクドライブを有するネットワークを考える。そして、N−M個のハードディスクドライブがソースデータ(ユーザデータとも呼ばれる)を記憶し、M個のハードディスクドライブが冗長データ(パリティデータとも呼ばれる)を記憶する。誤り訂正符号がMDS符号である場合は、このシステムは、いかなるデータも失うことなく、M個の同時故障に耐えることができる。
ストレージネットワーク上でデータを割り当て、必要に応じて(符号化時に)冗長性も計算するためのプロトコルを組み合わせた、CNDSネットワーク上でデータを記憶するために従来使用されている主なアルゴリズムは、RAID(Redundant Array of Independent Disk drives)という用語によって規定される。情報技術において、RAIDという言葉は、故障の許容度、若しくはセキュリティ、若しくは全体性能を高めるために、又はこれらの全ての要素の組み合わせを高めるために、幾つかのハードディスクドライブ間でデータを分散させるために使用される技術を示す。
RAIDプロトコルは当初、小型で安価なものの、信頼性が低い幾つかのハードディスクドライブに基づいて、大容量、それゆえ高価なハードディスクドライブを構成するために提案された。
1つのネットワーク内で接続される複数のハードディスクドライブは、RAIDレベルとして知られる、異なるRAIDアルゴリズムを使用することができる。これらのレベルはそれぞれ、以下の要素に応じて、ハードディスクドライブのネットワークの使用モードを構成する。
・性能:再構築時間の長さ及びサポートされる同時故障数の大きさ
・記憶コスト:記憶のために利用できるバイト数と、ネットワーク内の全バイト数との比
・ハードディスクドライブへのアクセス:ネットワーク上で故障がないときの書込み時間及び読出し時間の長さ
したがって、異なるRAIDネットワークの構成は、幾つかのパラメータ間の妥協から生じる。幾つかのパラメータとは、ハードディスクドライブ故障に対する保護と、ネットワーク上でのデータの読出し、書込み、再構築の速度と、最後に記憶コストとである。この技術に関する主な制約は、低い記憶コスト及び低い複雑度で、ハードディスクドライブの幾つかの同時故障に対処するために使用することができるRAIDレベルが存在しないことである。
主な技術的障害は、記憶されたデータを保護するために使用される誤り訂正符号に起因する。
実際、データストレージネットワークについて、これまで使用されている符号は、MDS(maximum distance separable、最大距離分離)タイプの符号(又はMDS符号の組み合わせ)である。そのような符号は確定的(deterministic)である。したがって、各RAIDレベルについて、使用される符号はMDS符号である。
しかし、そのようなMDSタイプの誤り訂正符号は複雑であり、3つ以上の故障に対処するときに使用が難しい。誤り訂正符号を用いない方法より時間がかかるためである。さらに、このようなMDSタイプの誤り訂正符号の使用は、計算を行うために必要とされる高性能の機器に起因して、はるかに高いコストを生じさせる。
本発明は、データ記憶方法の形式で、従来技術のこれら全ての欠点を有しない新規な方法を提案するものである。本方法は、制約によって結び付けられる変数の集合を定める誤り訂正符号を実現するものである。ここで、各変数はソースデータ及び冗長データの少なくとも一方に関連付けられる。
本発明によれば、本方法は、
符号の少なくとも1つのストッピングセットを構成する変数を見いだすステップと、
ストッピングセットを構成する各変数に異なるストレージキャリアが割り当てられるように、変数を割り当てるための方式を決定するステップと、
前記割当て方式に従って、変数又は該変数に関連付けられるデータをストレージキャリアに分散させるステップと
を含む。
ストッピングセットを構成する変数(又はこれらの変数によって保持される値、データ)を異なるストレージキャリアに分散させることにより、少なくとも1つのストレージキャリアの障害又は故障が発生したとしても、反復復号器を用いてソースデータをリカバリすることができる。したがって、復号の複雑さが緩和される。
より具体的には、ストッピングセットを構成する変数を見いだすことにより、ソースデータをリカバリできるようにするために同時に消失してはならない変数を特定することができる。そのため、ストッピングセットを構成する変数を異なるストレージキャリアに分散させることによって、ストレージキャリアの故障時に、ストッピングセットを構成する全ての変数が同時に消失したとした場合に生じる可能性があった復号器の行き詰まりを防ぐ。
ストッピングセット(停止集合, stopping set)の概念は当業者によく知られており、特に、Richardson及びUrbankeによる「Modern Coding Theory」に記載されている。定義によれば、ストッピングセットは、タナーグラフの形式の表現において、該ストッピングセットを構成する変数に接続される全ての制約ノード(パリティノードとも呼ばれる)が、該ストッピングセットを構成する変数に少なくとも2回接続されるような、変数集合の部分集合である。セットのサイズ(サイクル)は、このように接続される制約ノード及び変数の数によって定められる。
また、誤り訂正符号を、タナーグラフ、パリティ連立方程式、又は生成行列若しくはパリティ検査行列を有する行列式の形により同等に表す方法は、当業者に知られているということに留意されたい。特に、タナーグラフ又はパリティ連立方程式の形による表現は、一般的である。変数(ソースデータ及び冗長データの少なくとも一方)が従わなければならない組み合わせの集合が提示されるからである。生成行列を有する行列式の形での表現は、変数の中から選択されたソースデータから冗長データを求めるために使用することができる。
特に、ソースデータ又は冗長データはビット又はシンボルとすることができ、変数によって保持される値に対応させることができるということに留意されたい。
したがって、本発明によるデータ記憶方法は、ソースデータを含む少なくとも1つのベクトルを符号化し、ソースデータに誤り訂正符号を適用する際に、ソースデータ及び冗長データの少なくとも一方を含む、記憶されることになる少なくとも1つのベクトルを提供するステップを含みうる。そして、分散させるステップにて、複数のストレージキャリアに記憶されることになる1以上のベクトルに対して、関連する変数の値を割り当てることができる。
特に、本発明による誤り訂正符号は、ストレージキャリア(内)の消失タイプの誤りを訂正できるように設計される。
本発明の1つの特定の特徴によれば、誤り訂正符号は、生成行列又はパリティ検査行列が疎行列であるような疎グラフタイプの符号である。
言い換えると、このような符号は、0を多く含む生成行列又はパリティ検査行列によって表すことができる。これは、例えば、LDPC(low density parity check、低密度パリティ検査)タイプの符号、又はLDPC符号から派生した符号である。
このようなグラフ符号は複雑度が低いため、データストレージにおいてこれまで使用されてきたMDS符号化手法よりも、データの符号化及び復号の複雑度が緩和される。
また、データを記憶するためにグラフ符号を使用することは自明ではないことに留意されたい。これらの符号は従来、確率的特性を有するため、むしろデータの再送が可能であるときに使用されるからである。これが、データ記憶に関する従来技術が主にMDS符号に関連する理由である。
本発明の別の特定の特徴によれば、本方法は、構造化行列(structured matrix)と呼ばれる、少なくとも1つの所定のパターンの繰返しから構成される生成行列又はパリティ検査行列を決定する、誤り訂正符号を構築するための予備ステップを含む。
行列のこのような巡回構造(cyclic structure)又は準巡回構造(擬巡回構造、擬似巡回構造、quasi-cyclic structure)により、短いサイクル、特に誤り訂正符号のストッピングセットを迅速に見いだすことができる。
特に、生成行列又はパリティ検査行列の形及びサイズの少なくとも一方を、利用可能なストレージキャリアの数と、許される変数消失又はストレージキャリアの故障の数との少なくとも一方を考慮して定めることができる。
したがって、生成行列又はパリティ検査行列の列の数は、ストレージキャリアの数、又はストレージキャリアの数の倍数に等しくなければならない。
本発明の1つの特定の特徴によれば、誤り訂正符号は組織符号(systematic code)である。
このため、符号化の結果として得られる、記憶されることになるベクトルは、ソースデータ及び冗長データの両方を保持する。したがって、記憶されるデータの一部(ソースデータに対応する部分)は、数学的演算を何ら実行することなく読み出すことができる。
この目的のために、恒等行列を有する生成行列を用いて符号が構築される。
第1の代替的実施形態によれば、分散させるステップでは、所与の変数に関連付けられるか又は割り当てられるソースデータ及び冗長データの少なくとも一方を、同じストレージキャリアに記憶する。
このようにして、記憶されることになる各ベクトルのソースデータ又は冗長データは、異なるストレージキャリア間に同じように分散され、それにより、復号時間が最適化される。
第2の代替的実施形態によれば、分散ステップでは、同じ変数に関連付けられるか又は割り当てられるソースデータ及び冗長データの少なくとも一方を、異なるストレージキャリアに記憶する。
このようにして、変数を分散させるステップは「ストライプ単位」で行われ、記憶されることになる第1のベクトルに対応する第1のストライプのための第1の割当て方式を決定し、その後、記憶されることになる第2のベクトルに対応する第2のストライプのための第2の割当て方式、記憶されることになる第3のベクトルに対応する第3のストライプのための第3の割当て方式などを決定する。有利なことに、本発明は、複数のストライプに対して、異なるストレージキャリア上で機能する同じ割当て方式を用いる。例えば、変数v0、v1、v2は第1のストライプの場合に第1のストレージキャリアに記憶され、第2のストライプの場合に第2のストレージキャリアに記憶され、第3のストライプの場合に第3のストレージキャリアに記憶される。
特に、ストレージキャリアは、ハードディスクドライブと、磁気テープと、フラッシュメモリと、その他のものとを含むグループに属する。
特に、このようなストレージキャリアはネットワークで結ぶことができる。
このようなネットワークは、動的かつ柔軟なものとすることができる。ネットワークの変更があった場合、誤り訂正符号を構築するステップと、割り当てる(ストッピングセットを見いだし、割当て方式を決定し、変数を別々のストレージキャリアに分散させる)ステップとを再び行うことができる。利用可能なストレージキャリアの数が減った場合は、符号を構築するステップと、ストッピングセットを見いだすステップと、割当て方式を決定するステップとをやり直すことなく、割当て行列から一定の列を削除することによって、割当てを適応させることもできる。
1つの特定の特徴によれば、全てのストレージキャリアが同じサイズを有する。
別の実施形態では、本発明は、制約によって結び付けられる変数の集合を定める誤り訂正符号を用いてデータを記憶するデバイスに関する。各変数は、ソースデータ及び冗長データの少なくとも一方に関連付けられる。
本発明によれば、本デバイスは、
符号の少なくとも1つのストッピングセットを構成する変数を見いだすモジュールと、
ストッピングセットを構成する各変数に別々のストレージキャリアが割り当てられるような、変数を割り当てるための方式を決定するモジュールと、
その割当ての方式に従って、変数又は変数に関連付けられるデータを複数のストレージキャリアに分散させるモジュールと
を有する。
このようなデータストレージデバイスは、上記データ記憶方法の実施に特に適している。例えば、本デバイスは、ユーザデータの符号化と、生成された符号化済みのデータを自らの裁量において複数のストレージキャリアに分散させることとを担当する、CNDSネットワークのサーバ(スレーブ又はマスター・スレーブ)に組み込まれる。
このようなデータストレージデバイスは、当然、本発明によるデータ記憶方法の異なる特徴を含んだものとすることができ、その特徴は組み合わせることができるか、又は単独で取り込むことができる。したがって、本データストレージデバイスの特徴及び利点は、データ記憶方法のものと同じである。そのため、それらの特徴及び利点は更に詳細に説明することはしない。
本発明はまた、複数のストレージキャリアに記憶されたデータを復号する方法に関する。このデータは、制約によって結び付けられる変数の集合を定める誤り訂正符号を用いるステップであって、各変数はソースデータ及び冗長データの少なくとも一方に関連付けられるものである、ステップと、符号の少なくとも1つのストッピングセットを構成する変数を見いだすステップと、ストッピングセットを構成する各変数に異なるストレージキャリアが割り当てられるような、変数の割当て方式を決定するステップと、既に説明したもの等の割当て方式に従って、変数又は変数に関連付けられるデータを複数のストレージキャリアに分散させるステップとによって、複数のストレージキャリアにあらかじめ記憶されている。
本発明によれば、この復号方法は、少なくとも1つのストレージキャリアが故障したときに、以下のステップの少なくとも一回の反復を含む復号ステップを実施する。
・符号を表す連立方程式において、消失変数と呼ばれる、故障した1以上のストレージキャリアにあらかじめ記憶されていたデータに関連付けられる単一の変数を示す少なくとも1つの方程式を探索するステップ
・1以上の方程式を解くことによって、消失した1以上の変数に関連付けられるデータを再構築し、少なくとも1つの再構築されたデータを提供するステップ
・少なくとも1つの再構築されたデータを考慮して、連立方程式を更新するステップ
したがって、本発明によれば、データストレージの分野において適用するための、反復的な復号を実現できるようになる。このような復号は、本分野において従来から使用されてきた復号手法よりも複雑度を緩和することができる。
特に、このような復号方法は、本明細書において上記で説明した記憶方法に従って記憶されたデータを復号することに適している。したがって、記憶されたデータを復号するための本方法の特徴及び利点は、データを記憶するための方法と同じである。
特に、分散させるステップにて、所与の変数に関連付けられるか、割り当てられるソースデータ又は冗長データを同じストレージキャリアに記憶する場合は、復号方法においては、記憶されている第1のデータ集合を復号するステップにて行われる連立方程式内の方程式を解く順序を記憶する。少なくとも1つの、記憶された第2のデータ集合を復号するステップにおいては、本復号方法は、この求解順序に従って連立方程式内の方程式を解く。
したがって、データを復号する際に、時間に関して著しい利益が得られる。
別の実施形態では、本発明は、複数のストレージキャリアに記憶されているデータを復号するためのデバイスに関する。このデータは、制約によって結び付けられる変数の集合を定める誤り訂正符号を用いて、データを記憶するためのデバイスによって複数のストレージキャリアにあらかじめ記憶されている。各変数はソースデータ及び冗長データの少なくとも一方に関連付けられる。そのデバイスは、前記符号の少なくとも1つのストッピングセットを構成する変数を見いだすモジュールと、ストッピングセットを構成する各変数に別々のストレージキャリアが割り当てられるような、変数を割り当てるための方式を決定するモジュールと、本明細書において上記で規定されたもの等の割当て方式に従って、変数又は変数に関連付けられるデータを複数のストレージキャリアに分散させるためのモジュールとを有する。
本発明によれば、復号デバイスは復号モジュールを有する。復号モジュールは以下を有する。
・符号を表す連立方程式において、消失変数と呼ばれる、故障した1以上のストレージキャリアにあらかじめ記憶されているデータに関連付けられる単一の変数を有する少なくとも1つの方程式を探索する探索モジュール
・1以上の方程式を解くことによって、消失した1以上の変数に関連付けられるデータを再構築し、少なくとも1つの再構築されたデータを提供する再構築モジュール
・少なくとも1つの再構築されたデータを考慮して、連立方程式を更新するモジュール
探索モジュールと再構築モジュールと更新モジュールとは、少なくとも1つのストレージキャリアが故障したときに、少なくとも一度反復する形で、少なくとも一度起動される。
記憶されたデータを復号するためのこのようなデバイスは、本明細書において上記で説明した、記憶されたデータを復号するための方法の実施に特に適している。例えば、そのデバイスは、記憶されたデータを読み出し、消失したデータを再構築することを担当するCNDSネットワーク内のサーバ(スレーブ又はマスター・スレーブサーバ)に組み込まれる。
記憶されたデータを復号するためのそのようなデバイスは、当然、本発明による記憶されたデータを復号するための方法の異なる特徴を含むことができ、それらの特徴は組み合わせることができるか、又は単独で取り込むことができる。したがって、記憶されたデータを復号するためのこのデバイスの特徴及び利点は、記憶されたデータを復号するための方法と同じである。それゆえ、それらの特徴及び利点は更に詳細には説明されない。
本発明はまた、1以上のコンピュータプログラムに関する。このコンピュータプログラムは、この1以上のプログラムがコンピュータにより実行されるときに、本明細書において上記で記載されたデータ記憶方法及び記憶されたデータを復号するための方法の少なくとも一方の各ステップを実行するための命令を有する。
本発明による方法は、種々の方法、特に有線の形式又はソフトウェアの形式で実施することができる。
本発明の他の特徴及び特性は、特定の実施形態及び添付の図面に関する以下の説明から更に明らかになる。
図1は、CNDSネットワークの一例を示す図である。図2は、タナーグラフの概念を想起させる図である。図3は、本発明の少なくとも1つの実施形態による、データを記憶するための方法によって実施される主なステップを示す図である。 図4A及び図4Bは、ストッピングセットを構成する変数を異なるストレージキャリアに分散させる基本原理を示す図である。図7は、2つの変形形態による、記憶動作の最後において得られる、10個のハードディスクドライブ上に記憶されることになる3つのベクトルのデータの分散を示す図である。 図5A及び図5Bは、ストッピングセットを構成する変数を10個のハードディスクドライブに分散させる一例を示す図である。図6は、記憶動作の最後において得られる、10個のハードディスクドライブに記憶されることになるベクトルのデータの分散を示す図である。 図8は、2つの変形形態による、記憶動作の最後において得られる、10個のハードディスクドライブに記憶されることになる3つのベクトルのデータの分散を示す図である。図9は、8個のハードディスクドライブ上の割当て行列の別の例を提示する図である。 図10は、本発明の少なくとも1つの実施形態による、記憶されたデータを復号するための方法によって実施される主なステップを示す図である。図11は、本発明の1つの特定の実施形態による、データストレージの手法を実施するストレージデバイスの簡略化された構造を示す図である。図12は、本発明の1つの特定の実施形態による、記憶されたデータを復号するためのデバイスの簡略化された構造を示す図である。
[1 一般原理]
本発明の一般原理は、データストレージの用途において、特定のタイプの誤り訂正符号、すなわちグラフ符号、特に「疎」タイプのグラフ符号の使用に基づく。提案される方法は、グラフ符号の確定的挙動を得るために、特定の誤り訂正符号及びデータ割当てを関連付けるアルゴリズムによるものである。これにより、データストレージシステムのために低い複雑度の符号を使用できるようになる。
符号の確率的特性に起因して、データ記憶への適用ではなく、データ再送信が可能な適用に際して用いることのできるグラフ符号に関する本手法は、当業者にとって自明なものではないことに留意されたい。本発明に従って使用される符号の特定の構造は、この符号に関連付けられる変数の巧みな分散と組み合わせて、グラフ符号の確定的挙動を得ることを可能にする。したがって、本発明によれば、データを記憶するための符号化及び復号(反復的)の複雑度が低いグラフ符号を使用することができる。
特に、提案されるデータストレージモデルは、可変符号語サイズを有するブロック消失通信路(block erasure channel, BLEC)によってシミュレートすることができる。
「d_max」という表記は、最大のネットワーク保護、すなわち、ネットワークが対応することのできる消失ストレージキャリアの最大数を表す。このとき、消失モデルは以下の通りである。
・確率P1を有するストレージキャリアのロス
・確率P2<P1を有する2つのストレージキャリアのロス
・...
・確率Pd_max<...<P2<P1を有するd_max個のストレージキャリアのロス
・確率Pd_max+1=0を有するd_max+1個のストレージキャリアのロス
全てのストレージキャリアが独立していると考えられる場合、P2=(P1)...、Pd_max=(P1)d_maxである。この場合、モデルは、簡略化され、BEC(binary erasure channel, 2元消失通信路)に相当する。
提案されるデータストレージモデルは、P1>P2>...>Pd_maxを有する特定のBLEC通信路に対応する。これは、あるデータキャリアの消失の確率が、ネットワークの残り(すなわち、全てのストレージキャリアの)の状態に依存すると見なされることを意味する。
さらに、Pd_max+Δ=0である。ただし、ΔはΔ>0であるような整数である。これは、d_max個よりも多くのストレージキャリアに記憶されるデータが同時に消失する可能性がないということを意味する。
データ記憶にあたり、再送は可能ではないことにも留意されたい。そのため、サイズがd_maxである全ての故障に対する保護を確保する必要がある。さらに、ストレージコストの最小化にあたり、再構築が確保されなければならない。すなわち、冗長シンボルの数がd_maxに向かう傾向がなければならない。
したがって、ストッピングセットを構成する変数(又はこれらの変数によって保持される値、データ)を複数のストレージキャリアに分散させることによって、d_max個のストレージキャリアに障害又は故障が起きたとしても、反復復号器を用いてソースデータをリカバリすることができる。したがって、復号が保証される。同時に、反復復号の複雑度が低いという恩恵が受けられる。
[2 グラフ符号に関する想起]
「疎」グラフ符号は、種々のファミリの誤り訂正符号を組み合わせたものである。これらの符号のうちの第1の種類は、LDPCと呼ばれ、Robert Gallagerによって導入された。これらの符号の名称は、例えばMDS符号の場合とは異なり、使用される生成行列(又はパリティ検査行列)が多くの0を含み、必要となる演算の数が少ないためにパリティビットの計算の複雑度が低下するということに由来する。「グラフ符号(graph code)」という用語は、これらの符号のためにタナーが提案したグラフの形式、一般的に二部グラフの形式の表現に由来する。この表現は、LDPC符号から派生した種類に拡張されており、グラフ符号という用語は、今日、符号化及び復号の少なくとも一方の複雑度が低いこれらの数多くの符号をカバーするものである。
一例として、図2に、グラフの形で表現された誤り訂正符号を示す。グラフの左側にある円は、変数v1〜v5(ソースデータタイプ又は冗長データタイプとすることができる)に対応し、右側にある四角形は制約c1〜c3に対応する。
既に述べたように、このような符号は、連立方程式によって、又は生成行列若しくはパリティ検査行列によって同等に表すことができる。
したがって、図2に示す符号は、以下の連立方程式
Figure 2017505498
の形式、又は以下のパリティ検査行列
Figure 2017505498
の形式で表すこともできる。ただし、パリティ検査行列の列は、複数の変数v1〜v5を表し、パリティ検査行列の行は、変数v1〜v5が従わなければならない複数の制約c1〜c3を表す。
LDPC符号及びそれから派生した種類は、シャノン限界に達するか又は近づくことができる一方で、同時に、反復復号器、例えば、確率伝搬法(belief propagation)復号器タイプの使用により、符号化及び復号の低複雑度に適合する。
このような複雑度の低減は大きな欠点を有する。それは、グラフ符号が反復復号器を用いるMDS符号ではないということである。このことは、データ記憶の場合に、ネットワーク内のX個の故障したハードディスクドライブをサポートするためにY個の冗長ディスクドライブが必要となることを意味する。ただし、Y>Xである。
本発明は、データストレージシステムにおいてグラフ符号のMDS演算を得ながら、同時に反復復号器を維持するために、構造化された誤り訂正符号、データ割当ての使用を組み合わせた新規のアルゴリズムを提供するものである。
[3 データ記憶]
以下、図3を参照しながら、本発明によるデータ記憶方法により行われる主なステップを説明する。
この方法は、ある制約によって結び付けられ、それゆえグラフによって表すことのできる変数の集合を定める誤り訂正符号を実現することができる。特に、このようなグラフ符号は疎タイプである。
この方法は、必要に応じて、例えばストレージアルゴリズムが開始されるときに、符号を構築するための予備ステップ30を実施することができる。
第1のステップ31において、符号の少なくとも1つのストッピングセット(SS)を構成する変数が見いだされる。
第2のステップ32において、ストッピングセットを構成する各変数に別々のストレージキャリアを割り当てるための変数割当て方式が決定される。
第3のステップ33において、割当て方式に従って、変数(又はこれら変数に関連付けられるデータ)を複数のストレージキャリアに分散させる。そのため、ストッピングセットを構成する各変数(又はそれぞれの関連するデータ)は、別々のストレージキャリアに分散される。特に、ソースデータを符号化するステップは、分散ステップの前に行うことができる。このような符号化ステップにより、少なくとも1つのソースデータベクトルから、記憶されることになる符号化済みデータの少なくとも1つのベクトルの構築が可能となる。それゆえ、その割当て方式により、変数に関連する符号化済みデータを記憶することができる。
既に述べたように、グラフ符号は、反復復号器が使用される場合、非MDS符号である。その主な理由は、これらのグラフ符号内に、短いサイクルに対応するストッピングセットが存在するためである。短いサイクルの問題は、起こり得ると考えられる唯一の誤りがデータの一部の消失である場合のデータ記憶との関連において、連立方程式によって表すことができる。あるサイクルの全ての要素が消失した場合、2以上の未知数を有する方程式の集まりが得られ、これにより復号を完了することができなくなる。
したがって、本発明によれば、短いサイクル、より具体的にはストッピングセットを構成する複数の変数を別々のストレージキャリアに分散させることが求められる。
したがって、本発明は、サイクルが容易に特定可能な、高度に構造化された符号(一般的に、このタイプの符号は多数のサイクルを有し、高性能な符号とであるとは見なされない)を使用し、ストッピングセットの全ての変数が同時に消失することのないように変数を巧みに割り当てることを提案する。
変数の概念は、符号の構成そのもののレベルにおいて設計されることを思い起こすことができる。したがって、誤り訂正符号は、変数が従わなければならない組み合わせの集合を定める。これらの変数は、記憶されることになるベクトルとも呼ばれる、符号語のソースデータ及び冗長データに対応する別々の値をとることができる。
特に、N個のハードディスクドライブを有するデータストレージネットワークを対象とし、全ユーザデータをK個のディスクドライブに分散させることができる場合、符号を構築するための構築ステップ30は、n=αN、k=αKというパラメータを有し、s(H)>2(N−K)である、構造化された符号を構築する。ただし、αは整数であり、s(H)は、パリティ検査行列Hのストッピング距離すなわちストッピングセットの最小サイズである。s(H)のサイズを有するストッピングセットは、最小ストッピングセットと呼ばれる。
条件s(H)>2(N−K)は、ストッピングセットを構成する変数に関連付けられるデータを、N−K個よりも多くのディスクドライブに分散させることを保証する。構造化された符号の使用は、ストッピングセットを構成する変数を見いだすステップの実施を容易にする。
以下、10個のハードディスクドライブの集まりにデータを記憶し、2つのハードディスクドライブの故障をサポートする場合の本発明の実施態様の一例を説明する。
既に述べたように、選択される符号は、サイクルの迅速な決定を可能にするものでなければならない。この目的のために、準巡回タイプの構造が使用される。この構造は、全く同一の行列構造を無限に拡張することを可能にするものであることを思い起こすことができる。したがって、(約100個の変数のオーダーの)所与の小さな構造でサイクルを決定することができる場合には、この構造を拡張することによって、同じサイクルが定期的に見つけられることになる。その際、反復復号が成し遂げられるのを妨げるストッピングセットを見いだすことができる。
例えば、本発明は、データを非常に迅速に符号化することができるLDGM符号を使用する。この目的のために、誤り訂正符号を構築するステップの際に、10行及び50列を有するパリティ検査行列が構築される。これは、ハードディスクドライブのセクタごとに5バイトを記憶できることを意味する。
このようなパリティ検査行列Hは、以下のように、Id10×10として表される、10×10のサイズを有する恒等行列と、列ごとに4つのパターン(11,101,1001,10001)の繰返しとによって構成される。
Figure 2017505498
ただし、
Figure 2017505498
である。
パリティ検査行列Hの列は、誤り訂正符号の変数v0〜v49を表し、パリティ検査行列の行は、変数v0〜v49が従わなければならない制約c0〜c9を表す。
例えば、以下のような式を定義することができる。
Figure 2017505498
ただし、演算子「+」は、「排他的論理和」演算子であり、XOR演算子とも呼ばれる。
対応する生成行列Gは、50行及び40列を有する。
Figure 2017505498
ただし、Pは、冗長データを計算するために使用される生成行列のパリティである。
したがって、U=(u0,u1,u2,...,u39)のようなソースデータを有するデータUのベクトルを考える場合、R=(r0,r1,r2,...,r49)のような、ソースデータ及び冗長データを含む、記憶されることになるデータのベクトルRは、以下のようにして得られる。
Figure 2017505498
ただし、r0〜r39はソースデータに対応し、r40〜r49は冗長データに対応する。
この例では、パリティ検査行列H及び生成行列Gはいずれも、行列Pを含むことに留意されたい。これは、データの符号化及び復号のために同じ行列を使用するLDGM符号の特性である。
このようにして誤り訂正符号が構築されると、この符号のストッピングセットを、Gerd Richterによる「Finding small stopping sets in the Tanner graphs of LDPC codes」、M. Hirotomo他による「A probabilistic algorithm for finding the minimum-size stopping sets of LDPC codes」、又はOrlitsky他による「Stopping set distribution of LDPC code ensembles」に記載のアルゴリズムを用いることによって特定することができる。
特に、パリティ検査行列Hは高度に構造化されるため、短いサイクル、特にストッピングセットを容易に見いだすことができる。
したがって、サイズが6のストッピングセットを構成する変数の集合、サイズが8のストッピングセットを構成する変数の集合等が特定される。そして、ストッピングセットの各変数を、別々のハードディスクドライブに分散させる。
図4A及び図4Bに、ストッピングセットを構成する変数を、ストッピングセットの全ての変数が同時に消えることが起こり得ない程度に多くのディスクドライブに分散させるアイデアのシンプルな説明を示す。
この例では、斜線ノードはストッピングセットを表す。サイクルを構成するノードの数(すなわち、変数ノードの数及び制約ノードの数)によって定められるサイクルのサイズは6に等しい。ストッピングセットを構成する変数A、C、Eが同時に消失した場合、復号器は、2つの未知数を有する3つの方程式を含む系を解かなければならないことになり、これらの未知数を求めることはできない。2つのディスクドライブのロスに対する保護が求められていることを考える場合には、このストッピングセットを構成する3つの変数A、C、Eは、消失するという事態が起きないようにするために、3つの別々のディスクドライブD1、D2、D3に分散されることになる。
パリティ検査行列Hが、
Figure 2017505498
によって定義される上記の例に戻ると、複数の変数v0〜v49を表すためにパリティ検査行列の列を利用し、変数が満たさなければならない複数の制約c0〜c9を表すためにパリティ検査行列の行を利用する場合、変数v10、v11及びv20と、変数v10、v21及びv30と、変数v11、v12及びv21と、変数v11、v22及びv31と、変数v12、v13及びv22と、変数v12、v23及びv32等を含む、サイズが6のストッピングセットが特定される。
より具体的には、パリティ検査行列Hはサイズが4のサイクルを有しないことがわかる。また、パリティ検査行列H内の同じパターンに関連付けられる2つの変数(次数1の変数v0〜v9の場合の「1」、次数2の変数v10〜v19の場合の「11」、次数2の変数v20〜v29の場合の「101」、次数2の変数v30〜v39の場合の「1001」及び次数2の変数v40〜v49の場合の「10001」)は一般に、(3つの変数によって構成される)サイズが6のサイクルの一部を構成することに留意されたい。そのため、同じパターンに関連付けられる2つの変数を同じキャリアに記憶しないことにする。さらに、同じストレージキャリアに割り当てられた全ての変数が全ての行において2回以上関与しない場合には、上記で述べた点に従うことによって、2つのストレージキャリアの消失時に、サイズが6のサイクルになることがないということがわかる。
そして、以下の規則に従うことによって、割当て方式を反復的に構築することができる。
例えば、第1のディスクドライブD1の場合、以下の通りである。
a) 第1の次数1の変数、すなわち変数v0が取り込まれる。
b) 上記で選択された変数と同じ方程式において0を有する、パターン「11」による第1の次数2の変数、すなわち変数v11が取り込まれる。
c) 「フリーな(又は自由)(free)」方程式において非0を有する、パターン「101」による第1の次数2の変数、すなわち変数v23が取り込まれる。
d) 「フリーな」方程式において非0を有する、パターン「1001」による第1の次数2の変数、すなわち変数v34が取り込まれる。
e) パターン「10001」による第1の次数2の変数の選択に関する問題が確認される。既に定めた規則に従わないためである。そのため、dに関して行われた選択、すなわち、変数v34は除かれる。
f) 「フリーな」方程式において非0を有する、パターン「10001」による第1の次数2の変数、すなわち変数v44が取り込まれる。
g) 「フリーな」方程式において非0を有する、パターン「1001」による第1の次数2の変数、すなわち、変数v36が取り込まれる。
この方法は、別の変数に対してこのようにして継続され、その後、同じ原理が他のディスクドライブで用いられる。
例えば、Gerd Richterによる上記文献「Finding small stopping sets in the Tanner graphs of LDPC codes」において提案されているような、既知のアルゴリズムを用いて、短いサイクルを決定することもできる。
ストッピングセットが特定されると、各ストッピングセットの変数が別々のディスクドライブに分散される。
図5A及び図5Bは、本発明による、ディスクドライブごとに5バイトを用いて機能する、これらの変数を10個のディスクドライブD1〜D10間に分散させる一例を示す2つの同等の割当て方式を提示するものである。より具体的には、図5Aは、全10個のディスクドライブ間での変数の分散の結果を示す。そして、図5Bは、この結果が得られるような割当て行列を示す。例えば、変数v0、v11、v23、v44及びv36(又はこれらの変数によって保持される値)はディスクドライブD1に割り当てられ、変数v2、v13、v25、v46及びv38(又はこれらの変数によって保持される値)はディスクドライブD2に割り当てられ、変数v4、v15、v27、v48及びv30(又はこれらの変数によって保持される値)はディスクドライブD3に割り当てられ、変数v6、v17、v29、v40及びv32(又はこれらの変数によって保持される値)はディスクドライブD4に割り当てられ、変数v8、v19、v21、v42及びv34(又はこれらの変数によって保持される値)はディスクドライブD5に割り当てられ、変数v1、v12、v24、v45及びv37(又はこれらの変数によって保持される値)はディスクドライブD6に割り当てられ、変数v3、v14、v26、v47及びv39(又はこれらの変数によって保持される値)はディスクドライブD7に割り当てられ、変数v5、v16、v28、v49及びv31(又はこれらの変数によって保持される値)はディスクドライブD8に割り当てられ、変数v7、v18、v20、v41及びv33(又はこれらの変数によって保持される値)はディスクドライブD9に割り当てられ、変数v9、v10、v22、v43及びv35(又はこれらの変数によって保持される値)はディスクドライブD10に割り当てられる。ディスクドライブ上の割当ての順序は重要でないことに留意されたい。言い換えると、変数v0、v11、v23、v44及びv36は、ディスクドライブD1にではなく、ディスクドライブD2に同じように割り当てることもできる。
言い換えると、本発明に従って提案される割当てを用いて、各ディスクドライブが9個の異なる方程式にのみ関与する変数の集合を記憶するものとなるように変数を分散させる。これは、同じディスクドライブにある変数の集合が、パリティ検査行列のある一つの行に関与しないということを意味する。
既に述べたように、パリティ検査行列は、高度に構造化されており、数多くの閉じた短いサイクルを有する。したがって、割当てにより、ストッピングセットに関与する変数が3つ以上のディスクドライブに記憶されるものとなるように、変数を分散させることができる。例えば、変数v26、v42、v48と、変数v14、v22、v32とは、これらの変数を記憶しているディスクドライブの故障時に、反復復号を妨げる可能性がある2つのサイクルを構成する。それゆえ、本発明によれば、これらの変数は、3つの異なるディスクドライブに分散される(1つ目のストッピングセットの場合はD7、D5及びD3、2つ目のストッピングセットの場合はD7、D10及びD4)。本システムは2個の障害をサポートするように構築されるため、これらのストッピングセットを構成する3つの変数の同時消失は起こり得ないものと考えられる。
それゆえ、この割当ては、サイズが2である(そして当然、サイズが1である)消失のたびにデータの再構築を保証する。
以下、本発明の少なくとも1つの実施形態による、データを記憶するための方法を適用するデータストレージの一例を示す。
既に述べたように、生成行列Gは、パリティ検査行列Hから得ることができる。この生成行列Gにより、ソースデータベクトルUから、記憶されることになるデータのベクトルRを得ることができる。
例えば、本発明に従って構築される符号は組織的である。それゆえ、ソースデータベクトルUの値は、記憶されることになるデータのベクトルRにおいて同じように見いだされる。それゆえ、ベクトルRはソースデータ及び冗長データを含む。
例えば、以下のシンボルを有するソースデータベクトルU1を考える。
Figure 2017505498
このソースデータベクトルU1に生成行列Gを適用することにより、すなわち、ソースデータベクトルU1に誤り訂正符号を適用することで、以下のシンボルを有する、記憶されることになるデータのベクトルR1が得られる。
Figure 2017505498
これらの値は、例えば、以下に提案するように、既に定めた変数v0〜v49に適用することができる。
Figure 2017505498
それゆえ、記憶されることになるデータのベクトルR1のシンボルは、変数v1〜v49の場合に提案された割当て方式に従って、10個のハードディスクドライブ上に記憶することができる。
図6に、記憶処理の結果を示す。
後続のソースデータベクトルについては、これまでの動作を繰り返すことができる。例えば、
Figure 2017505498
であるようなソースデータベクトルU2に生成行列Gを適用することによって、すなわち、ソースデータベクトルU2に誤り訂正符号を適用することによって、以下のシンボルを持つ、記憶されることになるデータのベクトルR2が得られる。
Figure 2017505498
Figure 2017505498
であるような、ソースデータベクトルU3に生成行列Gを適用することによって、以下のシンボルを持つ、記憶されることになるデータのベクトルR3が得られる。
Figure 2017505498
これらの値は、既に定められた変数v0〜v49に適用することができる。
例えば、上記で定められた変数v0〜v49は、連続して以下の値をとることができる(各セルにつき、3つの数はそれぞれ、記憶されることになるベクトルR1のシンボルと、記憶されることになるベクトルR2のシンボルと、記憶されることになるベクトルR3のシンボルとに対応する)。
Figure 2017505498
図7に示す第1の変形形態によれば、分散させるステップでは、所与の変数に割り当てられたソースデータ又は冗長データが同じストレージキャリアに記憶される。したがって、変数v0に割り当てられた値223、36及び80は、ディスクドライブD1に記憶される。
図8に示す第2の変形形態によれば、分散させるステップでは、所与の変数に割り当てられたソースデータ又は冗長データが別々のストレージキャリアに記憶される。
したがって、変数v0に割り当てられた値223、36及び80はそれぞれ、ディスクドライブD1、ディスクドライブD2及びディスクドライブD3に記憶される。
この目的のために、ディスクドライブをストライプに細分することができ、各ストライプが、記憶されることになるベクトルに関連付けられるものとする。記憶されることになる第1のベクトルR1は、本明細書において上記で説明されたように記憶される。記憶されることになる第2のベクトルR2は、記憶されることになる第1のベクトルR1から1ディスクドライブだけシフトして、本明細書において上記で説明されたように記憶される。記憶されることになる第3のベクトルR3は、記憶されることになる第2のベクトルR2から1ディスクドライブだけシフトして、本明細書において上記で説明されたように記憶される。
それゆえ、変数を分散させるステップは、「ストライプ単位」で実施され、第1のストライプのための第1の割当て方式が決定され、その後、第2のストライプのための第2の割当て方式が決定され、第3のストライプのための第3の割当て方式が決定されるなどである。図8に示した例によれば、1ハードディスクドライブだけシフトしながら同じ割当て方式が使用される。
このようにして、冗長(パリティ)データは、RAIDアルゴリズムのレベル5(「パリティストライピング」)において提案されるように別々のディスクドライブに分散される。
単に例示であるが、図9に、2つのハードディスクドライブの故障をサポートする、変数を8個のディスクドライブD1〜D8に分散させる別の例を示す。
この方式すなわち割当て行列は、下三角LDPC行列に対応し、図5Bに示した割当て行列の一定の列を削除することによって得られる。
この例によれば、符号化及び復号の平均的な複雑度は、1バイトあたり6.2回のXOR演算になる。
[4 データの復号]
以下、図10を参照して、本発明によるデータ復号方法によって実施される主なステップを示す。これは、上記で説明したデータ記憶方法の一実施形態に従って記憶されたデータを復号できるようにするものである。
本発明によれば、この復号方法は、1以上のストレージキャリアが消失したとしても、ソースデータをリカバリすることを可能にする。
この目的のために、この種類の復号方法は、少なくとも1つのストレージキャリアが故障したときに、以下のステップの少なくとも一回の反復を含む復号ステップ100を実施する。
・符号を表す連立方程式において、消失変数と呼ばれる、故障した1以上のストレージキャリアにあらかじめ記憶されているデータ(ソース及び冗長の少なくとも一方)に関連付けられている単一の変数を有する少なくとも1つの方程式を探索するステップ101。本ステップにより特に、容易に解くことができる、連立方程式における単一の未知数を有する式を特定することが可能となる。
・1以上の方程式を解くことにより、消失した1以上の変数に関連付けられるデータを再構築するステップ102。少なくとも1つの再構築データが得られる。
・少なくとも1つの再構築されたデータを考慮して連立方程式を更新するステップ103。本ステップにより特に、ステップ102において再構築されたデータに関連付けられる1以上の変数が関与する方程式を更新することができる。
これらの探索するステップ101と、再構築するステップ102と、連立方程式を更新するステップ103とは、全ての変数が決定されるまで実施される。特に、更新するステップは、データが再構築されるときにはいつでも実施することができる。
復号するステップ100は、記憶された各ベクトルRを復号するために、すなわち、ストライプ単位で実施される。
より具体的には、2つのハードディスクドライブの故障をサポートする、図7に示したような10個のハードディスクドライブの集まりに記憶されたデータを復号するための本発明の実施態様の一例を示す。
ディスクドライブD1及びD2が故障したとする。したがって、ディスクドライブD3〜D10のみが、ソースデータ(ユーザデータ)を再構築するために利用できる。
上記で説明した復号ステップが第1のストライプに適用される。
まず、符号を表す連立方程式において、第1の反復にて、消失変数と呼ばれる、故障した1以上のストレージキャリアに前もって記憶されていたデータに関連付けられる単一の変数を有する1以上の方程式の探索が行われる。本ステップにより特に、容易に解くことができる、連立方程式における単一の未知数を有する式を特定することができる。
パリティ検査行列の第1行に対応する第1の方程式、すなわち、
Figure 2017505498
は、2つの未知数を含む。ディスクドライブD1及びD2に記憶されていた変数v0及びv46に関連付けられるデータが消失したからである。
パリティ検査行列の第2行に対応する第2の方程式、すなわち、
Figure 2017505498
は、2つの未知数を含む。ディスクドライブD1及びD2に記憶されていた変数v11及びv38に関連付けられるデータが消失したからである。
これは以下の方程式の場合にも同じく当てはまる。
Figure 2017505498
しかし、第8の方程式
Figure 2017505498
は、未知数を1つだけ含み、そのデータは変数v25に関連付けられている。
したがって、その値は、第8の方程式を解くことによって求めることができる。
Figure 2017505498
第9の方程式、すなわち、
Figure 2017505498
は2つの未知数を含む。
これに対し、第10の方程式
Figure 2017505498
は未知数を1つだけを含み、そのデータは変数v36に関連付けられている。
したがって、第10の方程式を解くことによって、その値を求めることができる。
Figure 2017505498
そして、再構築された変数v25及びv36の値を考慮して、連立方程式を更新することができる。このステップにより特に、変数v25及びv36が関与する方程式を更新することができる。
その後、符号を表す連立方程式において、第2の反復にて、単一の消失変数を有する1以上の方程式が探索される。
第1の方程式は依然として2つの未知数を含む。これは、第2、第3、第4、第5及び第9の方程式にも当てはまる。
これに対し、第6の方程式は単一の未知数を含み、そのデータは変数v23に関連付けられている。
したがって、第6の方程式を解くことによって、その値を求めることができる。
Figure 2017505498
同じようにして、第7の方程式は未知数を1つだけを含み、そのデータは変数v46に関連付けられている。第7の方程式を解くことによって、v46=74が得られる。
その後、再構築された変数v23及びv46の値を考慮して、連立方程式を更新することができる。
同様の手順によって、第3の反復にて、v0(v0=223)、v13(v13=56)、v44(v44=47)及びv38(v38=237)の値を求めることができる。その後、第4の反復にて、変数v11(v11=120)及びv2(v2=60)の値を求めることができる。
このようにして連立方程式が解かれる。このことは、2つのハードディスクドライブが消失したとしても、第1の記憶されたベクトルに対応する第1のストライプを復号して、ソースデータを得ることができるということを意味する。
上記で示したように、復号ステップ100は、ストライプごとに実施することができる。
図7に示した第1の変形形態に基づいて、所与の変数に割り当てられたソースデータ又は冗長データを同じストレージキャリアに記憶すべく、データの記憶時に行われる分散ステップを考慮する場合、復号方法は、第1のストライプを復号するステップ時に実施された連立方程式の方程式求解順序を記憶することができる。
このようにして、第2のストライプ及び第3のストライプを復号するステップの際に、復号方法は、方程式の最適な求解順序がわかり、復号プロセスについて時間的に大きな利益が得られる。
より具体的には、図7に示した例では、記憶されることになる第2のベクトルR2の値が、その方程式内の同じ位置に対応する、記憶されることになる第1のベクトルR1の値と同じディスクドライブに配置されるように、割当てが行われる。それゆえ、ここでも、パリティ検査行列H内に同じ未知数を有し、それゆえ、解かれることになる同じ連立方程式を有する。
第1のストライプの場合に連立方程式が解かれた順序がわかっているため、第2のストライプについての連立方程式を解くために、この同じ方程式求解順序が適用される。
したがって、第8の方程式(v25=210)を解くことから開始し、その後、第10の方程式(v36=96)、その後、第6の方程式(v23=243)、その後、第7の方程式(v46=178)、その後、第1の方程式(v0=36)、その後、第4の方程式(v13=245)、その後、第5の方程式(v44=37)、その後、第9の方程式(v38=9)、その後、第2の方程式(v11=46)、そして最後に、第3の方程式(v2=222)を解く。方程式が解かれたときはいつでも、再構築されたデータにより連立方程式が更新され、それにより、各方程式につき未知数が1つとなるようにすることができる。
同じようにして、第3のストライプの連立方程式を解くために、同じ方程式求解順序が適用される。
このようにして、連立方程式において1つの未知数を有する方程式を探索するための、復号の複雑度を著しく増大させるステップの必要性を取り除くことができる。
このようにして、復号時間が最適化される。生成行列又はパリティ検査のサイズが大きいほど、この時間的な利益も大きくなることに留意されたい。
[4 代替の実施形態]
上記において、LDGMタイプの誤り訂正符号を用いて、データの記憶、及び記憶されたデータの復号のための実施態様の一例を説明した。
もちろん、本発明は、このタイプの誤り訂正符号には限定されず、任意の疎タイプのグラフ符号(すなわち、生成行列及びパリティ検査行列の少なくとも一方が疎である符号)を用いることができる。
例えば、階段型準巡回LDPC非バイナリタイプの誤り訂正符号を使用することができる。その基礎を構築するものが、C. Yoon他による「A hardware efficient LDPC encoding scheme for exploiting decoder structure and resources」(VTC Spring’07, 2007, pp. 2445-2449)と、「Arbitrary bit generation and correction technique for encoding GC-LDPC codes with dual-diagonal parity structure」(WCNC'07, 2007, pp. 662-666)とにおいて特に記述されている。
この例によれば、データを12個のハードディスクドライブに記憶し、3個の消失から保護するための符号を構築することができる。符号を構築するステップは、T.J. Richardson及びR.L. Urbankeによる「Efficient encoding of Low-Density Parity-Check Codes」(IEEE Transactions on Information Theory, Vol. 47, N°2, February 2001)という文献において提案されているパリティ検査行列Hの変換アルゴリズムにより低コストで符号化できるようにする階段構造に従うことと、サイズが6のサイクルを用いることなく、相対的に小さなサイズの基本行列を構築することとを提案する。その際、準巡回性が、行列のサイズを拡張することを容易にする。ディスクドライブあたり512バイトのセクタサイズ、及び1つのセクタのストライプサイズを考える場合、得られる符号のサイズは、N=ディスクドライブ数×1つのストライプのサイズ=12×512=6144である。それゆえ、解くべき連立方程式における方程式数は、M=3×512=1536である。シミュレーション結果により、特に復号時間に関する利益が大きいことが示された。データの符号化、記憶のためにストライプあたり平均0.170ms、第1のストライプの復号のために780ms、その後、後続のストライプの場合は平均0.060msであることが示された。さらに、3個のディスクドライブが消失する全ての場合において、誤りを生じることなく訂正された。
[5 ストレージデバイス及び復号デバイスの簡略化された構造]
最後に、図11及び図12のそれぞれに、本発明の一実施形態による、データストレージデバイスの簡略化された構造と、記憶されたデータを復号するためのデバイスの簡略化された構造とを示す。
図11に示すように、本発明の少なくとも1つの実施形態によるデータを記憶するためのデバイスは、バッファメモリを含むメモリ111と、例えば、マイクロプロセッサμPを備え、本発明の少なくとも1つの実施形態によるデータ記憶方法を実施するコンピュータプログラム113によって駆動される処理ユニット112とを有する。
まず、コンピュータプログラム113のコード命令が、例えばRAMにロードされ、処理ユニット112のプロセッサによって実行される。処理ユニット112は、少なくとも1つのソースデータベクトルを入力する。処理ユニット112のマイクロプロセッサは、ソースデータの1以上のベクトルを符号化し、こうして得られた、記憶されることになる1以上のベクトルのシンボルを複数のストレージキャリアに分散させるために、コンピュータプログラム113の命令に従って、上記で説明した少なくとも1つの実施形態によるデータ記憶方法のステップを実施する。この目的のために、データストレージデバイスは、バッファメモリ111に加えて、符号の少なくとも1つのストッピングセットを構成する変数を見いだすためのモジュール114と、上記変数を割り当てるための割当て方式であって、ストッピングセットを構成する各変数に異なるストレージキャリアを割り当てる割当て方式を決定するモジュール115と、その割当て方式に従って、変数又は変数に関連付けられるデータを複数のストレージキャリアに分散させるためのモジュール116とを有する。
これらのモジュールは、処理ユニット112内のマイクロプロセッサによって制御される。
図12に示すように、本発明の少なくとも1つの実施形態によるデータを復号するためのデバイスは、バッファメモリを含むメモリ121と、例えば、マイクロプロセッサμPを備え、本発明の少なくとも1つの実施形態による復号方法を実施するコンピュータプログラム123によって駆動される処理ユニット122とを有する。
まず、コンピュータプログラム123のコード命令は、例えばRAMにロードされ、その後、処理ユニット122のプロセッサによって実行される。処理ユニット122は、ストレージキャリアに記憶された利用可能なデータの集合を有するが、ストレージキャリアのうちの少なくとも1つが故障している。処理ユニット122のマイクロプロセッサは、記憶されているデータからソースデータをリカバリするために、コンピュータプログラム123の命令に従って上記で説明した復号方法のステップを実施する。この目的のために、ストレージデバイスは、バッファメモリ121に加えて、復号モジュールを有する。この復号モジュールは、符号を表す連立方程式において、消失変数と呼ばれる、故障した1以上のストレージキャリアに前もって記憶されていたデータに関連する単一の変数を有する少なくとも1つの方程式を探索する探索モジュール124と、1以上の方程式を解くことにより、消失した1以上の変数を再構築するためのモジュール125であって、少なくとも1つの再構築されたデータを提供するモジュールと、再構築されたデータを考慮して連立方程式を更新するモジュール126とを有する。これらのモジュールは、少なくとも1つのストレージキャリアが故障したときに、少なくとも一度、起動される。これらのモジュールは、処理ユニット122のマイクロプロセッサによって制御される。

Claims (12)

  1. ある制約によって結び付けられた変数の集合を定める誤り訂正符号を用いたデータ記憶方法であって、各変数はソースデータ及び冗長データの少なくとも一方に関連付けられ、
    前記符号の少なくとも1つのストッピングセットを構成する変数を見いだすステップ(31)と、
    ストッピングセットを構成する各変数に異なるストレージキャリアが割り当てられるような、前記変数を割り当てるための割当て方式を決定するステップ(32)と、
    前記割当て方式に従って、前記変数又は前記変数に関連付けられるデータを複数の前記ストレージキャリアに分散させるステップ(33)と
    を含むデータ記憶方法。
  2. 前記誤り訂正符号が疎グラフ符号であり、前記誤り訂正符号の生成行列又はパリティ検査行列が疎行列である、請求項1に記載のデータ記憶方法。
  3. 前記誤り訂正符号が組織的である、請求項1又は2に記載のデータ記憶方法。
  4. 構造化行列と呼ばれる、少なくとも1つの所定のパターンの繰返しから構成される生成行列又はパリティ検査行列を決定する、前記誤り訂正符号を構築するための予備ステップ(30)を含む請求項1〜3のいずれか一項に記載のデータ記憶方法。
  5. 前記分散させるステップ(33)は、所与の変数に関連付けられるデータを同じストレージキャリアに記憶するものである、請求項1〜4のいずれか一項に記載のデータ記憶方法。
  6. 前記分散させるステップ(33)は、同じ変数に関連付けられるデータを異なるストレージキャリアに記憶するものである、請求項1〜4のいずれか一項に記載のデータ記憶方法。
  7. 前記ストレージキャリアは、
    ハードディスクドライブと、
    磁気テープと、
    フラッシュメモリと
    を含むグループに属するものである、請求項1〜6のいずれか一項に記載のデータ記憶方法。
  8. ある制約によって結び付けられた変数の集合を定める誤り訂正符号を用いるデータ記憶デバイスであって、各変数はソースデータ及び冗長データの少なくとも一方に関連付けられ、
    前記符号の少なくとも1つのストッピングセットを構成する変数を見いだすモジュールと、
    ストッピングセットを構成する各変数に異なるストレージキャリアが割り当てられるような、前記変数を割り当てるための割当て方式を決定するモジュールと、
    前記割当て方式に従って、前記変数又は前記変数に関連付けられるデータを複数の前記ストレージキャリアに分散させるモジュールと
    を備えたデータ記憶デバイス。
  9. 複数のストレージキャリアに記憶されているデータの復号方法であって、
    前記データは、
    ある制約によって結び付けられた変数の集合を定める誤り訂正符号であって、各変数はソースデータ及び冗長データの少なくとも一方に関連付けられる、誤り訂正符号と、
    前記符号の少なくとも1つのストッピングセットを構成する変数を見いだすステップと、
    ストッピングセットを構成する各変数に異なるストレージキャリアが割り当てられるような、前記変数を割り当てるための割当て方式を決定するステップと、
    前記割当て方式に従って、前記変数又は前記変数に関連付けられるデータを複数の前記ストレージキャリアに分散させるステップと
    により、複数のストレージキャリアにあらかじめ記憶されており、
    少なくとも1つの前記ストレージキャリアが故障したときに、
    前記符号を表す連立方程式において、消失変数と呼ばれる、故障した前記少なくとも1つのストレージキャリアにあらかじめ記憶されていたデータに関連付けられた単一の変数を有する少なくとも1つの方程式を探索するステップ(101)と、
    1以上の前記方程式を解くことにより、消失した1以上の変数に関連付けられたデータを再構築し、少なくとも1つの再構築されたデータを得るステップ(102)と、
    前記少なくとも1つの再構築されたデータを考慮して前記連立方程式を更新するステップ(103)と
    の少なくとも一回の反復を有する復号ステップ(100)を含むデータの復号方法。
  10. 前記分散させるステップにおいて、所与の変数に割り当てられたソースデータ又は冗長データが同じストレージキャリアに記憶された場合に、前記復号方法において、記憶された第1のデータ集合についての前記復号ステップの際に行われる前記連立方程式内の方程式の求解の順序が記憶され、
    少なくとも1つの、記憶された第2のデータ集合についての前記復号ステップの際に、前記復号方法において、前記求解の順序に従って前記連立方程式内の方程式が解かれる、請求項9に記載のデータの復号方法。
  11. 複数のストレージキャリアに記憶されているデータの復号デバイスであって、
    前記データは、ある制約によって結び付けられた変数の集合を定める誤り訂正符号を用いるデータ記憶デバイスにより前記複数のストレージキャリアにあらかじめ記憶されており、各変数はソースデータ及び冗長データの少なくとも一方に関連付けられ、
    前記データ記憶デバイスは、
    前記符号の少なくとも1つのストッピングセットを構成する変数を見いだすモジュールと、
    ストッピングセットを構成する各変数に異なるストレージキャリアが割り当てられるような、前記変数を割り当てるための割当て方式を決定するモジュールと、
    前記割当て方式に従って、前記変数又は前記変数に関連付けられるデータを前記複数のストレージキャリアに分散させるモジュールと
    を備え、
    前記復号デバイスは、
    前記符号を表す連立方程式において、消失変数と呼ばれる、故障した少なくとも1つの前記ストレージキャリアにあらかじめ記憶されていたデータに関連付けられた単一の変数を有する少なくとも1つの方程式を探索する探索モジュール(124)と、
    1以上の前記方程式を解くことにより、消失した1以上の前記変数に関連付けられたデータを再構築し、少なくとも1つの再構築されたデータを提供する再構築モジュール(125)と、
    少なくとも1つの再構築されたデータを考慮して前記連立方程式を更新する更新モジュール(126)と
    を備えた復号モジュールを有するものであり、
    前記探索モジュールと前記再構築モジュールと前記更新モジュールとは、前記少なくとも1つのストレージキャリアが故障したときに少なくとも一回動かされるものである、復号デバイス。
  12. 請求項1〜7のいずれか一項に記載のデータ記憶方法の各ステップか、請求項9又は10に記載の記憶されているデータの復号方法の各ステップをコンピュータに実行させる命令を有するコンピュータプログラム。
JP2016563260A 2014-01-14 2015-01-13 データ記憶方法及びデータ記憶デバイス、記憶されているデータの復号方法及び復号デバイス、並びに対応するコンピュータプログラム Pending JP2017505498A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR1450267 2014-01-14
FR1450267A FR3016453B1 (fr) 2014-01-14 2014-01-14 Procede et dispositif de stockage de donnees, procede et dispositif de decodage de donnees stockees, et programme d’ordinateur correspondants.
PCT/EP2015/050518 WO2015107052A2 (fr) 2014-01-14 2015-01-13 Procédé et dispositif de stockage de données, procédé et dispositif de décodage de données stockées, et programme d'ordinateur correspondants

Publications (1)

Publication Number Publication Date
JP2017505498A true JP2017505498A (ja) 2017-02-16

Family

ID=51167986

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016563260A Pending JP2017505498A (ja) 2014-01-14 2015-01-13 データ記憶方法及びデータ記憶デバイス、記憶されているデータの復号方法及び復号デバイス、並びに対応するコンピュータプログラム

Country Status (5)

Country Link
US (1) US20160335155A1 (ja)
EP (1) EP3095196A2 (ja)
JP (1) JP2017505498A (ja)
FR (1) FR3016453B1 (ja)
WO (1) WO2015107052A2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10146618B2 (en) * 2016-01-04 2018-12-04 Western Digital Technologies, Inc. Distributed data storage with reduced storage overhead using reduced-dependency erasure codes
CN110389858B (zh) * 2018-04-20 2023-06-09 伊姆西Ip控股有限责任公司 存储设备的故障恢复方法和设备

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6877128B2 (en) * 2001-12-14 2005-04-05 Storage Technology Corporation Weighted error/erasure correction in a multi-track storage medium
US8448016B2 (en) * 2009-07-31 2013-05-21 Cleversafe, Inc. Computing core application access utilizing dispersed storage
US8930794B2 (en) * 2012-05-30 2015-01-06 Lsi Corporation Error injection for LDPC retry validation

Also Published As

Publication number Publication date
WO2015107052A3 (fr) 2015-09-11
EP3095196A2 (fr) 2016-11-23
FR3016453A1 (fr) 2015-07-17
US20160335155A1 (en) 2016-11-17
WO2015107052A2 (fr) 2015-07-23
FR3016453B1 (fr) 2017-04-21

Similar Documents

Publication Publication Date Title
US10146618B2 (en) Distributed data storage with reduced storage overhead using reduced-dependency erasure codes
JP5976960B2 (ja) 高並列性、低エラーフロア、および簡単な符号化原理を有するリフトされたldpc符号のための設計
US8595606B1 (en) Extended row diagonal parity with optimal decoding procedure
Kamath et al. Codes with local regeneration and erasure correction
US9081752B2 (en) Redundant disk encoding via erasure decoding
Tamo et al. Zigzag codes: MDS array codes with optimal rebuilding
JP4168055B2 (ja) 低密度パリティ検査符号の生成方法及び装置
ES2400239T3 (es) Descodificación de códigos de reacción en cadena mediante la inactivación de símbolos recuperados
CN109643258B (zh) 使用高速率最小存储再生擦除代码的多节点修复
Cadambe et al. Permutation code: Optimal exact-repair of a single failed node in MDS code based distributed storage systems
US8645799B2 (en) Storage codes for data recovery
Cadambe et al. Optimal repair of MDS codes in distributed storage via subspace interference alignment
JP2019536341A (ja) Ldpcコードを符号化および復号化するための方法および装置
Kamath et al. Codes with local regeneration
JP2007166425A (ja) 符号器および復号器
CN1889367A (zh) 构造稀疏生成矩阵的方法及低密度分组校验码的编码方法
JP7047018B2 (ja) 消去コードベースのデータ処理方法および装置
US20170179979A1 (en) Systems and Methods for Minimum Storage Regeneration Erasure Code Construction Using r-Ary Trees
WO2020029418A1 (zh) 一种修复二进制码生成矩阵构造方法及修复方法
JP2017505498A (ja) データ記憶方法及びデータ記憶デバイス、記憶されているデータの復号方法及び復号デバイス、並びに対応するコンピュータプログラム
Hou et al. A class of binary MDS array codes with asymptotically weak-optimal repair
WO2020029423A1 (zh) 一种修复二进制阵列码校验矩阵的构造方法及修复方法
CN110780813A (zh) 一种基于二元域上子空间码的分布式存储系统
Silberstein et al. Optimal fractional repetition codes
JP6396849B2 (ja) 生成行列構成装置及び生成行列構成方法