HPCシステムズではエンジニアを募集しています。詳しくはこちらをご覧ください。
HPCシステムズのエンジニア達による技術ブログ

Tech Blog

データの信頼性について改めて考えてみる

背景

「自分で書いたメモが読めない・・・」こんな経験はないでしょうか。
字が汚な過ぎたというのはともかく、紙の質やインクが薄かったり、濡れてしまったり、理由はいろいろあると思います。

記録メディアはどうでしょうか。光学メディアに傷を付けて読み込みエラーになったり、書き込みに失敗したり、 ドライブの相性で読めなかったりということがあります。CDは蒸着したアルミ薄膜が酸化して読めなくなることがあるようです。思い出の一枚はチェックしておいたほうが良さそうです。

また、留まるところを知らない半導体や記録媒体の微細化、信号の高速化により、データは常に変容する危険性を はらんでいます。ここでは大容量化の一途をたどるHDDを題材に考えてみましょう

HDDのビットエラー

昨今のHDDのプラッター上では1mm長に10万個近い磁気ビットを並べていて、その列が1mm幅に1万本以上並んでいます。そうした中、信頼性を維持しつつ密度の向上を図るという、相反する要件を同時に満たすことは既に困難であり、ECCはもとよりReed-Solomon, LDPCといったエラー訂正を用いて信頼性を確保してはじめて密度を上げられるようです[1]。こうした話を見るにつけ「全てのビットが正しく記録され、正しく読み取れること」を保証することが、どれだけチャレンジングか、想像するだけで身震いがします。

では、それを踏まえてHDDに保存したデータに修正不可能なエラーが発生する確率とは、どの程度なのでしょうか?

こうした数値はスペックシートに記載されています。Non-recoverable Error Rate every bits readのような記述になっており、現行のコンシューマーモデルでは<1bit/1014、データセンター向け大容量モデルなどでは<1bit/1015〜17というような数字が載っています。

例えば12TBは約1014bitですので、ドライブ全体を1回なめるだけ(現行スペックでは15時間ほどかかります)でオーダーとしては既に近い状態です。もちろん必ずエラーが出るというわけではなく最大値としての数字なわけですが、現時点でもペタバイトクラスの大容量ストレージは決して珍しいものではなく、そこでは当然ながら数百・数千の単位でHDDが使われていることを踏まえれば、ビットエラー自体は現実の問題として認識した方が良さそうです。例えば過去の統計データを見ると衝撃的な数値が紹介[2]されていました。

ここで注意しなくてはならないのは、このビットエラーはいわゆるドライブの故障とは無関係だということです。 ドライブの故障はデータが取り出せない状況ですが、ビットエラーは出て来たデータが信用できない問題です。データが読み出せることと、そのデータが正しいことは、それぞれ別の方法で担保しなければなりません。ただし、間違ったデータを検出して特定することができれば、それを元に正しいデータに戻すことと、ロストしたデータを復旧することは、同じ方法で実現できると理解できます。

RAID

さて、RAID5やRAID6, RAID10は個々のドライブが正しいデータを返していることを前提に、複数ドライブをつなぎ合わせています。ドライブが故障してデータが抜け落ちた場合は、パリティデータ等を用いて本来のデータを復旧しますが、「そのデータが本来あるべきデータである」ことを保証するのは、メディアの信頼性にかかっています。つまり通常のRAIDは、ドライブとしての運用を継続したり、大容量化したり、故障によるロストを避けることを実現していますが、データそのものの信頼性を高める方向には寄与していません。

そのため、復旧しようとしてデータエラーにあたってしまい、復旧に失敗するいわゆるサイレントクラッシュという問題を本質的にはらんでいます。ただし、障害時でなくともパリティデータを信頼性を高める目的で読み出し整合性をチェックすることでデータの信頼性を高める、ということは特定の製品ではやっているようですが、決して一般的とは言えません。

冗長性と信頼性

ミラーリングやレプリケーションといった方法を使って同一データを分散保存することもありますが、ペタバイトを超えるデータについて、それらを常に突き合わせてデータが全て同じか検証し続けることが現実的とは思えません。

では冗長性を無駄に上げることなくデータの信頼性を高めるには、どうすればよいのでしょうか?

次回はそのための技術であるイレージャーコーディングとブロックチェーン、それに基づいたプロダクトについて見ていきたいと思います。

参考文献

  1. https://en.wikipedia.org/wiki/Hard_disk_drive
  2. Keeping Bits Safe: How Hard Can It Be?