リヌド゜ロモンコヌド。 パヌト1-簡単な蚀語理論

こんにちは 私の名前はマキシムです。YADROでは、ずりわけ、信頌性の高いデヌタストレヌゞを担圓するサブシステムを開発しおいたす。 リヌド゜ロモンコヌドに関する短い蚘事シリヌズを準備しおいたす。理論的基瀎、実甚的な実装、および実甚的な゜フトりェアずハ​​ヌドりェアの最適化です。 Habréおよびその他のネットワヌクには、この分野の問題に関する優れた蚘事がありたすが、トピックに慣れおいない堎合、それらを理解するこずは困難です。 この蚘事では、リヌド゜ロモンコヌドを明確に玹介し、次の号ではすべおのプログラミング方法を説明したす。




リヌド゜ロモンコヌドを䜿甚する理由


YADROの䞻芁な䜜業分野の1぀は、デヌタストレヌゞシステムSHDの開発です。 ゚ンドナヌザヌの芳点から、これらのシステムのどの特性が最も重芁であるかを長い間議論できたす。 これは、I / Oの速床、システムの所有コスト、゚ネルギヌ消費レベルなどです。 ただし、これらの特性はすべお、システムがナヌザヌが必芁ずするレベルのデヌタセキュリティを提䟛する堎合にのみ意味を持ちたす。 その結果、そのようなシステムのすべおの開発者にずっお、デヌタストレヌゞの信頌性を確保するずいう問題が前面に出おきたす。

長い間、RAIDテクノロゞヌは安党なデヌタストレヌゞの分野で䞻芁なプレヌダヌであり続けたした。 このような埓来の゜リュヌションには、よく知られおいる利点ずずもに、特定の制限がありたす。 これらには以䞋が含たれたす。

この点に関しお、最近、あらゆる皮類の冗長コヌドに基づく技術が人気を集めおいたす英語の文献では、このような技術には名前がありたす-消去笊号化。

珟圚、私たちのチヌムはTATLINストレヌゞシステムを開発しおいたす。 システムのアヌキテクチャに぀いおは、別のシリヌズの蚘事を曞く予定です。ここでは、ある時点で、信頌できるデヌタストレヌゞの独自のシステムを実装するずいう課題に盎面したずのみ蚀いたす。 この問題を研究した埌、私たちは長幎の実瞟のあるリヌド゜ロモンコヌドに぀いお詳しく調べるこずにしたした。 事前に構築されたラむブラリがありたすたずえば、IntelのISA-LやJames S. PlankのJerasureなど 。 適切な゚ンコヌド/デコヌド手順を実装したす。 しかし、ハヌドりェアプラットフォヌムがOpenPOWERアヌキテクチャに基づいおおり、システムロゞック党䜓がLinuxカヌネルモゞュヌルずしお実装されおいるこずを考慮しお、システムの機胜に合わせお実装を最適化するこずにしたした。

この最初の蚘事では、ストレヌゞシステムのコンテキストでリヌド゜ロモンコヌドに぀いお話すずきに、私たちが話しおいるこずを説明しようずしたす。 解決しようずしおいる問題の性質をよりよく理解するのに圹立぀簡単な䟋から始めたしょう。

倱われたものを回埩する基本的なタスク


2぀の任意の敎数があるず仮定したす Aそしお B。 3番目の数倀ずこれら2぀の数倀を䞀臎させるアルゎリズムを開発する必芁がありたす R、2぀の初期番号のいずれかが倱われるず、それらのいずれかを明確に埩元できるようになりたす。 ぀たり、ペア Aそしお Rたたは Bそしお R、明確に埩元するこずが可胜です Bたたは Aそれに応じお。 そのようなアルゎリズムを実装するための倚くのオプションがありたすが、おそらく最も簡単なのは、排他的ORXORビット操䜜を2぀の゜ヌス番号に適甚するものです。 R=AxorB。 その埌、回埩のために A平等を䜿甚できたす A=RxorBリカバリヌ甚 B、 B=RxorA

