ハードディスクURE(回復不能な読み取りエラー)の粒度はどのくらいですか?


8

hddでUREが発生した場合のtl; drは、1ビット、1バイト、またはセクターのサイズ(512バイト、または4096バイトAF)が失われますか?可能であればその理由を説明してください。

背景: ここでの質問は、ハードディスクでデータの読み取りに問題がある場合に発生します。確かにディスクは完全に故障してすべてのデータが失われる可能性がありますが(DISK FAIL)、ここで私が尋ねるケース、ディスクのごく一部だけが失われる場合です(URE、訂正不可能な読み取りエラー)。

UREに関する情報を探しましたが、確かなことはほとんどわかりませんでした。これは、ドライブ内で何が起こるか、つまり、ECCS訂正のようなユーザーの直接的な対話から隠されていることが、ユーザーとしてアクセスするもの、つまりセクターに関係していることが原因である可能性があります。

hddがデータの読み取りに問題があるとしましょう。

その状況では、これは確かに次のいずれかを意味するはずです。

  • (a)セクターの一部のビットを読み取ることができない、または
  • (b)すべてのビットを読み取ることができますが、チェックサムテストに合格しません(もちろん、セクターの問題を想定して4096バイトは8 * 4096ビットだけではなく、エラーチェック/訂正用の追加のビット/バイト(つまり、パリティビット) )(c)????

(a)と(b)の組み合わせが発生し、4096セクターのバイトの信頼できる再構成が実行できない状況にある場合、必ずしもそれらすべてがガーページであると想定するのは過剰です。 、実際には、内部hddエラー修正ロジックを知っていれば、代わりに「何かがチェックアウトされていないように見え、適切な変更を加えた場合、ブロックデータの少なくとも1,2,3、nビット/バイトが「間違っている」と言うかもしれません。 」このセクターで "hello、hello .....、hello" ASCIIバイト文字列を重複して保存していた場合、 "..."になる前に "hello、hello ...."がかなり連続する可能性があります。 Uellohello ... "(つまり" e "->" U ")。

それでは、UREの細分度はどのくらいですか?

