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


32

友人がビット腐敗の問題について話している-ドライブのビットがランダムに反転し、データが破損している。非常にまれですが、十分な時間があると問題になる可能性があり、検出することはできません。

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

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


1
ここではそれについての記事です:web.archive.org/web/20090228135946/http://www.sun.com/bigadmin/...
scobi

古い200GBのSeagateディスクでSMARTエラーが発生しました。ビットは、彼らがあまりにも腐敗している:-(私はおそらくあまり大騒ぎせずに交換を得ることができますので、それは、6ヶ月の短い5年間保証のだ。
ThatGraemeGuy

回答:


24

最初に:ファイルシステムにチェックサムがない場合がありますが、ハードドライブ自体にチェックサムがあります。たとえば、SMARTがあります。もちろん、1ビットが多すぎると、エラーを修正できません。そして、もしあなたが本当に不運なら、チェックサムが無効にならないようにビットが変わる可能性があります。エラーは検出されません。したがって、厄介なこと起こる可能性があります。しかし、ランダムなビットフリッピングによりデータが即座に破損するという主張は偽です。

ただし、はい、ハードドライブに数兆ビットを入れても、そのように永久に残ることはありません。それは本当の問題です!ZFSは、データが読み取られるたびに整合性チェックを実行できます。これはハードドライブが既に行っていることと似ていますが、一部のスペースを犠牲にするもう1つの安全策であるため、データ破損に対する回復力が向上しています。

ファイルシステムが十分に優れている場合、検出されずにエラーが発生する可能性が非常に低くなるので、それ以上気にする必要はなく、使用しているデータストレージ形式にチェックサムを組み込むことを決定できます。不要。

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

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


[OK]を、(ウィキペディアによるen.wikipedia.org/wiki/Error_detection_and_correctionは)現代のハードドライブはエラーを検出し、コンパクトディスク形式のエラー回復を使用して回復しようとするCRCのを使用しています。それで十分です。
scobi

1
ただし、CRCがデータと同じ場所(セクター)に保存されている場合、これはすべてのエラーの場合に役立ちません。たとえば、ヘッドポジショニングエラーがある場合、間違ったセクターにデータを書き込むことができますが、正しいチェックサム=>を使用すると、問題を検出できなくなります。そのため、ZFSのチェックサムは、保護するデータとは別に保存されます。
knweiss 09

ZFSには、Windowsのようなメンテナンスがありますか?それは基本的に磁気コーディングを更新するために定期的にデータを書き換えます。
TomTomの

現代のハードドライブはCRCを使用せず、非常に異なるハミングコードを使用します。ECCメモリが使用するものと同じです。1ビットのフリップエラーは修正できますが、2ビットのフリップエラーは検出できますが修正はできません。3ビット以上のビットフリップが発生し、データが実際に破損しています。いずれにせよ、データのバックアップに代わるものはありません。ZFSおよびその他のファイルシステムは、ドライブのプラッター上のハミングコードよりも優れた保護を提供しません。データが破損している場合、ZFSはユーザーを保存しません。
ジョディリーブルション

@JodyLeeBruchon現在主に使用されているハミングコードのソースを入手しましたか?最近私が行っている情報収集は、ドライブメーカーがまだCRC-RSを使用していることを示しています。1 2
イアンスクーノーバー

16

はい、それは主にドライブのサイズが大きくなるにつれて問題になります。ほとんどのSATAドライブのURE(修正不可能な読み取りエラー)レートは10 ^ 14です。または、統計的に12TBのデータを読み取るたびに、ドライブベンダーは、ドライブが読み取り失敗を返すと言います(通常、ドライブの仕様書で確認できます)。ドライブは、ドライブの他のすべての部分で引き続き正常に機能します。一般に、エンタープライズFCおよびSCSIドライブのUREレートは10 ^ 15(120TB)であり、SATAドライブの数は少なくなります。

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

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

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


2
どのユニットで話しているのですか?「10 ^ 14」は「レート」ではありません。
ジェイサリバン

2
単位は、たとえば「エラーごとに10 ^ 14ビット読み取り」となり、エラーごとに12 TB読み取りになります。
ジョー・リス

2
そしてもちろん、エラー率は通常、読み取られたビットごとのフルセクターエラーの観点から見積もられることに留意してください。したがって、製造業者がUREレートを10 ^ -14と指定すると、ランダムセクターの読み取りがUREにヒットする確率は10 ^ -14であり、そうであればセクター全体が読み取り不能として返されます。それと、これが統計であるという事実。現実の世界では、UREはバッチで来る傾向があります。
CVn

9

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

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

ドライブの詳細に応じて、セクタ内の複数の反転ビットから回復することさえできるはずです。静かに修正できる反転ビットの数には制限があり、おそらくエラーとして検出できる反転ビットの数には別の制限があります(修正するのに十分な信頼できるデータがなくなったとしても)

これはすべて、ハードドライブが発生するとほとんどのエラーを自動的に修正し、残りのほとんどを確実に検出できるという事実につながります。単一のセクターで多数のビットエラーが発生する必要があります。これらはすべて、そのセクターが再度読み取られる前に発生し、エラーは、内部エラー検出コードが再度有効なデータとして認識するようにする必要があります。黙って失敗するでしょう。それは不可能ではなく、非常に大規模なデータセンターを運営している企業はそれが発生することを確認します(むしろ、発生し、発生することを確認しません)。


2
実際、私は定期的にビットロートエラーを(私はあまり読まない部分で)持っており、それはシステムが(誤って)静かに回復します。少なくともビットが腐敗していると通知された場合は、データを再読み取りして、回復不能になる前に回復することができました。回復できない場合は、他のハードドライブと比較できます。
アレックス

アレックス、HDD SMARTデータとシステムRAMをチェックして、破損の原因となる別の問題がないことを確認してください。ビット腐敗/ランダムな破損は非常にまれであるため、マシンで別の問題が発生している可能性があります。
ブライアンD.

@BrianD。1つの問題は、ハードドライブを(断熱された)梱包材の中に入れておくことでした。これにより、作業中にハードドライブが何日もかけて60°C以上に熱くなっていました。それは、ビットの腐敗が発生した正当な理由のように聞こえますか?
アレックス

ほとんどのHDDには小さな空気穴があり、適切に動作するためにカバーすることはできません。あなたの問題がビット腐敗であるか何か他のものであるかどうか、私はすべてが正しく機能していることを確認するためにPCで完全な診断を実行します。
ブライアンD.

4

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

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

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


3

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

誰かの脳をゆがめる可能性のあるビットを扱っていない限り、リスクと報酬がファイルシステムを変更するまでには至っていないと思います。


1
子/親/祖父母のバックアップがどのように役立つかわかりません。ユーザーがビットを変更しようとしたためにビットが反転した場合、またはドライブが独自に変更したかどうかを、そのシステムで知る方法はありません。何らかの種類のチェックサムがないわけではありません。
scobi

複数のバックアップを作成しても、それらのデータが適切であることを知らない場合は役に立ちません。ファイルを手動でチェックサムできますが、ZFSの方がはるかに自動的に実行され、ファイルシステムの管理が簡単になります。
逆上

1
1週間または1か月よりも前に戻るバックアップがあると、ファイルの適切なコピーを取得できる可能性が高くなります。私はおそらくそれについてもっとはっきりできただろう。
カラマルフィア

1
問題は、不良コピーがあることをどのように知るかです。そして、どのコピーが良いコピーであるかをどのように知るのですか?自動化された方法で。
scobi

数年ごとに1つのファイルが破損する可能性がありますが、これはビット腐敗の結果である可能性がありますが、Small Fish Syndromeに苦しんでいる可能性があります。バックアップが役に立たないという話を理解できたので、不快な場合は削除します。それは関係なく、他の答えを読むのに十分な時間でした。;)
Kara Marfia

