á€á¡áá¬ááẠáááºáá±á¬ááºážááŒá áºáá¯á¶ááááºá
Redundancy codes* ááẠáá±áá¬ááá¯ááŸá±á¬ááºááŸá¯á áá¯á¶ááŒááºá
áááºáá»áááŸá¯ááᯠááá¯ážááŒáŸáá·áºáááºá¡ááœáẠááœááºáá»á°áá¬á
áá
áºáá»á¬ážááœáẠááœááºáá»ááºá
áœá¬ á¡áá¯á¶ážááŒá¯áá«áááºá Yandex ááœáẠáááºážááá¯á·ááᯠááá±á¬áá»ááºáá»á¬ážá
áœá¬ááœáẠá¡áá¯á¶ážááŒá¯ááŒáááºá á¥ááá¬á¡á¬ážááŒáá·áºá áá»áœááºá¯ááºááá¯á·áá¡ááœááºážááá¯ááºážá¡áá¬ááá¹áá¯ááá¯ááŸá±á¬ááºááŸá¯ááœáẠáá¯á¶áá°ááœá¬ážááŒááºážá¡á
á¬áž áááºáá±á¬ááºážáá¯ááºáá»á¬ážááá¯á¡áá¯á¶ážááŒá¯ááŒááºážááẠáá¯á¶ááŒááºá
áááºáá»áááŸá¯ááᯠáááááá¯ááºá
á±áá² áááºážáá±á«ááºážáá»á¬ážá
áœá¬ááᯠáááºáá¬á
á±áááºá áá»ááºáá»ááºááŒáá·áºááŒáá·áº á¡áá¯á¶ážááŒá¯áá±áá±á¬áºáááºáž áááºáá±áá±á¬áá¯ááºáá»á¬áž áááºááá¯á·á¡áá¯ááºáá¯ááºááŒá±á¬ááºáž ááŸááºážáááºážááŒááºáá¬ážá
áœá¬ áá±á¬áºááŒáá»ááºááŸá¬ á¡ááœááºááŸá¬ážáá«áááºá áá¬ážáááºááá¯áá°áá»á¬ážááẠá¡á±á¬ááºáá«á¡ááŒááºážáá»ááºážááŸáá·áº ááŒá¯á¶ááœá±á·ááááºáá«áááºá
áá»áœááºá¯ááºáá¡áááºááŸá¬ Vadim ááŒá áºááŒá®ážá Yandex ááœáẠáá»áœááºá¯ááºááẠá¡ááœááºážááá¯ááºážá¡áá¬ááá¹áá¯ááá¯ááŸá±á¬ááºááŸá¯ MDS ááᯠáá®ááœááºáá±áá«áááºá á€áá±á¬ááºážáá«ážááœááºá áááºáá±áá±á¬áá¯ááºáá»á¬áž (Reed-Solomon ááŸáá·áº LRC áá¯ááºáá»á¬áž) á áá®á¡áá¯áá®á¡ááŒá±áá¶á¡á¯ááºááŒá áºáá»á¬ážááᯠááá¯ážááŸááºážáá±á¬á áá¬ážáá¯á¶ážáá»á¬ážááŒáá·áº áá±á¬áºááŒáá«áááºá ááŸá¯ááºááœá±ážáá²á· áááºá¹áá»á¬áá²á· ááŸá¬ážáá«ážáá²á· á¡áá¯á¶ážá¡ááŸá¯ááºážááœá±ááá«áá² áááºááá¯á¡áá¯ááºáá¯ááºáááºááá¯áá¬ááᯠááŒá±á¬ááŒáááºá á¡áá¯á¶ážááœáẠYandex ááœáẠredundancy codes áá»á¬ážááá¯á¡áá¯á¶ážááŒá¯ááŒááºážáááá°áá¬áá»á¬ážááá¯ááŒá±á¬ááŒáá«áááºá
áááºá¹áá»á¬á¡áá±ážá áááºá¡áá»ááºáá»á¬ážá áœá¬ááᯠáá»áœááºá¯ááºááá·áºááœááºážá ááºážá á¬ážáááºááá¯ááºáá±á¬áºáááºáž ááá¯ááá¯áááºááŸáá¯ááºážáá±á¬áá¯ááºáá»áŸáá¯ážááá¯áá°áá»á¬ážá¡ááœáẠááá·áºááºáá»á¬ážááᯠáá±á¬áºááŒáá±ážáá«áááºá áá±á¬ááºážáá«ážááẠáááºá¹áá»á¬ááá¬ááŸááºáá»á¬ážá¡ááœáẠááááºááœááºáá±á¬áºáááºáž ááŒá¿áá¬á á¡ááŸá áºáá¬áááᯠáá¬ážáááºááá¯áá±á¬ á¡ááºáá»ááºáá®áá¬áá»á¬ážá¡ááœáẠááŒá áºáá±á¬ááŒá±á¬áá·áº á¡áá»áá¯á·áá±á¬ áááºá¹áá»á¬ááá¯ááºáᬠá¡áááá¹áá«ááºááœáá·áºááá¯áá»ááºáá»á¬ážááẠáááºážáá»ááºáááºááá¯ááºááŒá±á¬ááºážááá¯áááºáž áá»áœááºá¯ááºáááááŒá¯áááá«áááºá
* á¡ááºá¹áááááºáá¬áá¬á á¬áá±ááœááºá áááºáá±áá±á¬áá¯ááºáá»á¬ážááᯠáá»ááºáá áºáá¯ááºáá»á¬ážáᯠáááŒá¬áááá±á«áºáááºá
1. áááºáá±áá±á¬áá¯ááºáá»á¬ážá á¡ááŸá áºáá¬á
áááºáá±áá±á¬áá¯ááºáá»á¬áž á¡á¬ážáá¯á¶ážá á¡ááŸá áºáá¬áááŸá¬ á¡ááœááºááá¯ážááŸááºážáá«áááº- á¡ááŸá¬ážá¡ááœááºážáá»á¬áž ááŒá áºáá±á«áºáá¬áá±á¬á¡áá« (áá áºááºáá»áá¯á·ááœááºážááŸá¯á áá±áá¬ááœáŸá²ááŒá±á¬ááºážááŸá¯ á¡ááŸá¬ážá¡ááœááºážáá»á¬áž á áááºááŒáá·áº) áá±áá¬ááᯠááááºážáááºáž (ááá¯á·ááá¯ááº) ááá¯á·ááœáŸááºááŒááºáž)á
* redundancy codes á¡áá»á¬ážá á¯ááœááºá data ááᯠn data blocks áá»á¬ážá¡ááŒá Ạááá¯ááºážááŒá¬ážáá¬ážááŒá®áž m blocks of redundancy codes áá»á¬ážááᯠáá±ááœááºááŒá®áž á á¯á á¯áá±á«ááºáž n + m blocks áá»á¬ážááᯠááŒá áºáá±á«áºá á±áá«áááºá n + m ááá±á¬ááºáá áºá áááºáá áºááá¯ááºážááá¯áᬠá¡áá¯á¶ážááŒá¯á áá±áá¬ááá±á¬ááºáá»á¬ážááᯠááŒááºáááºááá°ááá¯ááºááá·áº áááºážáááºážááŒáá·áº áááºáá±áá±á¬áá¯ááºáá»á¬ážááᯠáááºáá±á¬ááºáá¬ážáááºá ááá¯á·áá±á¬ááºá áá»áœááºá¯ááºááá¯á·ááẠblock redundancy codes áá»á¬ážááá¯áᬠá ááºážá á¬ážáá«áááºá ááá¯ááá¯áááºááŸá¬ áá±áá¬ááᯠblocks áá»á¬ážá¡ááŒá Ạááá¯ááºážááŒá¬ážáá¬ážáá±á¬á
áá±áᬠn blocks á¡á¬ážáá¯á¶ážááᯠááŒááºáááºááá°áááºá ááá·áºááœáẠn-1 áá¯á¶ážáá¬ááŸáááŒááºážááŒáá·áº n blocks áá»á¬ážááᯠááááŸáááá¯ááºáá±á¬ááŒá±á¬áá·áº (á€ááá á¹á ááœááºá áááºááẠáá«ážááœáŸá¬áá±á¬ 1 blocks ááᯠáá°ááááºááŒá áºáá«áááºá áá±")á n áá»áááºážáá¯ááºááœáẠn + m áá¯á¶ážáá»á¬ážááẠáá±áá¬á¡á¬ážáá¯á¶ážááᯠááŒááºáááºááá°ááẠáá¯á¶áá±á¬ááºáá«ááá¬ážá áááºážááẠáááºáá±áá±á¬áá¯ááºá¡áá»áá¯ážá¡á á¬ážáá»á¬ážáá±á«áºááœááºáá°áááºáááºá á¥ááá¬á Reed-Solomon áá¯ááºáá»á¬ážááẠááá·áºá¡á¬áž arbitrary n blocks áá»á¬ážá¡áá¯á¶ážááŒá¯á áá±áá¬á¡á¬ážáá¯á¶ážááᯠááŒááºáááºááá°ááœáá·áºááŒá¯áá±á¬áºáááºáž LRC áááºáá±áá±á¬áá¯ááºáá»á¬ážááẠá¡ááŒá²áááºážáááŸááá«á
áá±áá¬ááá¯ááŸá±á¬ááºááŸá¯
áá±áá¬ááá¯ááŸá±á¬ááºááŸá¯á áá áºáá»á¬ážááœáẠá ááºážáááºážá¡ááá¯ááºážá áá±áá¬ááááºááá¯á·ááŒááºážááŸáá·áº áááºáá±áá±á¬áá¯ááºáá¯á¶ážáá áºáá¯á á®ááᯠáá®ážááŒá¬ážáá áºáá áºáá¯ááá¯á· áá±ážááŸááºáá¬ážáááºá ááá¯á·áá±á¬ááºá ááááºáááá¯áá áºáá áºáᯠáá»ááºááœááºáá«áá áá°áááºážáá±áá¬ááᯠááŒááºáááºááá°ááŒá®áž áááºááá¯ááºáá±ážáááºá áá áºáá»áááºáááºážááŸá¬ áá áºá¡áá»á¬ážá¡ááŒá¬áž áá»ááºááœá¬ážáááºáá±á¬áẠáá±áá¬ááᯠááŒááºáááºááá°ááá¯ááºáá«áááºá
áá±áá¬ááœáŸá²ááŒá±á¬ááºážááŒááºáž
á¡á¬ážááá¯ážáááá±á¬ ááœááºáááºáá áºáá¯á០áá±áá¬áá»á¬ážááᯠáá¯á¶ááŒááºá áááºáá»á áœá¬ áá±ážááá¯á·áááºá¡ááœáẠáááºáá±áá±á¬áá¯ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá ááá¯á·ááœáŸááºáá±á¬áá±áá¬ááᯠááá±á¬ááºáá»á¬ážá¡ááŒá Ạááá¯ááºážááŒá¬ážáá¬ážááŒá®áž áááºážááá¯á·á¡ááœáẠáááºáá±áá±á¬áá¯ááºáá»á¬ážááᯠááœááºáá»ááºáá«áááºá áá±áá¬ááá±á¬ááºáá»á¬ážááŸáá·áº áááºáá±áá±á¬áá¯ááºáá¯á¶ážáá»á¬áž ááŸá áºáá¯áá¯á¶ážááᯠááœááºáááºáá±á«áºááœáẠááá¯á·ááœáŸááºáá«áááºá ááŸá¬ážááœááºážáá±á¬ááá±á¬ááºáá»á¬ážááœáẠá¡ááŸá¬ážá¡ááœááºážáá»á¬ážááŒá áºáá±á«áºáá«á (á¡áá»áá¯á·áá±á¬áá¯ááºááœááºá¡áá±á¡ááœááºá¡áá)á áá±áá¬áá»á¬ážááᯠá¡ááŸá¬ážá¡ááœááºážáááŸááá² ááœááºáááºááŸáááá·áº áá±ážááá¯á·ááá¯ááºáá±ážáááºá á¥ááá¬á¡á¬ážááŒáá·áº Reed-Solomon áá¯ááºáá»á¬ážááᯠoptical áááºááœááºáá±ážááá¯ááºážáá»á¬ážááŸáá·áº ááŒáá¯ááºáá¯áááºááœááºáá±ážáá»á¬ážááœáẠáá±áá¬áá±ážááá¯á·ááẠá¡áá¯á¶ážááŒá¯áááºá
* Ethernet ááœááºáááºáá»á¬ážááœáẠáá±áá¬áá±ážááá¯á·ááŒááºážá¡ááœáẠááœááºáá»ááºá áœá¬á¡áá¯á¶ážááŒá¯ááá·áº Hamming áá¯ááºáá»á¬ážááŸáá·áº CRC áá¯ááºáá»á¬ážáá²á·ááá¯á·áá±á¬ áá±áá¬áá»á¬ážááᯠá¡áá¯á¶ážáá»á¬ážá¡ááŒá Ạááá¯ááºážááŒá¬ážááá¬ážáá±á¬ áááºáá±áá±á¬áá¯ááºáá»á¬ážáááºáž ááŸááá«áááºá áááºážááá¯á·ááẠá¡ááŸá¬ážááŒááºáááºááŒááºážá¡ááœáẠáá¯ááºáá»á¬ážááŒá áºáááºá áááºážááá¯á·ááẠá¡ááŸá¬ážáá»á¬ážááᯠááŸá¬ááœá±ááœá±á·ááŸáááẠááŸáá·áº áááºážááá¯á·ááᯠááŒááºááẠáá®ááá¯ááºážáá¯ááºáá¬ážááŒááºážááŒá áºááẠ( Hamming áá¯ááºááẠá¡ááŸá¬ážá¡ááœááºážáá»á¬ážááᯠáá áºá áááºáá áºááá¯ááºážáááºážááŒááºááŒááºážááá¯áááºáž ááœáá·áºááŒá¯áááº)á
2. ááááº-ááŸá±á¬ááá¯ááºáá¯ááºáá»á¬áž
Reed-Solomon áá¯ááºáá»á¬ážááẠ1960 áá¯ááŸá áºáá»á¬ážá¡ááœááºáž áá®ááœááºáá²á·áá±á¬ á¡áá¯á¶ážáá»á¬ážáá¯á¶áž redundancy codes áá»á¬ážáá²á០áá áºáá¯ááŒá áºááŒá®áž compact disc áá»á¬áž á¡ááŒá±á¬ááºá¡ááŒá¬áž áá¯ááºáá¯ááºáááºá¡ááœáẠ1980s ááœáẠááááá¯á¶áž á¡áá¯á¶ážáá»á¬ážáá«áááºá
Reed-Solomon áá¯ááºáá»á¬ážááᯠáá¬ážáááºáááºá¡ááœáẠá¡ááááá±ážááœááºážááŸá
áºáá¯ááŸááá«áááºá 1) redundancy áá¯ááºáá¯á¶ážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á áá±áá¬áá»á¬áž ááŒááºáááºááá°áááºážá áá°ááá¯á·á¡ááœáẠá¡ááŒá±ááŸá¬ááŒáá¡á±á¬ááºá
ááá¯ážááá¯ážááŸááºážááŸááºážááŒá±á¬áááẠn=6 áá²á· m=4 ááá¯á· áááºáá±á¬ááºážáá°ááá«áááºá á¡ááŒá¬ážá¡á
á®á¡á
á¥áºáá»á¬ážááᯠááŸááºááœá²á á
ááºážá
á¬ážáááºá
áááºáá±áá±á¬áá¯ááºáá¯á¶ážáá»á¬ážááᯠáááºáá®ážáááºáž
áááºáá±áá±á¬áá¯ááºáá»á¬ážá ááá±á¬ááºáá áºáá¯á á®ááᯠá¡ááŒá¬ážá¡áá¬áá»á¬ážááŸáá·áº áá®ážááŒá¬ážáá±ááœááºáááºá ááá±á¬ááºáá áºáá¯á á®ááᯠáá±ááœááºááẠn data blocks á¡á¬ážáá¯á¶ážááᯠá¡áá¯á¶ážááŒá¯áá«áááºá á¡á±á¬ááºáá±á¬áºááŒáá«áá¯á¶ááœááºá X1-X6 ááẠáá±áá¬ááá±á¬ááºáá»á¬ážááŒá áºááŒá®áž P1-P4 ááẠáááºáá±áá±á¬áá¯ááºáá¯á¶ážáá»á¬ážááŒá áºáááºá
áá±áá¬ááá±á¬ááºáá»á¬ážá¡á¬ážáá¯á¶ážááẠá¡ááœááºá¡á á¬ážáá°áá®ááááºááŒá áºááŒá®áž áá»áááºááŸáááŸá¯ááœáẠáá¯ááá áºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá ááááºáááºáá±áá±á¬ áá¯ááºáá¯á¶ážáá»á¬ážááẠáá±áá¬ááá±á¬ááºáá»á¬ážáá²á·ááá¯á· á¡ááœááºá¡á á¬ážáá°áá®áá«áááºá áá±áá¬ááááºááá¯á·ááŒááºážá¡á¬ážáá¯á¶ážááᯠá áá¬ážáá¯á¶ážáá»á¬ážá¡ááŒá Ạááá¯ááºážááŒá¬ážáá¬ážááẠ(á¥ááá¬á 16 bits)á áá±áá¬ááá±á¬ááºáá»á¬ážááᯠk á áá¬ážáá¯á¶ážáá»á¬ážááŒáá·áº ááœá²áá¬ážáááºááá¯áá«á áá¯á·á ááá¯á·áá±á¬áẠáááºáá±áá±á¬áá¯ááºáá¯á¶ážá¡á¬ážáá¯á¶ážááᯠk á áá¬ážáá¯á¶ážáá»á¬ážá¡ááŒá Ạááá¯ááºážááŒá¬ážáá«áááºá
redundancy block áá áºáá¯á á®á i-th á áá¬ážáá¯á¶ážááᯠáá±ááœááºáááºá data blocks á¡á¬ážáá¯á¶ážá i-th á áá¬ážáá¯á¶ážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá«áááºá áááºážááá¯á·ááᯠá¡á±á¬ááºáá«áá¯á¶áá±áááºážá¡ááá¯ááºáž ááœááºáá»ááºáááºááŒá áºáááºá
á€áá±áá¬ááœáẠx áááºááá¯ážáá»á¬ážááẠáá±áá¬ááá±á¬ááºáá»á¬ážá á áá¬ážáá¯á¶ážáá»á¬ážááŒá áºáááºá p ááẠáááºáá±áá±á¬áá¯ááºáá¯á¶ážáá»á¬ážá á áá¬ážáá¯á¶ážáá»á¬ážááŒá áºáááºá alphaá betaá gamma ááŸáá·áº delta á¡á¬ážáá¯á¶ážááẠi á¡á¬ážáá¯á¶ážá¡ááœáẠáá°áá®áá±á¬ á¡áá°ážááœá±ážáá»ááºáá¬ážáá±á¬ áá¶áá«ááºáá»á¬ážááŒá áºáááºá á€áááºááá¯ážáá»á¬ážá¡á¬ážáá¯á¶ážááẠáá¬áááºáá¶áá«ááºáá»á¬ážááá¯ááºáá±á¬áºáááºáž Galois á¡ááœááºáááŒááºá ááºáá»á¬áž á áááºáááºááŸá¯áá»á¬áž +á -á *á / áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááẠáá»áœááºá¯ááºááá¯á·á¡á¬ážáá¯á¶ážááŸáá·áºáááºážááŸá®ážáááºááá¯ááºáá±á¬áºáááºáž Galois áááŒááºá ááºáá»á¬ážááœáẠááááºáááºáá¬ážáá±á¬ á¡áá°ážáá¯ááºáá±á¬ááºááŸá¯áá»á¬ážá áááºááœááºážá
Galois áááºáááºáá»á¬ážááẠá¡áááºááŒá±á¬áá·áº ááá¯á¡ááºááááºážá
á¡áá¬á¡á¬ážáá¯á¶ážááá¯ážááŸááºážáá¯á¶ááááº- áá»áœááºá¯ááºááá¯á·ááẠdata áá»á¬ážááᯠblocks áá»á¬ážá¡ááŒá áºááœá²áá¬á blocks áá»á¬ážááá¯á áá¬ážáá¯á¶ážáá»á¬ážá¡ááŒá áºáá»áœááºá¯ááºááá¯á·ááẠredundancy code blocks áá áá¬ážáá¯á¶ážáá»á¬ážááá¯áá±ááœááºááŒááẠ- áá«ááá¯á·ááẠredundancy code blocks áá»á¬ážááá¯áááŸááááºá áá±áá°áá»á¡á¬ážááŒáá·áº áááºážááẠáááºááá¯á·á¡áá¯ááºáá¯ááºáááºá ááá¯á·áá±á¬áº áá¬ááºáááºááẠá¡áá±ážá áááºá¡áá»ááºáá»á¬ážáá²ááœáẠááŸááá±áááº-
- á¡áááºááœááºáá±á¬áºááŒáá¬ážááá·áºá¡ááá¯ááºážá áá»áœááºá¯ááºááá¯á·áá¥ááᬠ16 bits ááœáẠá áá¬ážáá¯á¶ážá¡ááœááºá¡á á¬ážááᯠáá¯á¶áá±áááºááŸááºáá¬ážáááºá Reed-Solomon áá¯ááºáá»á¬ážá¡ááœáẠá¡áááºáá±á¬áºááŒáá« áá±á¬áºááŒá°áá¬áá»á¬ážááẠáá¬ááẠááááºážááŒáá·áºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá·áºá¡áá« p ááœááºáá»ááºááŒááºážá ááááºááẠááŸááºáááºáá±á¬ á¡ááœááºá¡á á¬áž á áá¬ážáá¯á¶ážááᯠá¡áá¯á¶ážááŒá¯á ááá¯ááºá á¬ážááŒá¯ááá¯ááºáááºááá¯ááºáá±á
- áá±áá¬ááᯠááŒááºáááºááá°ááá·áºá¡áá«á á¡áááºáá±á¬áºááŒáá« áá±á¬áºááŒá°áá¬áá»á¬ážááẠáá±áá¬ááᯠááŒááºáááºááá°áááºá¡ááœáẠááŒá±ááŸááºážáááá·áº áá®áá»áŸááŒááºážá áá áºáá áºáá¯á¡ááŒá ẠáááºááŸááºáááºááŒá áºáááºá ááŒá±ááŸááºážáá»ááºáá¯ááºáááºážá ááºá¡ááœááºážá ááááºážááŒáá·áºáá»á¬ážááᯠáá áºáá¯ááŸáá·áºáá áºáᯠááá¯ááºážááŒá¬ážááẠááá¯á¡ááºááŒá®áž ááœááºáá»á°áá¬ááŸááºáá¬ááºááœáẠáááá»á áœá¬ááá¯ááºá á¬ážááŒá¯ááááá¯ááºáá±á¬ á¡á á áºá¡ááŸááºá¡áá±á¡ááœááºááᯠááŒá áºáá±á«áºá á±áá«áááºá
á€ááŒá¿áá¬áá»á¬ážááẠReed-Solomon áá¯ááºáá»á¬ážá¡ááœáẠááááºážááŒáá·áºáá»á¬ážá¡áá¯á¶ážááŒá¯ááŒááºážááᯠááá·áºáá¬ážáááºá ááŒá¿áá¬áááŒá±ááŸááºážáá»ááºááẠáá°áááºážááŒá áºáááºá á¡á±á¬ááºáá«á¡ááá¯ááºáž áá±á¬áºááŒááá¯ááºáááº- ááá¯á¡ááºáá±á¬ á¡ááŸáẠ(á¥ááá¬á 16 bits) á áá¬ážáá¯á¶ážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á ááá¯ááºá á¬ážááŒá¯ááá¯ááºááá·áº á¡áá°ážáá¶áá«ááºáá»á¬ážááŸáá·áº áá¯ááºáá±á¬ááºáá»ááºá¡á¬ážáá¯á¶ážááᯠáá¯ááºáá±á¬ááºááŒááºážá áááẠ(ááá¯á·á¡ááŒááºá á á¡áá¯áẠá á¡ááŒáŸá±á¬áẠá ááááºáž ) ááá¯áááºáž ááá¯á¡ááºáá±á¬ á¡ááŸáẠá áá¬ážáá¯á¶ážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á ááœááºáá»á°áá¬ááŸááºáá¬ááºááœáẠáááºááŒáá«áááºá
ááá¯áá²á·ááá¯á·áá±á¬ "á¡áá°áž" ááááºážáá»á¬ážááᯠáááºá¹áá»á¬ááá¬ááŒáá·áº á¡áá»áááºá¡áá±á¬áºááŒá¬ áá±á·áá¬áá²á·ááŒá®áž áááºážááá¯á·ááᯠáááºáááºáá»á¬ážáá¯áá±á«áºáááºá á¡ááœááºáá áºáá¯ááẠáááºážááá¯á·á¡ááœáẠáááºááŸááºáá¬ážáá±á¬ áá±á«ááºážááŒááºážá áá¯ááºááŒááºážá ááŒáŸá±á¬ááºááŒááºáž ááŸáá·áº ááá¯ááºážááŒá¬ážááŒááºážááá¯ááºáᬠáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážáá«ááŸááá±á¬ ááŒááºá ááºá¡á á¯áá áºáá¯ááŒá áºáááºá
Galois* á¡ááœááºáá»á¬ážááẠáá¯ááºáá±á¬ááºáá»ááºáá áºáá¯á á®á áá°ážááŒá¬ážáá±á¬áááẠ(+, -, *, /) á¡ááœááºáá»á¬ážá áááºááá·áºááŒááºá ááºááŸá áºáá¯á¡ááœááºáááᯠáááºáááºáá»á¬ážááŒá áºáááºá Galois á¡ááœááºáá»á¬ážááᯠ2:2á 4á 8á 16 á áááºááŒáá·áº áá«áá«ááŸááá±á¬ ááááºážáá»á¬ážá¡ááœáẠáááºáá±á¬ááºááá¯ááºááẠ(ááááºáá±á¬á· áááºááá·áº prime number p á áá«áá«áá»á¬ážááŒá áºáááºá ááá¯á·áá±á¬áº áááºááœá±á·ááœáẠáá»áœááºá¯ááºááá¯á·ááẠ2 áá áœááºážá¡á¬ážáá»á¬ážááá¯áᬠá áááºáááºá á¬ážáááº)á á¥ááá¬á¡á¬ážááŒáá·áºá 16-bit á áá¬ážáá¯á¶ážáá»á¬ážá¡ááœááºá á€ááẠ65 ááŒááºá ááºáá»á¬ážáá« á ááºáá±á¬á¡ááœááºáá áºáá¯ááŒá áºááŒá®ážá áá áºá á¯á¶áá áºáá¯á á®á¡ááœááºáááºááá·áºáá¯ááºáá±á¬ááºáá»áẠ(+á -á *á /) ááá¯áááá¯ááŸá¬ááœá±ááá¯ááºáááºá á¡áááºáá«áá®áá»áŸááŒááºážáá»á¬ážá០xá pá alphaá betaá gammaá delta áááºááá¯ážáá»á¬ážááᯠááœááºáá»ááºáááºá¡ááœáẠGalois á¡ááœááºá á¡á áááºá¡ááá¯ááºážáá»á¬ážááᯠááá·áºááœááºážá ááºážá á¬ážáááºááŒá áºáááºá
ááá¯á·ááŒá±á¬áá·áºá ááá·áºáá»á±á¬áºáá±á¬ááœááºáá»á°áá¬áááá¯ááááºáá áºáá¯áá±ážáá¬ážááŒááºážááŒáá·áº áá»áœááºá¯ááºááá¯á·ááœáẠáááºáá±áá±á¬áá¯ááºáá¯á¶ážáá»á¬ážááᯠáááºáá±á¬ááºááá¯ááºááá·áº áá®áá»áŸááŒááºážá áá áºáá áºáá¯ááŸááááºá áá®áá»áŸááŒááºážá áá áºáá áºáá¯áááºážááᯠá¡áá¯á¶ážááŒá¯á áááºááẠáá±áá¬ááŒááºáááºááá°ááŒááºážááᯠáá¯ááºáá±á¬ááºááá¯ááºáááºá
* á€áááºááŸá¬ áááºážáá»ááºáá±á¬ á¡áááá¹áá«ááºááá¯ááºáá±á¬áºáááºáž áá±á¬áºááŒáá»ááºáá¬ááŒá áºáááºá
áá±áá¬áááºáááºáááºáž
n + m ááá±á¬ááºá¡áá»áá¯á· áá»á±á¬ááºáá¯á¶ážáá±áá»áááºááœáẠááŒááºáááºáá°áá±á¬ááºááẠááá¯á¡ááºáááºá áááºážááá¯á·ááẠáá±áá¬ááá±á¬ááºáá»á¬ážááŸáá·áº áááºáá±áá±á¬áá¯ááºáá¯á¶ážáá»á¬áž ááŸá áºáá»áá¯ážáá¯á¶áž ááŒá áºááá¯ááºáááºá áá±áá¬ááá±á¬ááºáá»á¬ážááŸáá·áº/ááá¯á·ááá¯áẠáááºáá±áá±á¬áá¯ááºáá¯á¶ážáá»á¬áž áááŸáááŒááºážááẠá¡áááºáá±á¬áºááŒáá« áá®áá»áŸááŒááºážáá»á¬ážááœáẠáááºááá¯ááºáᬠx ááŸáá·áº/ááá¯á·ááá¯áẠp variable áá»á¬ážááᯠáááááá¯ááºáᯠááá¯ááá¯áá«áááºá
Reed-Solomon áá¯ááºáá»á¬ážá¡ááœáẠáá®áá»áŸááŒááºážáá»á¬ážááᯠá¡ááºááºáá¬á áá®áá¬á áááºáá¬á ááŒá áºááá»áœááºážáá±á«áºááŸá áááºááá¯ážáá»á¬ážááẠááááºážáá±áá»á¬ážá áááŸáááá¯ááºáá±á¬ ááá±á¬ááºáá»á¬ážááŸáá·áº áááºááá¯ááºáá±á¬ x ááŸáá·áº p á¡á¬ážáá¯á¶ážááᯠááááºážááŸááºáá»á¬ážá¡ááŒá ẠááááŸáááá¯ááºááŒá®áž áá»áẠx ááŸáá·áº p ááá¯á·ááᯠáá®áá»áŸááŒááºážá áá áºáá áºáá¯á¡ááŒá ẠááŸá¯ááŒááºááá¯ááºáá«áááºá áááá
á¥ááá¬á¡á¬ážááŒáá·áºá data blocks 1á 2á 3 ááŸáá·áº redundancy code block 2 ááᯠááááá¯ááºáá«á ááá¯á·áá±á¬áẠi-th á áá¬ážáá¯á¶ážá¡á¯ááºá á¯á¡ááœáẠá¡á±á¬ááºáá«áá®áá»áŸááŒááºážá áá áºááŸááá«ááẠ(á¡áááºááááá»á¬ážááᯠá¡áá®áá±á¬ááºááŒáá·áº ááŸááºáá¬ážáá¬ážáááº)á
áá»áœááºá¯ááºááá¯á·ááœáẠá¡áááºááá 4 áá¯áá«áá±á¬ áá®áá»áŸááŒááºáž 4 áá¯ááŸááá±á¬ á áá áºáá áºáá¯ááŸááááºá ááá¯ááá¯áááºááŸá¬ áááºážááᯠááŒá±ááŸááºážááá¯ááºááŒá®áž áá±áá¬ááᯠááŒááºáááºááá°ááá¯ááºáááºá
á€áá®áá»áŸááŒááºážá áá áºá០Reed-Solomon áá¯ááºáá»á¬áž (n data blocksá m redundancy code blocks) áá»á¬ážá¡ááœáẠáá±áá¬ááŒááºáááºááá°ááŒááºážá¡ááŒá±á¬ááºáž áá±á¬ááºáá»ááºáá»á¬ážá áœá¬ áá±á¬ááºáá»ááºáá»áááº-
- m blocks ááá¯á·ááá¯áẠá¡áááºážáááºáᬠáá¯á¶ážááŸá¯á¶ážááœá¬ážáá«á áá±áá¬ááᯠááŒááºáááºááá°ááá¯ááºáá«áááºá m+1 ááá¯á·ááá¯áẠááá¯á·áááºááá¯áá±á¬ blocks áá»á¬áž áá»á±á¬ááºáá¯á¶ážááœá¬ážáá«á áá±áá¬ááᯠááŒááºáááºááá°ááá¯ááºáááºááá¯ááºáá«- m áá®áá»áŸááŒááºážá áá áºá¡á¬áž m+1 á¡áááºááááá»á¬ážááŒáá·áº ááŒá±ááŸááºážááẠáááŒá áºááá¯ááºáá«á
- áá±áá¬ááá±á¬ááºáá áºáá¯áááºááᯠááŒááºáááºááá°áááºá áááºááẠáá»ááºááŸááá±á¬ ááá±á¬ááºáá»á¬ážáá²á០n ááá¯á¡áá¯á¶ážááŒá¯ááẠááá¯á¡ááºááŒá®áž áááºáá±áá±á¬áá¯ááºáá»á¬ážááá¯áááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáá«áááºá
áááŒá¬ážáá¬ááááá¯á· ááá¯áá±ážáá²á
á¡áááºáá±á¬áºááŒáá« áá±á¬áºááŒáá»ááºááœááºá á ááºážá á¬ážááẠáááºá¹áá»á¬ááœáẠááá¯ááá¯áááºááŸáá¯ááºážá áœá¬ ááá¯ážááŸááºááẠááá¯á¡ááºááá·áº á¡áá±ážááŒá®ážáá±á¬ ááá á¹á áááºáá»á¬ážááᯠáá»áœááºá¯áẠááŸá±á¬ááºááŒááºáá«áááºá á¡áá°ážáááŒáá·áºá áá»áœááºá¯ááºááẠá¡á±á¬ááºáá« á¡ááŒá±á¬ááºážáá»á¬ážááᯠáá¬á០áááŒá±á¬áá« á
- Reed-Solomon áá¯ááºáá»á¬ážá¡ááœáẠáá®áá»áŸááŒááºážá áá áºááœáẠá¡áááºááááá»á¬áž áá±á«ááºážá ááºááŸá¯ (m áááºáááá¯) á¡ááœáẠ(áá°ážááŒá¬ážáá±á¬) á¡ááŒá±áá áºáᯠááŸáááá«áááºá á€ááá¯á¡ááºáá»ááºá¡áá±á«áºá¡ááŒá±áá¶á á¡ááºááºáá¬á áá®áá¬á áááºáá¬ááŸáá·áº ááŒá áºááá»áœááºážáá±á«áºáá±áááá¯á·á áááºááá¯ážáá»á¬ážááᯠááœá±ážáá»ááºáá¬ážáááºá
- áá®áá»áŸááŒááºážá áá áºáá áºáá¯ááẠá¡ááá¯á¡áá»á±á¬ááºáááºáá±á¬ááºááá¯ááºáááẠ(áááºááá·áºááá±á¬ááºáá»á¬ážááááŸáááá¯ááºááá·áºá¡áá±á«áºáá°áááºá) ááŸáá·áº ááŒá±ááŸááºážááá¯ááºááááºá
- Galois á¡ááœááºáá áºáá¯áááºáá±á¬ááºáááºááá¯á¡ááºáááº- áá±ážáá¬ážáá±á¬á áá¬ážáá¯á¶ážá¡ááœááºá¡á á¬ážá¡ááœááºá áááºááá·áºááŒááºá ááºááŸá áºáá¯á¡ááœááºáááᯠ(+, -, *, /) ááá¯ááŸá¬ááœá±ááá¯ááºáááºááŒá áºáááºá
áá±á¬ááºážáá«ážáá¡áá¯á¶ážááœáẠá€á¡áá±ážááŒá®ážáá±á¬ááá á¹á áááºáá»á¬ážááŸáá·áºáááºáááºáá±á¬ á á¬áá±ááá¯ážáá¬ážáá»ááºáá»á¬ážááŸááááºá
n ááŸáá·áº m ááœá±ážáá»ááºááŸá¯
áááºááœá±á·ááŸá¬ n áá²á· m ááᯠáááºááá¯ááœá±ážáá»ááºááá²á áááºááœá±á·ááœááºá áá±áá¬ááááºážáááºážááŸá¯á áá áºáá»á¬ážááœáẠáá±áá¬ááœááºáá»á¬ážáá»áœá±áá¬áááºá¡ááœáẠáááºáá±áá±á¬áá¯ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá¬ážáá±á¬ááŒá±á¬áá·áº m ááᯠá¡ááŒá²áááºáž n áááºáááºážá¡á±á¬áẠááœá±ážáá»ááºáá¬ážáááºá áááºážááá¯á·á áááá»áá±á¬áááºááá¯ážáá»á¬ážááẠá¡áá«á¡áááºá¡áá»ááºáá»á¬ážá áœá¬áá±á«áºááœááºáá°áááºáááº-
- áá±áá¬ááá¯ááŸá±á¬ááºááŸá¯ááá¯á¶ááŒááºá áááºáá»áá ááá¯ááŒá®ážáá±á ááŸááºáááºááá¯ááºáá±á¬ disk áá»ááºááœááºá¡áá±á¡ááœáẠááá¯áá»á¬ážáá±á ááá¯ááá¯áááºááŸá¬á áá¯á¶ááŒááºááá¯ááºááŸá¯ ááŒáá·áºáá¬ážáá±ááŒá áºáááºá
- áááá¯á¡ááºáá±á¬á·áá±á¬ ááá¯ááŸá±á¬ááºááŸá¯á m/n á¡áá»áá¯áž ááá¯ááŒáá·áºáá±á ááá¯ááŸá±á¬ááºááŸá¯ áááºáá±ááá¯ááºááŸá¯ ááá¯áá»á¬ážáá±áá±á á áá áºá ááá¯á á»á±ážááŒá®ážáá± ááŒá áºáááá·áºáááºá
- áá¯ááºáá±á¬ááºáá»áááºááᯠáá±á¬ááºážááá¯áá«á áá±á«ááºážááẠn + m ááŒá®ážáá±á áá±á¬ááºážááá¯áá»ááºáá»á¬ážá¡ááœáẠáá¯á¶á·ááŒááºáá»áááºááá¯ááŒá¬áá±ááŒá áºáááºá áá±áá¬ááá¯áááºááŸá¯ááŒááºáž (ááŒááºáááºááá°á ááºá¡ááœááºáž) ááœá²ááŒá¬ážáá±á¬áá áºáá»á¬ážááœááºááááºážáááºážáá¬ážááá·áº n ááá±á¬ááºáá»á¬ážááá¯áááºááẠááá¯á¡ááºáá±á¬ááŒá±á¬áá·áº á á¬áááºáá»áááºááᯠá¡ááŸá±ážáá¯á¶ážáá áºá áááºááŸááºáá±ážáááºááŒá áºáááºá
ááá¯á·á¡ááŒááºá DC á¡áá»á¬ážá¡ááŒá¬ážááœáẠáá±áá¬ááááºážáááºážááŒááºážááẠn ááŸáá·áº m ááœá±ážáá»ááºááŸá¯á¡áá±á«áº áááºáá±á¬ááºážááá·áºáááºáá»ááºáá»á¬áž áá»ááŸááºáá¬ážáá«áááº- 1 DC ááá¯ááááºáá¬ážáá«áá áá±áá¬ááᯠáááºáááºáááºááŸá¯ááá¯ááºááá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá 3 DC ááœáẠáá±áá¬ááᯠááááºážáááºážáá±á¬á¡áá«ááœááºá á¡á±á¬ááºáá«á¡ááŒá±á¡áá±ááŸáá·áº ááá¯ááºáá®ááááº- m >= n/2á ááá¯á·ááá¯ááºáá«á 1 DC ááá¯ááááºáá¬ážáá±á¬á¡áá«ááœáẠáá±áá¬áááºááẠááááá¯ááºááá·áº á¡ááŒá±á¡áá±áá»áá¯ážááŸáááá¯ááºáááºá
3. LRC - Local Reconstruction Codes
Reed-Solomon áá¯ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á áá±áá¬ááŒááºáááºááá°áááºá áááºááẠn arbitrary data blocks ááᯠá¡áá¯á¶ážááŒá¯ááá«áááºá áá»áá¯ážáá²á·áá±áá±á¬áá áºáá áºáá¯áá±á«áºááœááºáá±áá¬ááá¯ááŒááºáááºááá°áááºá ááŒáá·áºáá±áá¬ážáá±á¬áá±áá¬ááááºážáááºážááŸá¯á áá áºáá»á¬ážá¡ááœááºá¡ááœááºáááá¬áááºááŸá¬ážáá±á¬á¡á¬ážáááºážáá»ááºáá áºáá¯ááŒá áºáááºá á¡ááŒá±á¬ááºážááŸá¬á áááºáááºá¡ááŒá¬ážá¡áá»á¬ážá á¯áá¶ááŸáá±áá¬áá»á¬ážááá¯áááºááŸá¯áááºá disks ááŸáá·áº network ááœááºááŒá®ážáá¬ážáá±á¬á¡ááá¯áá±á¬ááºážáááºááá¯áááºáá®ážááá¯ááºáá±á¬ááŒá±á¬áá·áºááŒá áºáááºá
á¡ááŒá áºáá»á¬ážáá¯á¶áž á¡ááŸá¬ážáá»á¬ážááẠáá áºáá áºáá¯á áá»áá¯á·ááœááºážáá»áẠááá¯á·ááá¯áẠáá áºáá áºáá¯á áááºááá¯ááŒááºážááŒá±á¬áá·áº áá±áá¬ááá±á¬ááºáá áºáá¯á áááºááŸááºážááá®ááá¯ááºááŸá¯ááŒá áºáááºá ဠ(á¡áá¯á¶ážá¡áá»á¬ážáá¯á¶áž) ááá á¹á ááœáẠáá±áá¬ááŒááºáááºááá°ááŒááºážá¡ááœáẠááá¯áá»áŸá¶áá±áá±á¬áááºááᯠáá áºáááºážáááºážááŒáá·áº áá»áŸá±á¬á·áá»ááẠááŒá áºááá¯ááºáá«ááá¬ážá áááºáá¯ááºááá¯ááºáááºááŸá¬- á€áááºááœááºáá»ááºá¡ááœáẠá¡áá°ážáá®ážááá·áº LRC áááºáá±áá±á¬áá¯ááºáá»á¬ážááŸááá«áááºá
LRC (Local Reconstruction Codes) áá»á¬ážááẠWindows Azure Storage ááœáẠá¡áá¯á¶ážááŒá¯áááºá¡ááœáẠMicrosoft á០áá®ááœááºáá²á·áá±á¬ áááºáá±á¬ááºážáá¯ááºáá»á¬ážááŒá áºáááºá LRC á á áááºáá°ážááẠáááºááá¯ááºááá»áŸ ááá¯ážááŸááºážáááº- áá±áá¬ááááºááá¯á·ááŒááºážá¡á¬ážáá¯á¶ážááᯠá¡á¯ááºá á¯ááŸá áºá ᯠ(ááá¯á·ááá¯áẠááá¯á·áááºááá¯á) ááœá²áᬠá¡á¯ááºá á¯áá áºáá¯á á®á¡ááœáẠáááºáá±áá±á¬áá¯ááºáá¯á¶ážáá»á¬ážá áá áºá áááºáá áºááá¯ááºážááᯠáá®ážááŒá¬ážá á®áááºáá«á ááá¯á·áá±á¬áẠá¡áá»áá¯á·áá±á¬ redundancy code blocks áá»á¬ážááᯠdata blocks áá»á¬ážá¡á¬ážáá¯á¶ážááᯠá¡áá¯á¶ážááŒá¯ááŒá®áž (LRC ááœáẠáááºážááá¯á·ááᯠglobal redundancy codes áá»á¬ážáᯠáá±á«áºáááº) ááŸáá·áº á¡áá»áá¯á·ááẠ- data blocks á¡á¯ááºá á¯ááŸá áºá á¯á¡áááºá០áá áºáá¯ááᯠá¡áá¯á¶ážááŒá¯ááẠ(áááºážááá¯á·ááᯠlocal redundancy codes áá¯áá±á«áºáááº)á
LRC ááᯠáá¶áá«ááºáá¯á¶ážáá¯á¶ážááŒáá·áº áááºááœáŸááºážáááº- nrl á n ááẠáá±áá¬ááá±á¬ááºáá»á¬ážá á¡áá±á¡ááœááºááŒá áºááŒá®áž r ááẠááá¹áá¬áá¯á¶ážááá¯ááºáᬠáááºáá±áá±á¬ áá¯ááºáá¯á¶ážáá»á¬ážá á¡áá±á¡ááœááºááŒá áºááŒá®áž l ááẠáá±áááœááºáž áááºáá±áá±á¬ áá¯ááºáá¯á¶ážáá»á¬ážá á¡áá±á¡ááœááºááŒá áºáááºá áá±áá¬ááá±á¬ááºáá áºáá¯á០ááááŸáááá¯ááºáá±á¬á¡áá« áá±áá¬ááá¯áááºáááºá áááºááẠN/l ááá±á¬ááºáá»á¬ážááá¯áᬠáááºááẠááá¯á¡ááºááẠ- áááºážááẠReed-Solomon áá¯ááºáá»á¬ážááẠá¡ááá»á±á¬á·áááºážáááºá
á¥ááá¬á LRC 6-2-2 á¡á á®á¡á ááºááᯠá ááºážá á¬ážáá«á X1âX6 â áá±áá¬ááá±á¬áẠ6 áá¯á P1á P2 â ááá¹áá¬áá¯á¶ážááá¯ááºáᬠáááºáá±áá±á¬áá¯ááºááœáẠ2 áá¯á P3á P4 â áá±áááœááºáž áááºáá±áá±á¬áá¯ááºááœáẠ2 áá¯á
Redundancy code blocks P1á P2 ááẠdata blocks á¡á¬ážáá¯á¶ážááᯠá¡áá¯á¶ážááŒá¯ááŒá®áž áá±ááœááºáá«áááºá Redundancy code block P3 - data blocks X1-X3 ááá¯á¡áá¯á¶ážááŒá¯ááŒá®ážá redundancy code block P4 - data blocks X4-X6 ááá¯á¡áá¯á¶ážááŒá¯ááŒááºážá
áá»ááºáá¬ááœá±ááᯠReed-Solomon áá¯ááºááœá±áá²á· ááŸááºááŒá®áž LRC ááŸá¬ áá¯ááºáá±á¬ááºáá«áááºá áááºáá±áá±á¬áá¯ááºáá¯á¶ážáá»á¬ážá á áá¬ážáá¯á¶ážáá»á¬ážááᯠáá±ááœááºááŒááºážá¡ááœáẠáá®áá»áŸááŒááºážáá»á¬ážáááº-
áá¶áá«ááºáá»á¬áž alphaá betaá gammaá delta ááá¯ááœá±ážáá»ááºáááºá data recovery áááŒá
áºááá¯ááºááŒá±ááá¯á¡á¬ááá¶ááẠ(ááá¯ááá¯áááºááŸá¬ áá®áá»áŸááŒááºážá
áá
áºááŒá±ááŸááºážááŒááºáž) ááá¯á¡á¬ááá¶ááẠá¡ááŒá±á¡áá±áá»á¬ážá
áœá¬ááᯠááŒáá·áºáá®ááá«áááºá áááºážááá¯á·á¡ááŒá±á¬ááºáž ááá¯ááá¯áááºááŸá¯ááá¯ááºáá«áááºá
áááºááœá±á·ááœááºá XOR áá¯ááºáá±á¬ááºáá»ááºááᯠáá±áááœááºáž áááºáá±áá±á¬ áá¯ááºáá»á¬áž P3, P4 ááᯠááœááºáá»ááºááẠá¡áá¯á¶ážááŒá¯áá«áááºá
LRC á¡ááœáẠáá®áá»áŸááŒááºážá áá áºá០áá±á¬ááºáá»ááºá¡áá»áá¯á· ááœááºáá±á«áºáá¬áááº-
- áá±áá¬ááá±á¬áẠ1 áá¯ááᯠááŒááºáááºááá°áááºá n/l áá¯á¶ážáá»á¬ážááᯠáááºááẠáá¯á¶áá±á¬ááºááẠ(áá»áœááºá¯ááºááá¯á·á á¥ááá¬ááœáẠn/2)á
- r+l ááá±á¬ááºáá»á¬áž ááááŸáááá¯ááºáá«áá ááá±á¬ááºá¡á¬ážáá¯á¶ážááẠá¡á¯ááºá á¯áá áºá á¯ááœáẠáá«áááºáá±áá«á áá±áá¬ááᯠááŒááºáááºááá°ááá¯ááºáááºááá¯ááºáá«á áá«á á¥ááá¬áá áºáá¯áá²á· ááŸááºážááŒááᬠááœááºáá«áááºá ááááºááá¯á·ááŒááºáž X1âX3 ááŸáá·áº P3 ááá¯á·ááᯠááááŸáááá¯ááºáá«á á±ááŸáá·áº- áááºážááá¯á·ááẠáá°áá®áá±á¬á¡á¯ááºá á¯á០r+l áá¯á¶ážáá»á¬ážááŒá áºáááºá 4 áá»áœááºá¯ááºááá¯á·áá¡ááŒá±á¡áá±ááœááºá ááá¯á·áá±á¬áẠáá»áœááºá¯ááºááá¯á·ááœáẠááŒá±ááŸááºážááááá±á¬ áááááŒááºáž 3 áá¯ááŸááá±á¬ áá®áá»áŸááŒááºáž 4 áá¯ááŸááá±á¬ á áá áºáá áºáá¯ááŸááááºá
- r + l áá¯ááºááœááºáá»á¬áž ááááŸáááá¯ááºááá·áº á¡ááŒá¬ážááá á¹á áá»á¬ážá¡á¬ážáá¯á¶ážááœáẠ(á¡á¯ááºá á¯áá áºáá¯á á®á០á¡áááºážáá¯á¶áž ááá±á¬ááºáá áºáá¯áááŸáááá¯ááºáá±á¬á¡áá«) LRC ááŸááá±áá¬ááᯠááŒááºáááºááá°ááá¯ááºáááºá
ááá¯á·ááŒá±á¬áá·áºá LRC ááẠá¡ááŸá¬ážáá áºáá¯ááŒá±á¬áá·áº áá±áá¬ááᯠááŒááºáááºááá°áá¬ááœáẠReed-Solomon áá¯ááºáá»á¬ážááᯠá áœááºážáá±á¬ááºáááºááẠáá¬ááœááºá á±áááºá Reed-Solomon áá¯ááºáá»á¬ážááœáẠáá±áá¬áá áºáá¯á¶ážááá¯ááẠááŒááºáááºááá°áááºá áááºááẠn blocks áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áááºááŸáá·áº LRC ááœáẠáá±áá¬áá áºáá¯á¶ážááᯠááŒááºáááºááá°ááẠááá¯á¡ááºáááºá áááºážááẠn/l blocks (áá»áœááºá¯ááºááá¯á·á á¥ááá¬ááœáẠn/2) ááᯠá¡áá¯á¶ážááŒá¯ááẠáá¯á¶áá±á¬ááºáá«áááºá á¡ááŒá¬ážáá áºáááºááœááºá LRC ááẠááœáá·áºááŒá¯ááá¯ááºáá±á¬ á¡ááŸá¬ážá¡ááœááºážáá»á¬áž á¡áá»á¬ážáá¯á¶ážá¡áá±á¡ááœááºá¡á Reed-Solomon áá¯ááºáá»á¬ážááẠáááá·áºáááºá á¡áááºáá±á¬áºááŒáá«ááá°áá¬áá»á¬ážááœáẠReed-Solomon áá¯ááºáá»á¬ážááẠáááºááá·áºá¡ááŸá¬ážá¡ááœááºáž 4 áá¯á¡ááœááºáááᯠáá±áá¬ááᯠááŒááºáááºááá°ááá¯ááºááŒá®áž LRC á¡ááœáẠáá±áá¬ááŒááºáááºááá°áááááá·áºá¡áá« á¡ááŸá¬ážáá±á«ááºáž 2 áá¯ááŸááááºá
ááá¯á¡áá±ážááŒá®ážáá¬á áááá»áá²á·á¡ááŒá±á¡áá±áá±á«áºááŸá¬áá°áááºáá«áááºá áá«áá±ááá·áº LRC áá±ážáá±á¬ááºáá²á· ááá¯áá»áŸá¶áá²á·áááºáá¯ááºáááºááá¯ážáᬠáááŒá¬ááááá¯áááᯠáá¯á¶ááŒááºá áááºáá»áááŸá¯áááºážáá«ážáá²á· ááá¯ááŸá±á¬ááºááŸá¯ááẠáá¬ááœááºáá«áááºá
4. á¡ááŒá¬áž áááºáá±áá±á¬ áá¯ááºáá»á¬áž
Reed-Solomon ááŸáá·áº LRC áá¯ááºáá»á¬ážá¡ááŒáẠá¡ááŒá¬ážáá±á¬ áááºáá±áá±á¬ áá¯ááºáá»á¬ážá áœá¬áááºáž ááŸááá±ážáááºá ááá°áá®áá±á¬ áááºáá±áá±á¬áá¯ááºáá»á¬ážááẠááá°áá®áá±á¬áááºá¹áá»á¬ááᯠá¡áá¯á¶ážááŒá¯áááºá á€áááºááŸá¬ á¡ááŒá¬ážáá±á¬ áááºáá±áá±á¬ áá¯ááºá¡áá»áá¯á· ááŒá áºáááº-
- XOR á¡á±á¬áºááá±áá¬ááᯠá¡áá¯á¶ážááŒá¯á áááºáá±áá±á¬áá¯ááºá XOR áá¯ááºáá±á¬ááºáá»ááºááᯠn data blocks ááœááºáá¯ááºáá±á¬ááºááŒá®áž 1 block of redundancy codes ááá¯áááŸááá«áááºá ááá¯ááá¯áááºááŸá¬ n+1 scheme (n data blocksá 1 redundancy code) ááá¯áááŸááááºá ááœááºá¡áá¯á¶ážááŒá¯áááºá
RAID 5 áá±áá¬ááá±á¬ááºáá»á¬ážááŸáá·áº áááºáá±áá±á¬áá¯ááºáá»á¬ážááᯠarray ááá áºáá»á¬ážá¡á¬ážáá¯á¶ážááœáẠá ááºááá¯ááºážáá¯á¶á á¶ááŒáá·áºáá±ážáá¬ážááá·áºáá±áá¬ááœááºá - XOR áá¯ááºáá±á¬ááºáá»ááºááᯠá¡ááŒá±áá¶á áá°ážáááºážáá±á¬ á¡ááºáááá¯áá®áááºá n+2 á¡á á®á¡á á¥áºá ááá¯ááá¯áááºááŸá¬ redundancy codes áá¯á¶áž 2 áá¯ááᯠáááºáá±á¬ááºááœáá·áºááŒá¯áááºá
- XOR áá¯ááºáá±á¬ááºáá»ááºá¡áá±á«áº á¡ááŒá±áá¶á STAR á¡ááºáááá¯áá®áááºá n+3 á¡á á®á¡á á¥áºá ááá¯ááá¯áááºááŸá¬ redundancy codes 3 áá¯ááᯠáááºáá±á¬ááºááœáá·áºááŒá¯áááºá
- Pyramide áá¯ááºáá»á¬ážááẠMicrosoft á០áá±á¬ááºááẠáááºáá±áá±á¬ áá¯ááºáá»á¬ážááŒá áºáááºá
5. Yandex ááœááºá¡áá¯á¶ážááŒá¯áá«á
Yandex á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ ááá±á¬áá»ááºáá»á¬ážá áœá¬ááẠáá¯á¶ááŒááºá áááºáá»ááá±á¬ áá±áá¬ááá¯ááŸá±á¬ááºááŸá¯á¡ááœáẠáááºáá±áá±á¬áá¯ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá«áááºá á€áááºááŸá¬ á¥ááá¬á¡áá»áá¯á·ááŒá áºáááºá
- áá±á¬ááºážáá«ážá¡á ááŸá¬ áá»áœááºáá±á¬áºáá±ážáá²á·áá²á· MDS á¡ááœááºážááá¯ááºážá¡áá¬ááá¹áá¯ááá¯ááŸá±á¬ááºááŸá¯á
YT - Yandex á MapReduce á áá áºáYDB (Yandex DataBase) - newSQL ááŒáá·áºáá±áá±áá¬áá±á·á áºá
MDS ááẠLRC áááºáá±áá±á¬áá¯ááºáá»á¬ážá 8-2-2 á¡á
á®á¡á
ááºááᯠá¡áá¯á¶ážááŒá¯áááºá áááºáá±áá±á¬áá¯ááºáá»á¬ážááŒáá·áº áá±áá¬ááᯠááá°áá®áá±á¬ DC 12 áá¯ááœáẠááá°áá®áá±á¬ áá¬áá¬áá»á¬ážááœáẠááá°áá®áá±á¬ áá¬áᬠ3 áá¯ááœáẠáá±ážáá¬ážáá¬ážáááº- DC áá
áºáá¯á
á®ááŸá áá¬áᬠ4 áá¯á á€á¡ááŒá±á¬ááºážááá¯ááá¯áááºááŸá¯áá«á
YT ááẠááááá¯á¶áž á¡áá±á¬ááºá¡áááºáá±á¬áºáá²á·ááá·áº Reed-Solomon áá¯ááºáá»á¬áž (Scheme 6-3) ááŸáá·áº LRC áááºáá±áá±á¬áá¯ááºáá»á¬áž (Scheme 12-2-2) ááᯠá¡áá¯á¶ážááŒá¯ááŒá®áž LRC ááẠáŠážá á¬ážáá±ážááá¯ááŸá±á¬ááºááŸá¯áááºážáááºážááŒá áºáááºá
YDB ááẠáá°ážáá°ážááŒá¬ážááŒá¬áž á¡ááŒá±áᶠáááºáá±áá±á¬ áá¯ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááẠ(áá¯á¶ 4-2)á YDB ááœáẠredundancy codes áá»á¬ážá¡ááŒá±á¬ááºáž ááŸáááŒá®ážáá¬ážááŒá
áºáááºá
ááá°áá®áá±á¬ redundancy code schemes ááá¯á¡áá¯á¶ážááŒá¯ááŒááºážááẠá áá áºáá»á¬ážá¡ááœáẠááá°áá®áá±á¬ááá¯á¡ááºáá»ááºáá»á¬ážááŒá±á¬áá·áºááŒá áºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá MDS ááœáẠLRC ááᯠá¡áá¯á¶ážááŒá¯á ááááºážáááºážáá¬ážáá±á¬ áá±áá¬ááᯠDC 3 áá¯ááœáẠáá áºááŒáá¯ááºááẠááá·áºááœááºážáá¬ážáááºá DC áá áºáá¯áá¯á០1 áᯠáá»ááºááœááºáá«á áá±áá¬ááᯠáááºáááºáááºááŸá¯ááẠá¡áá±ážááŒá®ážáá«áááºá ááá¯á·ááŒá±á¬áá·áº DC áá»á¬ážááŒá¬ážááœáẠááá±á¬ááºáá»á¬ážááᯠááŒáá·áºáá±ááááºááŒá áºáá±á¬ááŒá±á¬áá·áº áááºááá·áº DC áááᯠááááŸáááá¯ááºáá«áá áááºááŸááºážááá®áá±á¬ ááá±á¬ááºá¡áá±á¡ááœááºááẠááœáá·áºááŒá¯áá¬ážáááºááẠáááá¯á á±ááá«á 8-2-2 á¡á á®á¡á á¥áºááœáẠáááºááẠDC áá áºáá¯á á®ááœáẠá¡ááœáẠ4 áᯠáá¬ážááŸáááá¯ááºááŒá®ážá ááá¯á·áá±á¬áẠáááºááá·áº DC ááá¯áááᯠááááºááá¯ááºáá±á¬á¡áá«ááœáẠááá±á¬áẠ4 áᯠááááá¯ááºáá±á¬á·áááºááŒá áºááŒá®áž áá±áá¬ááᯠáááºááŸá¯ááá¯ááºáá«áááºá áááºážááᯠDC 3 áá¯ááœáẠááá·áºááœááºážááá·áºá¡áá« áá»áœááºá¯ááºááá¯á·ááœá±ážáá»ááºááá·áº áááºááá·áºá¡á á®á¡á ááºááœááºáááᯠ(r + l) / n >= 0,5 ááŸáááá·áºáááºá ááá¯ááá¯áááºááŸá¬ ááá¯ááŸá±á¬ááºááŸá¯áááºáá±ááŸá¯ááẠá¡áááºážáá¯á¶áž 50% ááŸááááºááŒá áºáááºá
YT ááœáẠá¡ááŒá±á¡áá± ááœá²ááŒá¬ážáááº- YT á¡á á¯á¡áá±áž áá áºáá¯á á®ááẠ1 DC ááœáẠáá¯á¶ážáá¯á¶ážáá»á¬ážáá»á¬áž áááºááŸáááẠ(ááœá²ááŒá¬ážááŒá¬ážáá¬ážáá±á¬ DCs áá»á¬ážááœáẠááá°áá®áá±á¬ á¡á á¯á¡áá±ážáá»á¬áž) ááŒá áºáá±á¬ááŒá±á¬áá·áº ááá¯áá²á·ááá¯á· ááá·áºáááºáá»áẠáááŸááá«á 12-2-2 á¡á á®á¡á á¥áºááẠ33% redundancy ááá¯áá±ážáááºá ááá¯ááá¯áááºááŸá¬á áá±áá¬ááááºážáááºážááŒááºážááẠá á»á±ážáááºáá¬ááŒá®áž MDS á¡á á®á¡á ááºáá²á·ááá¯á·ááẠáááŒáá¯ááºáááºáááºáž disk ááŒááºáá±á¬ááºááŸá¯ 4 áá¯á¡áááááºáž ááŸááºáááºááá¯ááºáááºá
áá±áá¬ááááºážáááºážááŒááºážááŸáá·áº áá¯ááºáá±á¬ááºááŒááºážá áá áºáá»á¬ážááœáẠáááºáá±áá±á¬áá¯ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážá áá±á¬ááºáááºá¡ááºá¹áá«áááºáá»á¬ážá áœá¬áá«ááŸááááº- áá±áá¬ááŒááºáááºááá°ááŒááºážá ááœá²ááŒá¬ážáá»ááºáá»á¬ážá áá±ážááŒááºážááŸá¯áá¯ááºáá±á¬ááºáá»áááºá¡áá±á«áº ááŒááºáááºááá°ááŒááºážá á¡áá»áá¯ážáááºáá±á¬ááºááŸá¯á áá±áá¬ááŸááºáááºážáááºááŒááºážááá¯ááºáᬠá¡ááºá¹áá«áááºáá»á¬áž á áááºááá¯á·ááᯠáá»áœááºá¯áẠáá®ážááŒá¬ážááŒá±á¬ááá¯ááœá¬ážáá«áááºá á¡áááºá redundancy codes áá»á¬ážááᯠáááºááœá±á·ááœáẠá¡áá¯á¶ážááŒá¯ááŒááºážá á¡ááŒá±á¬ááºážá¡áá¬ááẠá áááºáááºá á¬ážá áᬠááŒá áºáááá·áºáááºá
6. ááá·áºáá»á¬áž
- Reed-Solomon áá¯ááºáá»á¬ážááŸáá·áº Galois á¡ááœááºáá»á¬ážá¡ááŒá±á¬ááºáž áá±á¬ááºážáá«ážááá¯áá»á¬áž
https://habr.com/ru/company/yadro/blog/336286/
https://habr.com/ru/company/yadro/blog/341506/
áá°ááá¯á·áááºááŸááºážáá®ááá¯ááºáá±á¬ áá¬áá¬á áá¬ážááŒáá·áº áááºá¹áá»á¬ááᯠááá¯ááá¯áááºááŸáá¯ááºážá áœá¬ ááŒáá·áºááŸá¯ááŒáááºá - LRC á¡ááŒá±á¬ááºáž Microsoft á០áá±á¬ááºážáá«áž-
https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/LRC12-cheng20webpage.pdf
á¡ááá¯ááºáž 2 ááẠáá®á¡áá¯áá®ááᯠá¡ááá¯áá»á¯á¶ážááŸááºážááŒááŒá®áž áááºááœá±á·ááœáẠLRC ááŸáá·áº á¡ááœá±á·á¡ááŒá¯á¶áá»á¬ážááᯠááœá±ážááœá±ážáááºá - áá°ážáááºážáá±á¬ á¡á
á®á¡á
ááº-
https://people.eecs.berkeley.edu/~kubitron/courses/cs262a-F12/handouts/papers/p245-blaum.pdf - ááŒááºááœáá·áºá¡á
á®á¡á
ááº-
https://www.usenix.org/legacy/event/fast05/tech/full_papers/huang/huang.pdf - ááááá
áºáá¯ááºáá»á¬áž
https://www.microsoft.com/en-us/research/publication/pyramid-codes-flexible-schemes-to-trade-space-for-access-efficiency-in-reliable-data-storage-systems/ - MDS ááœáẠáááºáá±áá±á¬áá¯ááºáá»á¬áž
https://habr.com/ru/company/yandex/blog/311806 - YT ááœáẠáááºáá±áá±á¬áá¯ááºáá»á¬áž
https://habr.com/ru/company/yandex/blog/311104/ - YDB ááœáẠáááºáá±áá±á¬áá¯ááºáá»á¬áž
https://www.youtube.com/watch?v=dCpfGJ35kK8
source: www.habr.com