-1

これが頭の体操です!

64バイトあり、各バイトは8ビットと1パリティビットであるとしましょう。

さらにLRCチェックバイトがあるとしましょう(64バイトすべてをビット単位でXORすることによって形成されます)

したがって、これを8 + 1 x 64*1グリッドとして視覚化できます

1ビットが破損している場合、パリティチェックはそのビットにフラグを立てます。1行はパリティチェックに失敗し、1列も失敗します。

したがって、問題のあるビットを見つけて逆にするのは簡単です。

ただし、正方形に配置された4つの破損したビットは、パリティチェックをだまします。問題のある各行と列に2つの不正が含まれるため、正しいパリティ読み取りが行われます。

しかし、これは非常にありそうもないシナリオです。

私の質問は、この方法でデータセットを修復するにはどうすればよいですか?どのくらいの修理が可能ですか?

私の直感は、わずかに損傷したデータセットを修復するための賢明な方法があるに違いないということです...

4

3 に答える 3

1

64 バイト、各バイトは 8 ビット + 1 パリティ ビット LRC チェック バイト (64 バイトすべてをビットごとに XOR することによって形成) 64 + 8 バイトは、バイト ワードあたり 1 パリティ ビットとして使用されます。したがって、各ブロックには 64 データ + 9 パリティ バイトが含まれます。

ビットがブロックのパリティビットでない場合、LRCはブロックが不良であることを通知します(大きな仮定)。どのバイトが不良であるかを知っているので、共感を計算できます。いくつかの異なるビットをブルートフォースして、lrcと両方を修正できます。両方が一致するまでのバイトですが、単一の lrc は、一致する組み合わせを取得する可能性が 1/256 であることを示すだけなので、「固定」の基準を満たす数学データのセットを取得します。

ファイルの種類がわかっている場合は、データ回復の可能性が向上します。たとえば、ファイルの種類がテキストであることがわかっている場合、バイト 5 は大文字または小文字であり、英数字および一般的な文字の領域にない数字は無視される可能性があります。

そうです、技術的には、このようなスキーマを使用してブルート フォース データを元の状態に戻すことが可能です。

これを行うことにした場合は、64 ブロックあたり 50 バイトのデータとしてブロックすることから始めることをお勧めします。これにより、数学モデルを実装するための 14 バイトのパリティが残ります。14/64 は 16/64 に近いか、ブロックに含まれるバイトの 1/4 はレスキュー用です。

データ セットの 1/4 が失われますが、ある程度の安定性が得られます。あなたの例 9/71 では、データの約 13% が使用されています。

以前、データ リカバリでこのようなブルー​​ト フォース データ セットを使用したことがありますが、ほとんどの場合、成功したと判断することは不可能です。

たとえば、1 メガバイトのファイルがあり、パリティに対する共感が 4 つの領域で損なわれているとします。これは MP4 ファイルまたは zip ファイルであり、非常に損傷が深刻です。

損傷が 1 ブロックあたり 1 ビットに制限されていて、ファイルを修復できる可能性が高い場合。ブロックごとに 2 ビットと言う場合、ブロックごとに 2 つの領域が破損し、可能性のあるファイルに対して 8 乗のシーケンスが得られることがわかります。64 個のファイルを生成し、それぞれを解凍しようとすることもできますが、損傷が 1 ブロックあたり 3 ビットであるとすると、8 立方体になっている可能性があります。

このようなものを力ずくで修復することは可能であり、私は緊急時にそうしましたが、成功は限られていました.

于 2013-04-11T21:40:09.447 に答える
0

8 + 1 x 64+1グリッドを意味していると思います。

非パリティビットの1つが破損していると想定します。データバイトのパリティビットは、バイトにフラグを立てます。すべてのバイトのパリティは、破損した列(ビット)にフラグを立てます。すべて良い。

「通常の」データバイトのパリティビットの1つが破損していると想定します。余分なパリティバイトの最後のビットはそれにフラグを立てますね?

パリティバイトのパリティビットの1つが破損していると想定します。余分なパリティバイトの最後のビットはそれにフラグを立てますね?

では、そのビットの値はどのように定義されますか?

于 2011-12-02T04:14:45.243 に答える
0

列または行ごとに 1 ビットの 2 次元パリティ修復は、検出可能であるだけで修復できません。

一定量の損傷に対してデータセットの2次元で修復可能な共感を構築する方法に関して...私はかつて、各方向の6バイトごとに1バイトがある場合、各方向の1ビットの破損が復元可能であると計算しました配列。

おそらくwikiのraid 5とraid 6のアーキテクチャを調べてください。ドライブ間に広がるセクターと同様の方法を採用しています。

于 2013-04-11T20:46:35.103 に答える