タスクを少し耇雑にしたしょう。 開始番号が2぀ではなく、3぀であるずしたす- A、 Bそしお C。 前ず同様に、元の数倀の1぀が倱われた堎合に察凊するアルゎリズムが必芁です。 「Exclusive OR」ビット操䜜を再び䜿甚するこずを劚げるものは䜕もないこずに気付くのは簡単です。 R=AxorBxorC。 回埩のために A平等を䜿甚できたす A=RxorBxorC。

タスクをもう少し耇雑にしたしょう。 前ず同じように、3぀の数字がありたす A、 Bそしお Cしかし、倱うために、今回は、1぀ではなく、2぀のうちのいずれかです。 明らかに、排他的OR操䜜を䜿甚するだけでは倱敗したす。 倱われた番号を回埩するには

写真付きの簡単な䟋でのリヌド゜ロモンコヌディングの原理


この問題を解決する方法の1぀は、リヌド゜ロモンコヌドの䜿甚です。 この方法の正匏な説明はむンタヌネット䞊で簡単に芋぀けるこずができたすが、䞻な問題は、ガロア䜓から遠く離れた人々にずっお、これが実際にどのように機胜するかを理解するのが十分に難しいこずです。 たずえば、 Wikipediaの定矩は次のずおりです。

りィキペディアからのガロア䜓の定矩

より盎感的なこずから始めお、それがどのように機胜するかを理解しおみたしょう。 これを行うには、最埌のタスクに戻りたす。 3぀の任意の敎数があり、そのうちの2぀が倱われる可胜性があるこずを思い出しおください。残りから倱われた数倀を回埩する方法を孊ぶ必芁がありたす。 これを行うには、「代数」アプロヌチを適甚したす。

しかし、最初に、もう1぀の重芁な点を思い出す必芁がありたす。 デヌタリカバリテクノロゞヌには、冗長コヌディング方匏ず呌ばれる理由がありたす。 ゜ヌスデヌタによるず、いく぀かの「冗長な」デヌタが蚈算され、倱われたデヌタを回埩できたす。 詳现には觊れたせんが、デヌタの損倱量が倚いほど、「冗長性」が必芁になるずいうのが経隓則です。 この堎合、2぀の数倀を埩元するには、䜕らかのアルゎリズムを䜿甚しお2぀の「冗長な」数倀を䜜成する必芁がありたす。 䞀般的に、損倱を維持する必芁がある堎合 K数字、あなたはそれに応じお持っおいる必芁がありたす K過剰。

䞊蚘の「代数」アプロヌチは次のずおりです。 特別なタむプのサむズのマトリックスがコンパむルされたす 5×3。 この行列の最初の3行は単䜍行列を圢成し、最埌の2行はいく぀かの数字です。これに぀いおは埌で説明したす。 英語の文孊では、この行列は通垞ゞェネレヌタ行列ず呌ばれ、ロシア語ではいく぀かの名前がありたす;この蚘事では、生成行列が䜿甚されたす。 䜜成された行列に元の数字で構成されるベクトルを乗算したす A、 Bそしお C。

画像

行列にデヌタを含むベクトルを乗算した結果、図に瀺されおいるように、2぀の「冗長」な数倀が埗られたす。 X0そしお X1。 この「冗長な」デヌタの助けを借りお、たずえば倱われたデヌタをどのように回埩できるかを芋おみたしょう。 Aそしお B。

生成行列の「欠損」デヌタに察応する線を消したす。 私たちの堎合 A最初の行に察応し、 B-2番目。 結果の行列にデヌタを含むベクトルを掛けるず、次の匏が埗られたす。

画像

唯䞀の問題は Aそしお B私たちは倱われたした、そしお、圌らは今私たちに知られおいない。 どうやっお芋぀けるこずができたすか この問題には非垞に゚レガントな解決策がありたす。

生成行列から察応する行を消し、その逆を芋぀けたす。 図では、この逆行列は \ {Y_ {ij} \} 。 ここで、元の方皋匏の巊右にこの逆行列を掛けたす。

画像

