ドライブでエラーが発生した場合、それは常に検出され、読み取り失敗としてOS(mdadmなどのソフトウェアRAIDの場合)またはRAIDコントローラー(ハードウェアRAIDの場合)に報告されると想定するのは正しいですか(つまり、エラーは発生しません)。破損したデータをサイレントに返す)、その後、RAIDソフトウェア/コントローラーはその事実を取得し、代わりにRAID内の他のドライブを使用してデータを読み取ります(冗長性のあるRAIDタイプであると想定)?
私の理解では、最新のエンタープライズグレードのドライブにはエラー検出方式が導入されているため、これが当てはまると思いますが、オンラインで決定的なものを見つけるのに苦労しました。この答えは、ドライブに組み込まれているエラー検出の品質にある程度依存していると思います。したがって、重要な場合は、Intel DC S3500シリーズSSDに関してこれに最も興味があります。 。
編集5- 2015年6月-説明:
具体的には、エラーの検出に今日使用されているアルゴリズムが防弾であるかどうか疑問に思っています。簡単な例では、エラー検出がセクター内のすべてのビットでXORを実行しているだけの場合、2つのビットが反転した場合、エラーは検出されません。それよりも進んでいますが、エラーが検出されなくなる可能性はどのくらいで、それが低すぎて心配する必要がないのか、そしてこれに関する信頼できる情報源や信頼できる記事がどこかに引用できるのではないかと思います。
2015年6月10日編集
質問のタイトルと本文を更新して、ディスクエラーの概念をより一般的にしました(元々のようにmdadmを中心としていませんでした)。
ハードドライブには、データの破損を防ぐための多数のエラー訂正方法があります。ハードドライブはセクターに分割されており、そこから完全に書き込み不能/読み取り不能になったり、データの破損によって間違ったデータが返されたりする可能性があります-最初の不良セクターの破損と後者サイレントデータ破損。
不良セクタの破損
最初の破損は、ドライブ自体によってさまざまな方法ですでに処理されています。工場では、製造されたすべてのドライブの不良セクタがテストされ、一次欠陥リスト(p-list)に入れられます。ドライブの通常の使用中に、内部システムは通常の摩耗によってより多くの不良セクタを見つける可能性があります-これらはGrown Defect List(g-list)に入れられます。一部のドライブにはさらに多くのリストがありますが、これら2つが最も一般的なものです。
ドライブ自体は、オペレーティングシステムに通知せずに、ハードドライブセクターへのアクセスをスペアセクターに再マッピングすることにより、これらのエラーに対抗します。ただし、リマップが発生するたびに、ハードドライブの適切な値SMARTシステムが増加するため、ハードドライブの摩耗が増加していることを示します。探すべき指標はSMART 5-再割り当てされたセクター数。その他の重要なものは187(報告された修正不可能なエラー)、197(現在保留中のセクター数)、および198(オフライン修正不可能)です。
不良セクタを見つけるために、ハードドライブは内部エラー訂正コード(ECC)を使用します。これは、特定のセクタのデータの整合性を判断するために使用できます。このようにして、セクターの書き込みエラーと読み取りエラーをチェックし、必要に応じてgリストを更新できます。
出典
サイレントデータ破損
内部データの整合性チェックが非常に多いため、サイレントデータの破損は非常にまれです。結局のところ、ハードドライブにはデータを確実に永続化するタスクがあるため、実行する必要があります。その1つの仕事を正しく。
ユーザーが読み取りまたは書き込みを要求した以外のサイレントデータ破損の量を最小限に抑えるために、RAIDシステムはドライブ全体のECCを定期的にチェックして、gリストを更新します(データスクラビング) 。エラーが発生した場合、セクターECCをチェックした後、データは別のRAIDメンバーから再構築されます。
ただし、すべてのデータ修正と整合性チェックは、ファームウェアのどこかで実行する必要があります。これらの低レベルプログラムのエラーは、機械的な問題や誤検知のECC合計と同様に、依然として問題を引き起こす可能性があります。例としては、チェックされていない書き込みがあります。この場合、ファームウェアは誤って書き込みの成功を報告しますが、実際のハードドライブの書き込みは発生しなかったか、障害がありました(IDの不一致)。
これらの障害の統計的発生に関するいくつかの研究があり、ファイルシステムのデータ整合性チェックでは、基になるドライブが問題を報告せずに障害が報告されたため、サイレントデータの破損が示されました。
[〜#〜] tldr [〜#〜]:平均してコンシューマーディスクで0.3%未満、エンタープライズディスクで0.02%未満にこのようなIDが含まれていました150万個のディスクがチェックされた17か月間の不一致(合計365個のディスクでIDの不一致がありました) この資料 の表10およびセクション5を参照してください。
出典
まあ、物事はもう少し複雑です。
最新のハードドライブは、エラーを検出するだけでなく、不良セクタを再配置しようとするスペアセクタとスマートコントローラを備えています。つまり、論理セクターを読み取ろうとして最初に読み取られなかった場合、コントローラーはそれを数回読み取ろうとしますが、再試行後に読み取ることができる場合もあります。次に、データをスペアセクターに書き戻し、論理セクターを新しいセクターに再マップし、古いセクターを不良としてマークし、最後にデータを提供します。これらのプロセスはすべて読者に対して完全に透過的であり、エラーに気付くことはありません。ただし、これは通常S.M.A.R.T統計に反映され、これがますます頻繁に発生する場合は、実際に障害が発生する前にドライブに障害が発生することがわかります。そのため、システムでSMART監視ツールを使用することが非常に重要です。
セクターがまったく読み取らない場合、またはコントローラーがスペアセクターを使い果たした場合、読み取りエラーがドライブから返されます。エラー検出はかなり防弾になり、セクターデータにある種のCRCを使用します。読み取りエラーが返されると、mdadmはそれを認識し、ドライブを使用不可としてマークし、アレイを劣化モードに切り替えます。
はい、mdadmはそのようなエラーを検出し、故障したドライブを欠陥としてマークし、冗長性が利用可能な場合は劣化モードで機能し続ける作業アレイからドロップします。
ただし、AFAIK mdadmは、ドライブ固有のエラー検出機能を照会するのではなく、汎用I/O要求(任意のドライブで機能)に応答してドライブから受信したエラーに基づいて、「ソフトウェア」レベルでこれを実行します。