JP6396849B2 - 生成行列構成装置及び生成行列構成方法 - Google Patents

生成行列構成装置及び生成行列構成方法 Download PDF

Info

Publication number
JP6396849B2
JP6396849B2 JP2015110148A JP2015110148A JP6396849B2 JP 6396849 B2 JP6396849 B2 JP 6396849B2 JP 2015110148 A JP2015110148 A JP 2015110148A JP 2015110148 A JP2015110148 A JP 2015110148A JP 6396849 B2 JP6396849 B2 JP 6396849B2
Authority
JP
Japan
Prior art keywords
row
column
matrix
rows
code
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
JP2015110148A
Other languages
English (en)
Other versions
JP2016224679A (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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2015110148A priority Critical patent/JP6396849B2/ja
Publication of JP2016224679A publication Critical patent/JP2016224679A/ja
Application granted granted Critical
Publication of JP6396849B2 publication Critical patent/JP6396849B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Error Detection And Correction (AREA)

Description

本発明は、分散ストレージシステムにおいてデータを符号化する非正則の生成行列を構成するための生成行列構成装置及び生成行列構成方法に関する。
近年の映像の高品質化およびアプリケーションの扱うデータ量の増大により、映像サービスの提供に必要なストレージの規模が拡大し、需要に応じてハードウェアの規模を最適化可能なクラウドストレージの利用が進んでいる。ストレージシステムには高い可用性、長期の耐久性が求められるが、ディスク容量の増加によりRAID(Redundant Array of Independent Disk)による冗長化を行うシステムでは複数ディスク故障時の信頼性が低くなることが知られている(例えば、非特許文献1参照)。そのため、複数故障に対する信頼性を高める冗長化技術が検討されている。
現在HADOOP(登録商標)では、冗長性の担保のため3倍の複製を保存する方式が採用されている。しかし、複製により高可用性を実現するにはレプリカ数を増やす必要があり、ストレージの容量効率が下がることから大規模なストレージシステムへの適用は経済的ではない。ディスクの容量増加や計算資源の高性能化を背景に、消失訂正符号を用いたストレージ容量効率の高い冗長化手法が注目されている。消失訂正符号を適用することで複製と同等の耐久性および可用性を格段に低いネットワークコストおよびストレージコストで実現できることが知られており(例えば、非特許文献2参照)、消失訂正符号を利用した分散ストレージサービスが提供されている。
CLEVERSAFE(登録商標)では、リードソロモン符号(RS符号)をベースとした符号化技術を用いて分散ストレージの冗長化を行う(例えば、非特許文献3参照)。非組織符号であるRS符号の場合、データをk分割し符号化したn個の断片を保存し、n個中k個の断片を集めることでデータを復元する。この場合ストレージ容量の利用効率は高くなるが、故障ディスクの復旧時に他のディスクから送るデータの総量が大きくなる、またはガロア体の計算が必要なため復旧に係る計算量が多くなることが課題である。そこで、故障ディスク修復に必要な通信量を最小化可能な再生成符号(MBR符号)が提案された(例えば、非特許文献4参照)。
MBR符号は再生成符号においてノードを再構成するために送るデータの総量を最小化した符号であり、ストレージ容量の利用効率を最適化したMSR符号も提案されている。しかし、再生成符号ではノード数が多くなるという課題があり、ディスク修復時にデータを送るヘルパーノードの数を最小化したピラミッド符号が提案された(例えば、非特許文献5参照)。しかし、これらは密行列に基づく符号であるため、符号化に伴う計算量が大きいことが課題となっている。
一方で、XOR演算による符号化で計算負荷を抑えたFlat XOR符号が提案されている(例えば、非特許文献6参照)。しかし、HD Combination codesなどのFlat XOR符号では生成行列の構成が限られており、ディスク復旧時の通信量が最適化されていなかった。そこで、非正則構成の生成行列を用いたFlat XOR符号により通信量を削減する手法が提案された(例えば、非特許文献7参照)。しかし現在までのところ、通信量を最小化する非正則構成のFlat XOR符号は取り得る符号長が数十までの範囲に限定されており、分散数の大きいストレージシステムには適用できないという課題がある。
J.Resch,I.Volvoski,"Reliability models for highly fault−tolerant storage systems," arXiv Computer Science Distributed,Parallel,and Cluster Computing,Oct.2013. W.Hakim,J.D.Kubiatowicz,"Erasure coding vs.replication: a quantitative comparison," IPTPS Proceedings,Cambridge,USA,Mar.2002. H.Lahkar,M.C.R,"Towards high security and fault tolerant dispersed storage system with optimized information dispersal algorithm," International Journal of Advanced Research in Computer Science vol.2 Issue 3,July 2014. A.G.Dimakis,P.B.Godfrey,Y.Wu,M.Wainwright,K.Ramchandran,"Network coding for distributed storage systems," IEEE Trans.Information Theory,Sept.2010. C.Huang,M.Chen,J.Li,"Pyramid codes: flexible schemes to trade space for access efficiency in reliable data storage systems," Sixth IEEE International Symposium on Network Computing and Applications,2007,Cambridge,USA,July 2007. K.Greenan,X.Li,W.J.J,"Flat XOR−based erasure codes in storage systems:Constructions,efficent recovery,and tradeoffs," Mass Storage Systems and Technologies,2010 IEEE 26th Symposium,Incline Village,USA,May,2010. 吉田由唯,外村喜秀,白井大介,藤井竜也,"分散ストレージシステムのための通信量を削減するFlat XORに基づく消失訂正符号の非正則構成,"2014信学ソ大(基礎・境界),Tokushima,Japan,Sept.2014.
従来のストレージシステムに適用されるFlat XOR符号は、故障ディスク修復時に必要な通信量が最小化されていなかった。そこで、行重みに偏りを持たせた非正則構成の生成行列を利用しRecovery Equation Algorithmを用いた復号を行うことで、通信量を削減することができる。
また、符号長n、分割数k、列重みwのFlat XOR符号を構成するとき、符号長が大きい場合にFlat XOR符号の生成行列を探索すると、n−k及びwの組み合わせからk種類を選ぶ組み合わせ爆発が起こり、k=n−k以外の分割数について実現可能な計算時間で符号を決定することができない。この場合、Flat XOR符号の生成行列は行重みおよび列重みを一定とする正則構成となり、演算負荷・通信量の小さい非正則構成の生成行列は構成できなかった。
そこで、本発明は、n=100程度の大きな符号長であってもFlat XOR符号の非正則構成の生成行列を構成可能にすることを目的とする。
本発明は、生成行列の部分的な領域に規則的に1を配置し、残りの領域を探索するという制限を設けることとした。
具体的には、本発明に係る生成行列構成装置は、
データの分割数及びデータを格納するディスク数に基づいてゼロ行列を作成するゼロ行列作成部と、
前記ゼロ行列における所定行において、各列に配置する「1」の個数が一定値となるように、前記所定行の各列に「1」又は「0」を配置する所定行構成部と、
記ゼロ行列における前記所定行を除く全ての行において、各列に配置する「1」の個数が予め定められた符号の最小距離から前記一定値を差し引いた値となり、かつ「1」を配置する行の組み合わせが列ごとに異なるように、前記所定行を除く全ての行の各列に「1」又は「0」を配置する行列構成部と、
を備える。
本発明に係る生成行列構成装置では、前記所定行が2以上の場合、前記行列構成部が、前記ゼロ行列における前記所定行を除く全ての行における複数の列において、「1」を配置する行の組み合わせが同じになる場合、当該列同士で前記所定行における「1」を配置する行の組み合わせが異なるように、前記所定行を除く全ての行の各列に「1」又は「0」を配置してもよい。
具体的には、本発明に係る生成行列構成装置は、
データの分割数及びデータを格納するディスク数に基づいてゼロ行列を作成するゼロ行列作成部と、
前記ゼロ行列における特定の1行において、行に配置する「1」の個数が一定値以上となるように、前記特定の1行の各列に「1」又は「0」を配置する特定行構成部と、
前記特定の1行に「1」が配置された列については、前記ゼロ行列における前記特定の1行を除く全ての行において、各列に配置する「1」の個数が予め定められた符号の最小距離からを差し引いた値となり、かつ「1」を配置する行の組み合わせが列ごとに異なるように、前記特定の1行を除く全ての行の各列に「1」又は「0」を配置し、
前記特定の1行に「0」が配置された列については、前記ゼロ行列における前記特定の1行を除く全ての行において、各列に配置する「1」の個数が前記符号の最小距離に等しい値となり、かつ「1」を配置する行の組み合わせが列ごとに異なるように、前記特定の1行を除く全ての行の各列に「1」又は「0」を配置する行列構成部と、
を備える。
本発明に係る生成行列構成装置では、前記ゼロ行列は、データの分割数に等しい列数を有しかつデータを格納するディスク数から前記データの分割数を差し引いて求められるパリティディスク数に等しい行数を有してもよい。
具体的には、本発明に係る生成行列構成方法は、
生成行列構成装置が実行する生成行列構成方法であって、
データの分割数及びデータを格納するディスク数に基づいてゼロ行列を作成するゼロ行列作成ステップと、
前記ゼロ行列における所定行において、各列に配置する「1」の個数が一定値となるように、前記所定行の各列に「1」又は「0」を配置する所定行構成ステップと、
記ゼロ行列における前記所定行を除く全ての行において、各列に配置する「1」の個数が予め定められた符号の最小距離から前記一定値を差し引いた値となり、かつ「1」を配置する行の組み合わせが列ごとに異なるように、前記所定行を除く全ての行の各列に「1」又は「0」を配置する行列構成ステップと、
を実行する。
具体的には、本発明に係る生成行列構成方法は、
生成行列構成装置が実行する生成行列構成方法であって、
データの分割数及びデータを格納するディスク数に基づいてゼロ行列を作成するゼロ行列作成ステップと、
前記ゼロ行列における特定の1行において、行に配置する「1」の個数が一定値以上となるように、前記特定の1行の各列に「1」又は「0」を配置する特定行構成ステップと、
前記特定の1行に「1」が配置された列については、前記ゼロ行列における前記特定の1行を除く全ての行において、各列に配置する「1」の個数が予め定められた符号の最小距離からを差し引いた値となり、かつ「1」を配置する行の組み合わせが列ごとに異なるように、前記特定の1行を除く全ての行の各列に「1」又は「0」を配置し、
前記特定の1行に「0」が配置された列については、前記ゼロ行列における前記特定の1行を除く全ての行において、各列に配置する「1」の個数が前記符号の最小距離に等しい値となり、かつ「1」を配置する行の組み合わせが列ごとに異なるように、前記特定の1行を除く全ての行の各列に「1」又は「0」を配置する行列構成ステップと、
を実行する。
本発明は、n=100程度の大きな符号長であってもFlat XOR符号の非正則構成の生成行列の構成が可能であるため、多地点に分散したストレージシステムにおいて疎行列を用いた符号により小さい演算負荷で冗長化を行い、正則Flat XOR符号およびRS符号と比べてディスク復旧時の通信量および演算量を削減することができる。
実施形態に係る符号構成装置の概略を示す。 第1の構成法によって構成した生成行列Gの一例を示す。 第2の構成法によって構成した生成行列Gの一例を示す。 第3の構成法によって構成した生成行列Gの一例を示す。 I=1のときの修復式の集合REの一例を示す。 I=2のときの行の選択例を示す。 I=2のときの修復式の集合REの一例を示す。 I=3のときの行の選択例を示す。 I=3のときの修復式の集合REの一例を示す。 実施例1に係る非正則構成のFlat XOR符号と比較例に係る正則構成のFlat XOR符号との平均通信量の比較結果を示す。 実施例1に係る非正則構成のFlat XOR符号と比較例に係るRS符号との通信量の比較結果を示す。 実施例2に係る非正則構成のFlat XOR符号と比較例に係るRS符号とのXOR計算回数の比較結果を示す。 実施例2に係る非正則構成のFlat XOR符号と比較例に係るRS符号との平均通信量の比較結果を示す。 実施例3に係る非正則構成のFlat XOR符号と比較例に係る正則構成のFlat XOR符号とのXOR計算回数の比較結果を示す。 実施例3に係る非正則構成のFlat XOR符号と比較例に係る正則構成のFlat XOR符号との平均通信量の比較結果を示す。
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。なお、本発明は、以下に示す実施形態に限定されるものではない。これらの実施の例は例示に過ぎず、本発明は当業者の知識に基づいて種々の変更、改良を施した形態で実施することができる。なお、本明細書及び図面において符号が同じ構成要素は、相互に同一のものを示すものとする。
従来のFlat XOR符号は、(n−k)及びwの組み合わせからk種類を選ぶ数の行列から生成行列を選択する必要があり、符号長が大きいときに組合せ爆発となるため、とりうる符号長が限定されていた。本実施形態に係る発明は、符号長が大きい場合に広範囲の分割数でFlat XOR符号の非正則構成の生成行列Gを構成可能とする。これにより本実施形態に係る発明は、生成行列の部分的な領域に規則的に各列p個の1を配置し、残りの領域にw−p個の1を配置する問題に制限することで探索を可能とする。
本実施形態に係るストレージシステムは、符号化装置と、複数のディスクと、復号装置と、を備える。図1に、本実施形態に係る符号化装置の概略を示す。符号化装置10は、冗長化の対象となるデータを符号化する。複数のディスク20は、冗長化の対象となるデータを格納する。復号装置(不図示)は、非正則生成行列Gを用いて、複数のディスクに格納されているデータの修復を行う。
符号化装置10は、データ分割部11と、符号化部12と、データ分配部13と、を備える。データ分割部11は、冗長化するデータをk個に分割する。符号化部12は、非正則構成の生成行列Gを用いて、k個に分割したデータを符号化し、(n−k)個の冗長データおよびk個に分割したデータを含むn個の符号化データを生成する。データ分配部13は、符号化部12の符号化したn個のデータを、各ディスク20に送信する。
符号化装置は、コンピュータを、各機能部として機能させることで実現してもよい。この場合、符号化装置内のCPU(Central Processing Unit)が、記憶部(不図示)に記憶されたコンピュータプログラムを実行することで、各構成を実現する。図1では、ディスク20の数と生成する符号化データの数が等しい場合を示すが、ディスク20の数と生成する符号化データの数は同一でなくともよい。例えば、分散した各ディスクに複数の符号化データを保存するなどの使い方をすることも考えられる。また、ディスク20は地理的に分散して配置され、ネットワークにより接続されていてもよい。
(生成行列構成装置)
本実施形態に係る符号化部12は、生成行列構成装置として機能し、非正則構成の生成行列Gを構成する。本実施形態では、ストレージシステムを構成する全ディスク数を符号長に等しいn、データの分割数をk、パリティディスク数をn−k、符号の最小距離をwとする。n−k行k列のゼロ行列をZとする。
(a)全探索可能な範囲の非正則の生成行列Gの第1の構成方法
符号長nがある程度小さく、n−k及びwの組み合わせからk種類を選ぶ全組み合わせについて全探索可能である場合、k−n行n列のゼロ行列Zを作成し、Zの各列について探索した組み合わせに相当する行の値を1とする。構成した行列の中で、任意のf列{f=1,2,…,w}を修復可能な行列を生成行列Gとし、最も平均通信量の小さい生成行列を選択する。
図2に、第1の構成法によって構成した生成行列Gの一例を示す。n=16、k=10、w=3の場合を示す。生成行列の各列について、n−k行からw行を選ぶ組合せは列内で1を配置する行の組合せとなる。n−k=6、w=3の場合、各列内の1の配置パターン数は図に示すようにn−kとなり、20通り存在する。20通りの配置パターンからk列分を選択することで生成行列を構成するため、とりうる生成行列候補数は20となる。k=10であるため、とりうる生成行列候補数は184756通りとなる。f=2とすると、その中の2つの生成行列候補である行列(1)および行列(184756)が、生成行列Gとなる。
(b)全探索不可能な範囲の非正則の生成行列Gの第2の構成方法
符号長nが大きい場合、n−k及びwの組み合わせからk種類を選ぶ数が非常に大きくなるため、生成行列Gの第1の構成法を用いて行列を構成することができない。そこで、生成行列を2つの領域に分割し、列重みを割り振ることで探索範囲に制約をつけ、非正則の生成行列を構成する。具体的には、以下の手順で非正則の生成行列Gを構成する。
具体的には、符号化部12は、ゼロ行列作成ステップを実行するゼロ行列作成部と、所定行構成ステップを実行する所定行構成部と、行列構成ステップを実行する行列構成部と、を備える。ゼロ行列作成ステップにおいてステップS101を実行し、所定行構成ステップにおいてステップS102及びS103を実行し、行列構成ステップにおいてステップS104及びS105を実行する。
ステップS101:n−k行k列のゼロ行列Zを作成する。
例えば、n=16、k=10、w=3の場合、図3に示すように、ゼロ行列Zは6行10列となる。
ステップS102:行重みに偏りを持たせるため、1行目からx行目までの行重みをpとおき、式1を満たす[x,p]をすべて求める。
(数1)
×n−k−xw−p≧k (式1)
ただし、x>pである。
例えば、n=16、k=10、w=3の場合、[x,p]の組み合わせは[1,1]、[2,1]、[4,2]、[5,2]、[6,3]となる。[1,1]の場合は1行目、[2,1]の場合は2行目が所定行となる。
ステップS103:Zの1行目からx行目までの範囲に列重みpとなるように1を配置した行列をZ3とする。の組み合わせにより各列において1となる行を決定する。
例えば、列重みがp=1であるとする。
x=1のとき、Z31に示すように、1行目に「1111111111」が配置されている。
x=2のとき、Z32に示すように、1行目に「1010101010」が配置され、2行目に「0101010101」が配置されている。
ステップS104:Z3のx+1行目からn−k行目までの範囲に列重みw−pとなるように以下の方法で1を配置する。n−k−xw−p≦kの場合、1列目からn−k−xw−p行目までの範囲に、n−k−xw−pの組み合わせにより各列において1となる行を決定した行列Bを置き、r(n−k−xw−p)+1列目から2r(n−k−xw−p)列目にBをr列{r=1,2,…,x−1}循環させた行列Bを置く。Brの列数合計がkを超える場合はランダムにk列を選択しZ3の1列目からk列目に配置する。
例えば、列重みp=1であるとすると、w=3であるため、列重みw−pは2となる。
x=1のとき、Z41に示すように、2行目から6行目までの各列に「1」を2つずつ配置する。
x=2のとき、Z42に示すように、1列目から順に、3行目から6行目までの各列に「1」を2つずつ配置する。このとき、各列に「1」を2つずつ配置する組み合わせは6列目で終了する。この場合、7列目以降は、1行目及び2行目の「1」の配置との組み合わせが1列目から6列目までと異なるように、2行目から6行目までの各列に「1」を2つずつ配置する。
ステップS105:構成した行列の中で任意のf{f=1,2,…,w}列を修復可能な行列を生成行列Gとする。例えば、Z41及びZ42の両方が生成行列Gとなる。
以上説明したように、生成行列Gの第2の構成方法を用いることで、非正則の生成行列Gを構成することができる。なお、本実施形態では「所定行」が1行目及び2行目である例を示したが、「所定行」は2行目以降の任意の行であってもよい。
(c)全探索不可能な範囲の非正則の生成行列Gの第3の構成方法
符号長nが大きく、ステップS102において式1を満たす[x,p]の組合せが[x,p]=[n−k,w]のみである場合等において、の組合せ数が大きくなり、生成行列Gの第2の構成法で行列を構成することができない。そこで、生成行列の1行目の行重みが平均行重み以上となるように構成することで、残りn−k−1行の探索範囲を制限し、非正則の生成行列Gを構成する。具体的には、以下の手順で非正則の生成行列Gを構成する。
具体的には、符号化部12は、ゼロ行列作成ステップを実行するゼロ行列作成部と、特定行構成ステップを実行する特定行構成部と、行列構成ステップを実行する行列構成部と、を備える。ゼロ行列作成ステップにおいてステップS201を実行し、特定行構成ステップにおいてステップS202及びS203を実行し、行列構成ステップにおいてステップS204及びS205を実行する。
ステップS201:n−k行k列のゼロ行列Zを作成する。
例えば、n=16、k=10、w=3の場合、図4に示すように、ゼロ行列Zは6行10列となる。
ステップS202:生成行列の平均行重みEを式2により求める。
(数2)
E=w×k/(n−k) (式2)
例えば、n=16、k=10、w=3の場合、E=5となる。
ステップS203:Zの1行目の行重みがW{W=E+1,E+2,…,k}となるように、の組合せにより1行目の1となる列を配置した行列をZ’とする。1行目に1を配置した列の集合をAとする。
例えば、E=5である場合、1行目の行重みWはW{6,7,8,9,10}となる。
1行目の行重みがW=6のとき、1行目に1を配置する列の組合せをにより決定する。例えば、A={1,2,3,4,5,6}のとき、Z36に示すように、1行目の1列目から6列目までに「1」を配置する。また、1行目の行重みがW=7のとき、1行目に1を配置する列の組合せをにより決定する。例えば、A={1,2,3,7,8,9,10}のとき、Z37に示すように、1行目の1列目から3列目までに「1」を配置し、1行目の7列目から10列目までに「1」を配置する。
ステップS204:Z’の2行目からn−k行目までの範囲に1を配置する。Aに含まれる列は、n−k−1w−1の組合せにより1となる行を決定する。n−k−1w−1>Wの場合は、n−k−1及びw−1の組み合わせからW種類を選び、各列を構成する。Aに含まれない列は、n−k−1の組合せにより1となる行を決定する(図3)。n−k−1>k−Wの場合は、n−k−1及びwの組み合わせからk−W種類を選び各列を構成する。
例えば、W=6のとき、Z46に示すように、Aに含まれる1列目から6列目まではの組合せにより決定される行に「1」を配置し、Aに含まれない7列目から10列目まではの組合せにより決定される行に「1」を配置する。
例えば、W=7のとき、Z47に示すように、Aに含まれる1列目から3列目まで及び7列目から10列目まではの組合せにより決定される行に「1」を配置し、Aに含まれない4列目から6列目まではの組合せにより決定される行に「1」を配置する。
ステップS205:構成した行列の中で任意のf{f=1,2,…,w}列を修復可能な行列を生成行列Gとする。例えば、Z46及びZ47の両方が生成行列Gとなる。構成した生成行列の中で最も平均通信量の小さい行列を選択する。
以上説明したように、生成行列Gの第3の構成方法を用いることで、非正則の生成行列Gを構成することができる。なお、本実施形態では「特定の1行」が1行目である例を示したが、「特定の1行」は2行目以降の任意の行であってもよい。
(復号装置)
復号装置は、生成行列Gにn−k行n−k列の単位行列を水平に接続しパリティ検査行列Hとする。
(数3)
H=[G I]
Recovery Equation Algorithmにより、パリティ検査行列Hのn−k行からI{I=1,2,…,n−k}行を選び選択した行のXORにより得られる修復式の集合をREとする。本実施形態では、全ディスク数をn、データの分割数をk、パリティディスク数をn−k、符号の最小距離をw、同時故障ディスク数をf{f=1,2,3}、故障ディスクの集合をF{F=F,…,F}とする。
図5に、I=1のときの修復式の集合REの一例を示す。本実施形態では、n=16、k=10、w=3であり、生成行列Gは6行10列である。この場合、生成行列Gに6行6列の単位行列を水平に接続する。
図6に、I=2のときの行の選択例を示す。図7に、I=2のときの修復式の集合REの一例を示す。パリティ検査行列Hの1行目及び2行目を選択した場合、図7の1行目に示すように、I=2のときのパリティ検査行列Hは、図5に示すパリティ検査行列Hの1行目と2行目のXORとなる。I=2のときの行の選択のバリエーションは15通りあるため、I=2のパリティ検査行列Hは15行となる。
図8に、I=3のときの行の選択例を示す。図9に、I=3のときの修復式の集合REの一例を示す。パリティ検査行列Hの1、2及び3行目を選択した場合、図9の1行目に示すように、I=3のときのパリティ検査行列Hは、図5に示すパリティ検査行列Hの1、2及び3行目のXORとなる。I=3のときの行の選択のバリエーションは20とおりあるため、I=3のパリティ検査行列Hは20行となる。
f=1の場合、修復式の集合REの中でF列目の値が1となる行の集合REを求め、REの中で最も行重みの小さい行をFの修復式とする。例えば、図5、図7、図9のように修復式の集合REを求めたとき、列1に対応するディスクが故障した場合の修復式を求めるためには、まずREの1列目の値が1となるI=1の1,2,3行目およびI=2の3,4,5,7,8,9,10,11,12行目およびI=3の1,8,9,13,14,15,16,17,18行目の集合を抜き出しREとする。REの行重みは順に11,5,5,8,8,8,8,8,8,8,9,8,7,7,7,9,9,9,9,9,9であることから、最も行重みの小さいI=1の2,3行目のいずれかを修復式とする。I=1の2行目を修復式とすると、値が1となる列は1,2,3,4,12であることから、2,3,4,12列目に相当するディスクのデータのXORにより、1列目に相当する故障ディスクのデータを修復する。
修復式において、故障列Fを除く値が1の列に対応するディスクに保存したデータのXORにより、故障ディスクFのデータを修復する。
このとき、修復式の行重みから故障列に相当する1を引いた値を修復時の参照ディスク数、参照ディスク数から1を引いた値を修復時のXOR回数、参照ディスク数とディスク容量の積を修復に必要な通信量とする。修復式において値が1の行に該当するディスクのデータのXOR計算により、故障ディスクに保存されていたデータを修復する。
f=2の場合、REの中でF{F=F,F}のF列目の値が1、F列目の値が0となる行の集合REを求め、最も行重みの小さい式をFの修復式とする。ただし、FおよびFは入れ替えてもよい。ディスクFを修復後、f=1の場合と同様にディスクFの修復式を求め、ディスクFを修復する。
f=3の場合、REの中でF{F=F,F,F}のF列目の値が1、F、F列目の値が0となる行の集合REを求め、最も行重みの小さい式をFの修復式とする。ただし、F1、およびFは入れ替えてもよい。ディスクFを修復後、f=2の場合と同様にF,Fの修復式を求め、ディスクF,Fを修復する。
ストレージシステムを構成するnディスクの中でf{f=1,2,…,w}ディスクが故障する全組み合わせについて、Recovery Equation Algorithmにより修復式を求め、Belief Propagationによる復号を行い、fディスク修復に必要な通信量の平均値を計算する。
なお、通信量を最小とする生成行列Gが1通りに決定した場合にはそれを記録するとともに、故障ディスクの組合せごとに予め修復式の探索を行い、通信量が最小となる修復式を記録しておくことで、復号毎に修復式の探索を行うことを省略することができる。
[第1実施例]
一例として、ストレージシステムを構成するディスク数nおよび分割数kが小さく、(n−k)及びwの組み合わせからk種類を選ぶ組み合わせを全通り探索可能な場合について、通信量を削減する符号化手法を示す。
ディスク容量1(TB)、ストレージを構成する全ディスク数12≦n≦24、データ分割数6≦k≦18、最大同時故障数w=3として冗長化を行う場合、符号長n、分割数k、列重みwのFlat XOR符号を用いてデータの分散保存を行う(図1)。
前述の非正則の生成行列Gの第1の構成方法の手順に従い構成した生成行列Gを用いて符号化した非正則構成のFlat XOR符号の中で通信量が最小の行列を探索し(図2)、正則構成のFlat XOR符号の中で通信量が最小の行列を用いた場合とディスクの故障確率により重み付けした平均通信量を比較した。
図10に、本実施例における正則構成のFlat XOR符号との平均通信量の比較結果を示す。縦軸は、正則構成のFlat XOR符号を用いて測定した平均通信量に対する、本実施形態に係る非正則構成のFlat XOR符号を用いて測定した平均通信量の比を示す。本実施形態に係る非正則構成のFlat XOR符号を用いた場合、いずれの符号長nにおいても、より小さい通信量でデータを保護することができる。
また、図11に、RS符号を用いた場合の通信量の比較結果を示す。縦軸は、Reed−Solomon符号を用いて測定した平均通信量に対する、本実施形態に係る非正則構成のFlat XOR符号を用いて測定した平均通信量の比を示す。本実施形態に係る非正則構成のFlat XOR符号を用いた場合、いずれの符号長nにおいても、より小さい通信量でデータを保護することができる。
[第2実施例]
多地点にデータを分散保存するストレージシステムにおいて、ディスク数nおよび分割数kが大きく、(n−k)及びwの組み合わせからk種類を選ぶ全組み合わせを探索不可能な場合について、RS符号と比較して通信量を削減する符号化手法を示す。
ディスク容量1(TB)、ストレージを構成する全ディスク数36≦n≦116、データ分割数20≦k≦100、最大同時故障数w=3として冗長化を行う場合、符号長n、分割数k、列重みwのFlat XOR符号を用いてデータの分散保存を行う(図1)。
前述の非正則生成行列Gの第2の構成方法の手順に従い構成した生成行列Gを用いて符号化した非正則構成のFlat XOR符号と、RS符号を用いた場合のそれぞれについて、故障ディスク数fごとに、修復に必要なXOR計算回数およびディスクの故障確率により重み付けした平均通信量を算出して比較した。
図12に、RS符号とのXOR計算回数の比較結果を示す。縦軸は、RS符号を用いた場合の平均XOR計算回数に対する、本実施形態に係る非正則構成のFlat XOR符号を用いた場合の平均XOR計算回数の比を示す。
図13に、RS符号との平均通信量の比較結果を示す。縦軸は、RS符号を用いて測定した平均通信量に対する、本実施形態に係る非正則構成のFlat XOR符号を用いて測定した平均通信量の比を示す。
図12及び図13に示すように、非正則構成の符号を用いた場合、より少ないXOR計算回数および通信量でデータを保護することができることが分かる。
[第3実施例]
多地点にデータを分散保存するストレージシステムにおいて、ディスク数nおよび分割数kが大きく、(n−k)及びwの組み合わせからk種類を選ぶ全組み合わせを探索不可能な場合について、正則構成のFlat XOR符号と比較して通信量を削減する符号化手法を示す。
ディスク容量1(TB)、全ディスク数26≦n≦130、データ分割数18≦k≦113、最大同時故障数w=3として冗長化を行う場合、符号長n、分割数k、列重みwの非正則構成Flat XOR符号を非正則構成の生成行列Gの第2の構成方法の手順に従って構成する。また、このとき分割数k=n−kにおいて正則構成のFlat XOR符号の生成行列が1通りに決定される。
非正則構成の生成行列Gおよびk=n−kの正則構成の生成行列Gを用いた場合について、fディスクの修復に必要なXOR計算回数およびディスクの故障確率により重み付けした平均通信量を比較した。
図14に、正則構成のFlat XOR符号とのXOR計算回数の比較結果を示す。縦軸は、正則構成のFlat XOR符号を用いた場合の平均XOR計算回数に対する、本実施形態に係る非正則構成のFlat XOR符号を用いた場合の平均XOR計算回数の比を示す。
図15に、正則構成のFlat XOR符号との平均通信量の比較結果を示す。縦軸は、正則構成のFlat XOR符号を用いて測定した平均通信量に対する、本実施形態に係る非正則構成のFlat XOR符号を用いて測定した平均通信量の比を示す。
図14及び図15に示すように、非正則構成の符号を用いることで、同じ符号長の場合に正則構成の符号より少ないXOR計算回数および通信量でデータを保護することができる。
以上説明したように、本実施形態に係る非正則構成の生成行列Gを用いて符号化したFlat XOR符号を用いることで、RS符号および正則Flat XOR符号と比べ、故障ディスク修復時の通信量および計算負荷を低減する符号を構成することができる。また、従来は非正則のFlat XOR符号を適用できなかった符号長100程度までの場合に広範囲の分割数で非正則符号を構成することができるため、分散数が大きなストレージシステムにおいて計算負荷を抑えた消失訂正符号の適用が可能となる。
また、本実施形態では、符号化においてFlat XOR符号を用いる例を示したが、本発明は非正則構成の生成行列Gを用いた任意の符号化に適用できる。例えば、疎グラフに基づき、XORによる符号化を行い、Recovery Equation Algorithmによる復号が可能な他の組織符号にも適用可能である。そのような組織符号としては、例えば、LDPC(Low Density Parity Check)符号が例示できる。
本発明は情報通信産業に適用することができる。
10:符号化装置
11:データ分割部
12:符号化部
13:データ分配部
20:ディスク

Claims (6)

  1. データの分割数及びデータを格納するディスク数に基づいてゼロ行列を作成するゼロ行列作成部と、
    前記ゼロ行列における所定行において、各列に配置する「1」の個数が一定値となるように、前記所定行の各列に「1」又は「0」を配置する所定行構成部と、
    記ゼロ行列における前記所定行を除く全ての行において、各列に配置する「1」の個数が予め定められた符号の最小距離から前記一定値を差し引いた値となり、かつ「1」を配置する行の組み合わせが列ごとに異なるように、前記所定行を除く全ての行の各列に「1」又は「0」を配置する行列構成部と、
    を備える生成行列構成装置。
  2. 前記所定行が2以上の場合、
    前記行列構成部が、前記ゼロ行列における前記所定行を除く全ての行における複数の列において、「1」を配置する行の組み合わせが同じになる場合、当該列同士で前記所定行における「1」を配置する行の組み合わせが異なるように、前記所定行を除く全ての行の各列に「1」又は「0」を配置する、
    請求項1に記載の生成行列構成装置。
  3. データの分割数及びデータを格納するディスク数に基づいてゼロ行列を作成するゼロ行列作成部と、
    前記ゼロ行列における特定の1行において、行に配置する「1」の個数が一定値以上となるように、前記特定の1行の各列に「1」又は「0」を配置する特定行構成部と、
    前記特定の1行に「1」が配置された列については、前記ゼロ行列における前記特定の1行を除く全ての行において、各列に配置する「1」の個数が予め定められた符号の最小距離からを差し引いた値となり、かつ「1」を配置する行の組み合わせが列ごとに異なるように、前記特定の1行を除く全ての行の各列に「1」又は「0」を配置し、
    前記特定の1行に「0」が配置された列については、前記ゼロ行列における前記特定の1行を除く全ての行において、各列に配置する「1」の個数が前記符号の最小距離に等しい値となり、かつ「1」を配置する行の組み合わせが列ごとに異なるように、前記特定の1行を除く全ての行の各列に「1」又は「0」を配置する行列構成部と、
    を備える生成行列構成装置。
  4. 前記ゼロ行列は、データの分割数に等しい列数を有しかつデータを格納するディスク数から前記データの分割数を差し引いて求められるパリティディスク数に等しい行数を有する、請求項1から3のいずれかに記載の生成行列構成装置。
  5. 生成行列構成装置が実行する生成行列構成方法であって、
    データの分割数及びデータを格納するディスク数に基づいてゼロ行列を作成するゼロ行列作成ステップと、
    前記ゼロ行列における所定行において、各列に配置する「1」の個数が一定値となるように、前記所定行の各列に「1」又は「0」を配置する所定行構成ステップと、
    記ゼロ行列における前記所定行を除く全ての行において、各列に配置する「1」の個数が予め定められた符号の最小距離から前記一定値を差し引いた値となり、かつ「1」を配置する行の組み合わせが列ごとに異なるように、前記所定行を除く全ての行の各列に「1」又は「0」を配置する行列構成ステップと、
    を実行する生成行列構成方法。
  6. 生成行列構成装置が実行する生成行列構成方法であって、
    データの分割数及びデータを格納するディスク数に基づいてゼロ行列を作成するゼロ行列作成ステップと、
    前記ゼロ行列における特定の1行において、行に配置する「1」の個数が一定値以上となるように、前記特定の1行の各列に「1」又は「0」を配置する特定行構成ステップと、
    前記特定の1行に「1」が配置された列については、前記ゼロ行列における前記特定の1行を除く全ての行において、各列に配置する「1」の個数が予め定められた符号の最小距離からを差し引いた値となり、かつ「1」を配置する行の組み合わせが列ごとに異なるように、前記特定の1行を除く全ての行の各列に「1」又は「0」を配置し、
    前記特定の1行に「0」が配置された列については、前記ゼロ行列における前記特定の1行を除く全ての行において、各列に配置する「1」の個数が前記符号の最小距離に等しい値となり、かつ「1」を配置する行の組み合わせが列ごとに異なるように、前記特定の1行を除く全ての行の各列に「1」又は「0」を配置する行列構成ステップと、
    を実行する生成行列構成方法。
JP2015110148A 2015-05-29 2015-05-29 生成行列構成装置及び生成行列構成方法 Active JP6396849B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015110148A JP6396849B2 (ja) 2015-05-29 2015-05-29 生成行列構成装置及び生成行列構成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015110148A JP6396849B2 (ja) 2015-05-29 2015-05-29 生成行列構成装置及び生成行列構成方法

Publications (2)

Publication Number Publication Date
JP2016224679A JP2016224679A (ja) 2016-12-28
JP6396849B2 true JP6396849B2 (ja) 2018-09-26

Family

ID=57748522

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015110148A Active JP6396849B2 (ja) 2015-05-29 2015-05-29 生成行列構成装置及び生成行列構成方法

Country Status (1)

Country Link
JP (1) JP6396849B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108736899B (zh) * 2017-06-19 2019-07-12 华为技术有限公司 一种极化码编译码方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7058873B2 (en) * 2002-11-07 2006-06-06 Carnegie Mellon University Encoding method using a low density parity check code with a column weight of two
JP4386198B2 (ja) * 2004-01-20 2009-12-16 日本電気株式会社 検査行列生成方法、データ伝送システム、符号化装置、復号装置および検査行列生成プログラム
KR100981503B1 (ko) * 2004-02-13 2010-09-10 삼성전자주식회사 최대 오류 정정/오류 검출 능력을 가지는 저밀도 패리티검사 부호 부호화/복호화 장치 및 방법
US8145941B2 (en) * 2006-10-31 2012-03-27 Hewlett-Packard Development Company, L.P. Detection and correction of block-level data corruption in fault-tolerant data-storage systems
EP2264930B1 (en) * 2009-06-15 2014-05-14 Canon Kabushiki Kaisha Distributed code generation method and device

Also Published As

Publication number Publication date
JP2016224679A (ja) 2016-12-28

Similar Documents

Publication Publication Date Title
US10146618B2 (en) Distributed data storage with reduced storage overhead using reduced-dependency erasure codes
US7930611B2 (en) Erasure-resilient codes having multiple protection groups
US7904782B2 (en) Multiple protection group codes having maximally recoverable property
Papailiopoulos et al. Simple regenerating codes: Network coding for cloud storage
Huang et al. Pyramid codes: Flexible schemes to trade space for access efficiency in reliable data storage systems
US20170083603A1 (en) Co-derived data storage patterns for distributed storage systems
US8392805B2 (en) Non-MDS erasure codes for storage systems
US20140380114A1 (en) Data encoding for data storage system based on generalized concatenated codes
CN106484559B (zh) 一种校验矩阵的构造方法及水平阵列纠删码的构造方法
US11748197B2 (en) Data storage methods and systems
Kamath et al. Codes with local regeneration
EP3635554B1 (en) Layered error correction encoding for large scale distributed object storage system
US10740182B2 (en) Erased memory page reconstruction using distributed coding for multiple dimensional parities
Ivanichkina et al. Mathematical methods and models of improving data storage reliability including those based on finite field theory
Balaji et al. On partial maximally-recoverable and maximally-recoverable codes
US20200336157A1 (en) Systematic and xor-based coding technique for distributed storage systems
JP6396849B2 (ja) 生成行列構成装置及び生成行列構成方法
Bao et al. Reducing network cost of data repair in erasure-coded cross-datacenter storage
WO2016201639A1 (zh) 分布式数据存储方法、控制设备和系统
Yongmei et al. Large LDPC codes for big data storage
Calis et al. Architecture-aware coding for distributed storage: Repairable block failure resilient codes
Li et al. Parallelism-aware locally repairable code for distributed storage systems
Wei et al. expanCodes: Tailored LDPC codes for big data storage
Yi et al. Two-erasure codes from 3-plexes
Xu et al. Expander code: A scalable erasure-resilient code to keep up with data growth in distributed storage

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170629

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180530

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180612

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180809

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180830

R150 Certificate of patent or registration of utility model

Ref document number: 6396849

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150