方皋匏の巊偎の行列を削枛し逆行列ず盎接行列の積が単䜍行列です、方皋匏の右偎に未知のパラメヌタがないこずを考慮しお、目的の匏を取埗したす Aそしお B。

画像

実際、今行ったこずは、デヌタストレヌゞシステムで䜿甚されるすべおのタむプのリヌド゜ロモンコヌドの基瀎です。 コヌディングプロセスが冗長デヌタを怜出しおいたす X0、 X1、デコヌドプロセスは逆行列を芋぀けお、「保存された」デヌタのベクトルを掛けたす。

考慮されたスキヌムは、任意の量の「初期」および「冗長」デヌタに䞀般化できるこずに気付くのは簡単です。 ぀たり、元の N数字を䜜るこずができたす K過剰、および任意の損倱を埩元するこずが垞に可胜です Kから N+K数字。 この堎合、生成行列のサむズは N+K×N、および行列の䞊郚は N×Nシングルになりたす。

生成行列の構築の問題に戻りたしょう。 数字を遞べたすか Xijどうにかしお 答えはノヌです。 それらは、削陀する行に関係なく、マトリックスが反転可胜なたたになるように遞択する必芁がありたす。 幞いなこずに、私たちが必芁ずする特性を備えた行列のタむプは、数孊で長い間知られおいたした。 たずえば、 コヌシヌ行列 。 この堎合、゚ンコヌド方法自䜓は、しばしばCauchy-Reed-Solomonメ゜ッドず呌ばれたす。 同じ目的で、Vandermondeマトリックスが䜿甚されるこずもあるため、Vandermonde-Reed-Solomonず呌ばれたす。

次の問題に移りたしょう。 コンピュヌタヌ内の数倀を衚すために、固定バむト数が䜿甚されたす。 したがっお、私たちのアルゎリズムでは、任意の有理数、さらには実数で自由に操䜜するこずはできたせん。 このようなアルゎリズムをコンピュヌタヌに実装するこずはできたせん。 私たちの堎合、生成マトリックスは敎数で構成されおいたすが、このマトリックスを反転するず、有理数が発生する堎合があり、コンピュヌタヌのメモリで衚珟するのは困難です。 それで、有名なガロア畑が珟堎に来たずき、私たちはその堎所に着きたした。

フィヌルズガロア


それでは、ガロア䜓ずは䜕ですか 説明甚の䟋からもう䞀床始めたしょう。 私たちは皆、自然数、合理的数、実数などの数を䜿った操䜜加算、枛算、乗算、陀算などに慣れおいたす。 ただし、通垞の数の代わりに、オブゞェクトの任意のセット有限および/たたは無限を怜蚎し、これらのセットに加算、枛算などに類䌌した操䜜を導入できたす。 実際、グルヌプ、リング、フィヌルドなどの数孊的構造は特定の操䜜が導入されるセットであり、これらの操䜜の結果は元のセットに属したす。 たずえば、自然数のセットでは、加算、枛算、乗算の暙準操䜜を導入できたす。 結果は再び自然数になりたす。 しかし、2぀の自然数を陀算するず、結果は小数になる可胜性がありたす。

フィヌルドは、加算、枛算、乗算、陀算の操䜜が指定されるセットです。 䟋は、有理数分数のフィヌルドです。 ガロア䜓-有限䜓有限数の芁玠を含む集合。 通垞、ガロア䜓は次のように瀺されたす Gfpどこで p-フィヌルド内の芁玠の数。 必芁な次元のフィヌルドを構築するためのメ゜ッドが開発されたした可胜な堎合。 このような構成の最終結果は、通垞、加算テヌブルず乗算テヌブルであり、フィヌルドの3番目の芁玠をフィヌルドの2぀の芁玠に関連付けたす。

疑問が生じるかもしれたせん-これをどのように䜿甚するのでしょうか コンピュヌタヌにアルゎリズムを実装する堎合、バむトを䜿甚するず䟿利です。 アルゎリズムは入力を取るこずができたす N゜ヌスデヌタのバむトずそれらから蚈算 K冗長バむト。 1バむトには256の異なる倀を含めるこずができるため、フィヌルドを䜜成できたす Gf28超過分を蚈算したす Kガロア䜓の算術を䜿甚したバむト。 デヌタの゚ンコヌド/デコヌド生成行列の構築、行列の反転、列による行列の乗算ぞのアプロヌチは以前ず同じです。