更新:不良セクターの考えを入力するコメントがありました(そしてこれがUREイベントの粒度を反映していることを示唆しています。それを示唆するのは不合理ではなく、おそらく質問への回答に使用できます。読み取り不可能な保留中のセクターについて尋ねる質問(ここでは/unix/1869/how-do-i-make-my-disk-unmap-pending-unreadible-sectors)が原因で、シナリオは確かに、UREの場合に失われるデータの間に、より不明瞭な線があります。


通常、ヘッドがクラッシュした場合、一度に数万ブロックが損傷します。ほこりなどの場合、近くのブロックにアクセスすると損傷が拡大する可能性があります。そのため、より大きな領域の一部と同じくらい簡単に再構築できることはほとんどありません。
JamesRyan

@JamesRyan良いヒント、それは常に悪化する可能性があります。たぶん私は、可能な限り最悪のケース(つまり、セクターを失うか、部分的には良い答えで解決されたので、セクターのデータの一部に応じてセクターデータの一部が解決された)について単に尋ねていたのかもしれません。おそらく、読み取り不可能なエラーの発生(およびその持続性、つまりランダムなビットの腐敗とヘッドクラッシュの影響)についてもっと知っておく必要があります。しかし、ここでは答えられる質問が必要なので、私は不必要に質問を複雑にする必要はありませんでした
人類と

回答:


8

ハードドライブのエラー修正コードは、各ハードウェアセクターに関連付けられている追加のデータチャンクです。書き込み中、ドライブファームウェアはこのデータを計算し、ユーザーのデータと共に書き込みます。ファームウェアの読み取り中に、データとともにECCが読み取られ、それらが一緒にチェックされます。

従来のハードドライブの場合、ハードウェアセクターは512バイトです。Advanced Formatドライブの場合は、4Kバイトです(ドライブがインターフェイスで512バイトまたは4Kバイトのセクターを提示しているかどうか、つまり512eと4knのどちらを使用していてもかまいません)。

読み取り後のチェックの結果には、基本的に3つの結果が考えられます。

  • セクターはエラーなしで読み取られました。これは、最近のハードドライブでは実際には完全に一般的ではありません。ビット密度は、ECCの動作に依存するような密度です。

  • セクターは修正可能なエラーで読み取られました。上記で暗示されているように、これは珍しいことではありません。期待されています。ドライブは、エラー訂正が適用されたデータをユーザーに返します。

  • セクターは読み取られましたが、「間違ったビット」が多すぎました。エラーを修正できませんでした。

後者の場合、ドライブは通常、内容をまったく返しません。エラーを示すステータスを返すだけです。これは、疑わしいビットを知ることができず、それらの値がどうあるべきかは言うまでもありません。したがって、セクター全体(ECCビットとすべて)は信頼できません。不良セクターのどの部分が不良であるかを特定することは不可能であり、その内容がどうあるべきかはもちろんです。ECCはセクター全体のコンテンツ全体で計算される「ゲシュタルト」であり、一致しない場合、一致しないのはセクター全体です。

SpinRiteは、ドライブが「修正不可能なエラー」と言っても、データを返す(ただしECCビットはない)「メンテナンス読み取り」関数を使用して、単に不良セクターを何度も読み取ろうとするだけで機能します。DavidPostillによってリンクされた説明で述べたように、エラーのない(実際には「修正可能」である可能性が高い)読み取りで成功する可能性があります。または、本質的には返されたビットを平均することにより、セクターの内容を合理的に推測できる場合があります。ドライブほど正確には、ECCを使用してエラーを正確に修正することはできません。それは数学的に不可能です。


4096バイトのペイロード内のデータ自体が4000バイトのペイロードと別の96バイトのECCを組み合わせたものである場合、数学的にまだ不可能ですか?(たとえば、私がデータストアレイアウトの回復可能性のための容量を犠牲にしたいと思っていたからですか?)
humanityANDpeace

私の推測では、データの内部にそれ以上の冗長性はないという暗黙の仮定の下では、数学的には不可能だと思います。-そしてまた素晴らしい答え!
humanityANDpeace

1
承知しました。その時点では、それはもう1つの信頼できないチャネルですが、十分な冗長性がある場合は問題になります。問題は、ドライブがエラーを修正不可能と見なした場合、OSの標準ディスクドライバーがセクターの内容をまったく提供しないことです。RAID-5および類似のパリティースキームは、既存のセクターのデータフィールド内ではなく、「外層」で同じことを行っています。
Jamie Hanrahan、2015

すべて(リクエストで)恩返しするために、OSドライバとの「キャッチ」は、さえ未検証データは、私は特にこのことについて尋ねたWindows以外のユーザーとして、問題となっているunix.stackexchange.com/questions/228254/...
humanityANDpeace

3

UREの粒度はどのくらいですか?

回復不能な読み取りエラー(URE)は、セクターの読み取りエラーです。エラーなしでセクターを読み取ることができない場合、それが1バイトだけであるか、セクターのすべてのバイトであるかは関係ありません。

粒度はセクターサイズです。

1バイトだけが失敗した場合でも、通常、専門のソフトウェアを使用せずにそのセクターからデータを取得することはできません。


故障したセクターのデータを回復できますか?

SpinRiteさんのコメント

SpinRiteは、完全に読み取ることができないセクター内のほとんどのデータを回復することもでき、他のユーティリティソフトウェアは完全に破棄します。

SpinRiteが読み取り不可能なデータを回復する方法を参照してください。


免責事項。

私はいかなる方法でもSpinRiteとは提携しておらず、使用したことがありません。


1
私はこれが良い答えだと思う傾向があります。必ずしもUREの場合はセクター(つまり、4kのデータ)を完全に失う必要があることに同意する必要はありませんが、hddはその共有さえ破棄する可能性があるためですまだ価値がある「不良セクター」。SpinWriteの議論の提示はこのアイデアを支えているので、答えはすばらしい洞察も提供します。
humanityANDpeace

2

ヘッドが正しいトラックにシークできないなどの深刻なハードウェアエラーがないか、サーボトラックが破損していて正しいセクターが見つからない場合を除き、「ビットを読み取れません」などの問題はありません。 。どちらの場合でも、少なくとも、読み取り不可能なセクター全体が存在することは明らかです。

そうでなければ、あなたは常にビットを取り戻します、それらはおそらく間違ったビットです。これがエラー修正コードの出番です。データビットとECCビットの正しい組み合わせが代数的規則を遵守するように、すべてのセクターにいくつかの余分なECCビットを追加します。すべてのビットが正しく読み取られた場合、コードが検証され、データを直接返すことができます。少数のビットが誤って読み取られた場合、ECCコードを使用してどのビットを正確に判別し、それらを修正して、すべてのデータが正しく戻されるようにすることができます。より多くのビットが誤って読み取られた場合、ECCコードはエラーがあったことを検出できますどのビットが誤っているを把握するのに十分な情報がありません。これは修正不可能な読み取りエラーです。もし非常に多数のビットが誤って読み取られると、コードが「偶然」に正しく検証され、ドライブが破損したデータを返す可能性がありますが、ECCビットが十分にあれば、これが発生する確率を好きなだけ小さくすることができます。

だから、私があなたが得ていたと思う質問に答えるために-部分的な読み取りエラーがあったが、エラーがどこで発生したかを理解するのに十分な情報が利用できた場合、それも修正でき、コンピュータはまったくエラーを認識しません。これは実際には常に起こります。未修正エラーは、有効なデータビットと無効なデータビットを判別できない場合に発生します。エラー修正コードはセクター全体で計算されるため、これはセクター単位で行われます。


1

それに見て、答えに触発されたhttps://superuser.com/a/969917/160771からhttps://superuser.com/users/337631/davidpostill

少し拡張的な代替の答えを提示したいと思います。まず、ハードディスクとそのファームウェアがUREイベント、つまりデータを読み取ることができないイベントの発生源であることは事実です。さらに、データが512または4096バイトの使用可能なデータのセクターでディスクに書き込まれ、エラーチェックと訂正を可能にする50またはそれぞれ100バイトの追加データが書き込まれることは事実です。

したがって、UREについて言えば、ハードディスクセクターのコンテキストで自然に発生します。不良セクターという用語は確かにある程度関連していますが、UREセクターがある場合の状況とは異なります。

エラーなしで読み取られるいくつかの問題があるセクターは、必ずしも完全に無意味であるとは限りません。実際に4096のデータすべてが破損している可能性がありますが、確実に修正できるよりも1ビットだけ多く(各セクターに追加された余分なECCデータが追加されて)破損している可能性もあります。

hddが訂正できなかった数バイトのみが破損しているケースでは、4096バイトの一部に意味のあるデータがあるという変更があります。

例としては、4096が2文のASCII文字バイトを表す場合があります。その場合、1文以上のハットが完全に無傷である可能性があります。また、2番目または3番目の文字がすべて削除されている可能性もあります。したがって、UREイベントで4096のデータが失われた場合は、解釈次第であり、データに依存します。データ自体にECCシェルの別のレイヤーがあり、さらに回復できるようになることを想像できます。

したがって、ほとんどのファームウェアがUREセクターを不良セクターとは異なる方法で処理するのは良いことです。

通常、セクターの自動再マッピングは、セクターが書き込まれたときにのみ行われます。この背後にあるロジックは、おそらくセクターが正常に読み取れなくても、データ回復方法で読み取ることができる可能性があることです。(https://en.wikipedia.org/wiki/Bad_sectorから )

あるいは、ある程度、セクターの一部にまだ使用可能なデータが含まれている可能性があります。


この記事は「専門家の注意が必要」、「オリジナルの調査が含まれている可能性がある」、および特定のステートメントは「引用が必要」としてマークされていることに注意してください。それが書かれている方法(「おそらく」??)も、高品質のソースマテリアルと照合できるものではなく、誰かが推測しているように聞こえます。
CVn '20年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.