2

はい、それは問題です。

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

RAIDシステムは、ディスクブロックを定期的に読み取り、パリティをチェックし、不良ブロックが見つかった場合は交換するRAIDスクラビングも実行します。


注意してください、データの整合性はすべてのRAIDシステムの機能ではありません。
duffbeer703

1
テラバイトのドライブでは、運命を共有するビットが非常に多く、ビットの物理的な記憶領域が非常に小さいため、この問題はより重要になります。同時に、テラバイトドライブでは障害の可能性が非常に高くなるため、プールに大量のドライブ(たとえば8個以上)を入れない限り、RAID6では十分ではありません。ドライブの数が少ない場合、RAID 10とも呼ばれるミラーのストライプを使用することをお勧めします。ZFSでは、RAID 6(raidz2)とRAID 10(zpool create mypool mirror c0t1d0 c0t2d0 mirror c0t3d0 c0t4d0)の両方が可能です。
マイケルディロン

RAIDは、どのデータが良いのか、どのデータがそうでないのかを判断できないため、エラーを修正できず、エラーを検出するだけです。
逆上

アムック:「RAID規格」の一部としてではありませんが、高度なRAIDシステム(ファームウェアなど)がそれを行います
Matt Rogish

@ Michael Dillion-ドライブの数を増やしてもRAID6の信頼性は向上しません。すべてのデータについて、元のデータ+ 2パリティのみがあります。ドライブの数を増やすと、データの冗長性を増やさずにドライブの故障率を高めるため、信頼性が低下します。ドライブ数を増やす唯一の理由は、使用可能なストレージサイズを増やすことです。
ブライアンD.

1

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

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

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

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


0

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

写真でいっぱいのhddしか得られなかった場合、努力する価値はないかもしれません。それは重要な科学的データでいっぱいであり、別の種類の物語かもしれません、あなたはアイデアを得ました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.