web-dev-qa-db-ja.com

ハードドライブのビット腐敗は本当の問題ですか?それについて何ができますか?

ドライブのビットがランダムに反転し、データが破損するというビット腐敗の問題について、友人が私に話しかけています。信じられないほどまれですが、十分な時間があると問題になる可能性があり、検出することは不可能です。

ドライブはそれを不良セクターとは見なさず、バックアップはファイルが変更されたと考えます。整合性を検証するためのチェックサムはありません。 RAIDセットアップでも、違いは検出されますが、どのミラーコピーが正しいかを知る方法はありません。

これは本当の問題ですか?もしそうなら、それについて何ができるでしょうか?私の友人はソリューションとしてzfsを推奨していますが、Solarisとzfsを使用して、職場でファイルサーバーをフラット化することは想像できません。

32
scobi

まず、ファイルシステムにチェックサムがない場合がありますが、ハードドライブ自体にチェックサムがあります。たとえばS.M.A.R.T.があります。もちろん、ひっくり返った数が多すぎると、エラーを修正できません。そして、本当に運が悪いと、チェックサムが無効にならないようにビットが変化する可能性があります。エラーは検出されません。だから、厄介なことcanが起こる;しかし、ランダムなビットフリッピングがデータを即座に破損させるという主張は偽物です。

ただし、はい、ハードドライブに何兆ビットものビットを配置すると、それらは永久にそのようにはなりません。それは本当の問題です! ZFSは、データが読み込まれるたびに整合性チェックを実行できます。これは、ハードドライブ自体がすでに行っていることと似ていますが、スペースを犠牲にするための別の保護手段であるため、データの破損に対する回復力が高まります。

ファイルシステムに問題がなければ、検出されずにエラーが発生する可能性が非常に低くなるため、そのことを気にする必要がなくなり、使用しているデータストレージ形式にチェックサムを組み込むことで、不要。

どちらの方法でも:いいえ、検出することは不可能ではありません

しかし、ファイルシステムだけでは、すべての障害が回復できるという保証はありません。それは特効薬ではありません。エラーが検出されたときに何をすべきかについては、バックアップと計画/アルゴリズムがまだ必要です。

24
nex

はい、それは主にドライブのサイズが大きくなるので、問題です。ほとんどのSATAドライブのURE(訂正不能読み取りエラー)率は10 ^ 14です。または、統計的に読み取られる12TBのデータごとに、ドライブのベンダーはドライブが読み取り失敗を返すと言っています(通常、ドライブのスペックシートで調べることができます)。ドライブは、ドライブの他のすべての部分で問題なく動作し続けます。エンタープライズFCおよびSCSIドライブは、一般的に、10 ^ 15(120TB)のUREレートと、その削減に役立つ少数のSATAドライブを備えています。

ディスクがまったく同時に回転を停止するのを見たことはありませんが、raid5ボリュームでこの問題が発生しました(5年前に5400RPMコンシューマーPATAドライブで)。ドライブに障害が発生し、デッドとマークされ、スペアドライブが再構築されます。問題は、再構築中に2番目のドライブがその1つの小さなデータブロックを読み取ることができないことです。誰がレイドを行っているかに応じて、ボリューム全体が死んでいるか、その小さなブロックだけが死んでいる可能性があります。 1つのブロックだけが死んでいると仮定すると、それを読み込もうとするとエラーが発生しますが、それに書き込むと、ドライブが別の場所に再マッピングします。

保護する方法は複数あります。二重ディスク障害から保護するraid6(または同等のもの)が最適です。追加の方法は、ZFSなどのURE対応ファイルシステムであり、小さいRAIDグループを使用するため、統計的にはUREドライブにヒットする可能性が低くなります。制限(ミラーの大きなドライブまたはraid5の小さなドライブ)、ディスクスクラブ&SMARTも役立ちますが、それ自体は実際には保護ではありませんが、上記の方法のいずれかに加えて使用されます。

私はアレイで3000近くのスピンドルを管理しており、アレイは常に潜在的なUREを探してドライブをスクラブしています。そして、私はraid6の代わりにraid5を使用していて、ドライブの1つが完全に停止した場合、それらのかなり一定したストリームを受け取ります(ドライブ障害が発生する前に修正され、警告が表示されるたびに)。特定の場所にぶつかると困ります。

