Erasure coding
Twitterやメールマガジンで続けて目にした「erasure coding」について勉強。「冗長符号」と訳しているところもあるが(注1)、「Erasure」と「冗長」は全く結びつかない。「消失訂正符号」がよいのではないか。冗長符号という訳語を充てている分野があるのだろうか。
erasure codingは、消失したビット列を復元するための技術で、リード・ソロモン符号(Reed-Solomon Coding)はCDやADSLに使われているし、QRコードにも使われている(注2)。とくに目新しい技術ではなく、ごく日常的に使われている。
RAIDレベルのなかでもっとも普及しているRAID-5の誤り検出/訂正は、CPU計算力をあまり必要としないXOR(排他的論理和)に基づいたパリティを使っている。私の会社のRAIDアーキテクトは、これも広義にはerasure codingだと言っている。さらにミラーリングRAID-1でさえ、消失したディスクのデータをもう1台から復元するので、erasure codingの非常に特殊なケースとのこと。
ディスクの容量が増大するに従って、ディスク障害時のRAID再構築にかかる時間が問題になってきている。再構築中はI/O性能も落ちる。訂正不可能な読み取りエラーがもう1台のディスクで再構築中に発生すると、データを失うことになる。ディスクの読み取りエラー率は以前から変わっていないため、1TB~2TBのディスクドライブでRAID-5を組んで再構築を行うなど、読み取るデータ量が大きくなればなるほど、エラーが起きる可能性も高くなってくる。ストレージコンサルタントのStephen Foskettは、12TBあたり1ビットの読み取りエラー率であり、ディスクドライブ容量がMBとかGBのオーダーの時は問題にならなかったが、大容量のドライブでは読み取りエラーの可能性が十分あると書いている(注3)。RAIDの自動再構築を無効にしておく方がよいという意見もある(注4)。
そこでRAID-6が登場する。XORのパリティに加えて、erasure codingに基づくもうひとつのパリティを持つことにより、ディスク2台の故障でもデータを失わなくてすむ。RAID-6のほかにもさまざまな技術が考え出されている。どれも、複数ディスク故障時にデータ損失が起きないようにしたり、再構築の時間をなるべく短くしたりということが目的である。
以上のようなことを知ってしまうと、個人向けのRAID-5対応外付けHDDは怖くて使えなくない。使われているディスクドライブは、エンタープライズ向けのものに比べて信頼性が劣るはず。設置環境もよくない。企業システムのディスクアレイ装置は温度や湿度が管理されたサーバ室に設置されているのに対して、家庭のHDDは机の上や部屋の隅に転がっている。ディスク故障で再構築が走ったとき、もう1台のディスクが読み取りエラーを起こしても全然不思議ではない。Droboや法人向けのRAID-6対応NASのような製品でなければ心配だ。
(注1)RAIDに取って替わるもの(後編)(JDSF)
http://www.jdsf.gr.jp/backup/stm/201007.html
(注2)Reed-Solomon error correction(Wikipedia)
https://secure.wikimedia.org/wikipedia/en/wiki/Reed%E2%80%93Solomon_error_correction
(注3)Erasure codes: The foundation of RAID 6 arrays(SearchStorage)
http://searchstorage.techtarget.com/tip/0,289483,sid5_gci1519386,00.html
(注4)【ATA RAID5の落し穴】(Ontrack Now)
http://knowledge.ontrack-japan.com/ontrack_now/20060515_mamechisiki.html
| 固定リンク
この記事へのコメントは終了しました。
コメント