さお、私たちは基本から孊びたした N远加を構成するバむト K倱敗した堎合に䜿甚できるバむト。 実際のストレヌゞではどのように機胜したすか 実際のストレヌゞシステムでは、通垞、固定サむズのデヌタ​​ブロックで動䜜したす異なるシステムでは、このサむズは数十メガバむトからギガバむトたで倉化したす。 この固定ブロックは、 Nフラグメントおよび远加 Kフラグメント。

フラグメントを構築するプロセスは次のずおりです。 それぞれから1バむトを取埗したす Nオフセット0の初期フラグメント。このデヌタからK個の远加バむトが生成され、それぞれがオフセット0の察応する远加フ​​ラグメントに移動したす。このプロセスは、オフセット-1、2、3、...に察しお繰り返されたす。異なるドラむブ。 これは次のように衚すこずができたす。

画像

1぀たたは耇数のディスクに障害が発生するず、察応する倱われたフラグメントが再構築され、他のディスクに保存されたす。

理論的な郚分は埐々に終わりに近づいおいたす。リヌド゜ロモンコヌドを䜿甚しおデヌタを゚ンコヌドおよびデコヌドする基本原理が倚かれ少なかれ明確になるこずを期埅したしょう。 このトピックに関心がある堎合、以䞋の郚分では、ガロア䜓の蚈算、特定のハヌドりェアプラットフォヌムでの゚ンコヌド/デコヌドアルゎリズムの実装、および最適化手法に぀いお詳しく説明するこずができたす。

UPD トピックに関する解説からの参照 whitedruidに感謝
-「コヌディングの代数理論」、Berlekamp E.、1971
-「゚ラヌ蚂正コヌドの理論」、Mc-Williams F.、Sloan N.J.、1979
-「゚ラヌ制埡コヌドの理論ず実践」、1986幎。
-「ノむズレスコヌディングの技術。 メ゜ッド、アルゎリズム、アプリケヌション」、Morelos-Zaragoza R.、2005幎。
-「デゞタル通信システムの゚ラヌ蚂正を䜿甚したコヌディング」、クラヌクJ.、ケむンJ.、1987
-「ボヌル、グレヌティング、グルヌプのパッキング」、Conway J.N.、Sloan N.J.A.、1990
whitedruid  比范的最近、「Packing Balls、 Lattices and Groups」 ずいう 本を読みたした 。本圓に気に入りたした。
-「 代数コヌド入門 」 -MIPTの教垫であるYuri Lvovich Sagalovichの講矩。本の圢でデザむンされおいたす。
-「 玠人の芖点からのリヌド゜ロモンコヌド 」- 簡単な蚀語で曞かれおいたす。
-「 ゚ラヌを修正するコヌド 」- 簡朔に、明確に、写真付きで:)
-「 コヌディング理論に関する泚意事項 」、A。Romashchenko、A。Rumyantsev、A。Shen、2011幎。 -䞀皮の「チヌトシヌト」- 簡朔に、容量的に、しかしある皋床の準備が必芁です。
-たた、 「コヌディング理論」に関するセミナヌを無芖するこずはできたせん。これは、情報䌝送問題研究所のスタッフによっお定期的に開催されおいたす。 A.A. ロシア科孊アカデミヌのハルケビッチ」、モスクワ。 さらに-リンクを介しお-コヌディングの数孊的理論に関連するトピックに関する倚くの興味深いトピックを芋぀けるこずができたす;トピックの問題はこの分野で提起されたす。 たずえば、極および拡匵リヌド゜ロモンコヌドの順次デコヌドに぀いお 。 怜玢゚ンゞンでは、著者による蚘事をすでに芋぀けるこずができたす。

Source: https://habr.com/ru/post/J336286/


All Articles