16
InsaneGeek

ハードドライブは通常、データビットを単一の磁区としてエンコードしません。ハードドライブの製造元は、磁区が反転し、ドライブのエラー検出と修正が組み込まれる可能性があることを常に認識しています。

ビットが反転する場合、ドライブには十分な冗長データが含まれており、次にそのセクターが読み取られるときに訂正できます。これは、ドライブのSMART統計を「修正可能なエラー率」として確認すると確認できます。

ドライブの詳細に応じて、セクター内の複数のフリップビットから回復することもできます。サイレントに修正できる反転ビットの数には制限があり、おそらくエラーとして検出できる反転ビットの数にはもう1つの制限があります(それを修正するのに十分な信頼性のあるデータがない場合でも)

これは、ハードドライブがほとんどのエラーを発生時に自動的に修正し、残りのほとんどを確実に検出できるという事実につながります。 1つのセクターに多数のビットエラーがあり、そのセクターが再度読み取られる前にすべてが発生している必要があります。エラーは、内部エラー検出コードがそれを有効なデータとして再び認識する前に発生する必要があります。サイレント障害が発生することがあります。不可能ではありません。非常に大規模なデータセンターを運営している企業は、それが発生することを確認します(または、発生しますしないでください発生することを確認します)。あなたが思うかもしれない問題。

9
Ian Clelland

最新のハードドライブ(199x以降)にはチェックサムだけでなく、かなりの「ランダム」ビット腐敗を検出して修正できるECCも搭載されています。参照: http://en.wikipedia.org/wiki/S.M.A.R.T

一方、ファームウェアおよびデバイスドライバーの特定のバグは、まれにデータを破損する可能性があります(そうでない場合、QAがバグをキャッチします)、より高いレベルのチェックサムがないと検出が困難になります。 SATAおよびNICの初期のデバイスドライバーは、LinuxとSolarisの両方でデータが破損していました。

ZFSチェックサムは、主に下位レベルのソフトウェアのバグを対象としています。 Hypertableのような新しいストレージ/データベースシステムには、更新ごとにチェックサムがあり、ファイルシステムのバグから保護します。

4
obecalp

理論的には、これは懸念材料です。実際には、これは子供/親/祖父母のバックアップを保持する理由の一部です。 IMOでは、年間バックアップを少なくとも5年間保持する必要があります。これよりも前に戻った場合、ファイルは明らかにそれほど重要ではありません。

あなたが 潜在的に誰かの脳を液化させる可能性のあるビット を扱っていない限り、リスク対報酬が変化するところまでかなりわかりませんファイルシステム。

3
Kara Marfia

はい、それは問題です。

これがRAID6が流行している理由の1つです(HDサイズが大きくなると、アレイを再構築する時間が長くなります)。 2つのパリティブロックを使用すると、追加のバックアップが可能になります。

RAIDシステムは、ディスクブロックを定期的に読み取り、パリティをチェックし、不良ブロックが見つかった場合はそれを置き換えるRAIDスクラブも実行するようになりました。

2
Matt Rogish

RAIDに関するOPの声明に関して、どのデータが良いか悪いかを理解していません。

RAIDコントローラーは、少なくともデータのストライプごとに(奇数/偶数)パリティビットを使用します。これはすべてのものです。ディスク上のデータストライプとパリティ(バックアップ)データストライプ。

これは、冗長性のためのストライピングがあるすべてのRAIDタイプ(RAID 5/6)の場合、コントローラーは元のデータストライプが変更されたかどうか、および冗長データストライプが変更されたかどうかを正確に通知できることを意味します。

RAID6のような2番目の冗長ストライプを導入する場合、3つのデータストライプが必要です。3つの異なるドライブで破損し、すべて同じ実際のファイルデータに対応します。ほとんどのRAIDシステムは比較的小さなデータストライプ(128kb以下)を使用しているため、同じファイルの同じ128kbに「ビット腐敗」が並ぶ可能性はほとんどありません。

1
Brian D.

はい、現実の問題ですが、問題はあなたがそれを心配すべきかどうかです。

あなたがhddの写真でいっぱいになっただけなら、努力する価値はないかもしれません。それは重要な科学データでいっぱいで、別の種類の話かもしれません、あなたは考えを思いつきました。

0
Marc Stürmer