1

不良スーパーブロックを含む RAID 5 からデータを復元しようとしています。3 つのドライブすべてから同時にデータをダンプできるツールを g++ で作成し、不足しているドライブがある場合はそこからデータを作成します。ありません。1 つのドライブが 100% 同期されていないことはわかっているので、後でその機能が役立つ可能性があります。また、ディレクトリの検索に役立つASCII検索機能もありますが、3TBのデータの検索を完了するのに2日かかる可能性があります.

とにかく問題は、inode番号からダンプしたいブロックをどのように計算するのですか? inode * 16 + 36984の方程式を実行したときのinode番号0x02E00001は、inode 0x02E0A007と0x02E0A007を指し、データはraidの2つのドライブに保存され、常に2つのディレクトリを見つける可能性があります. ただし、私の計算では 0xA000 の inode が高く計算されます。過去 2 日間に私が思いついたすべての計算の中で、これは私が得ることができると思われる最も近いものです。

36984 は、データが RAID 用に 2 つのドライブにストライプ化されているため、1 を 2 で割った場合、inode ゼロの場所である可能性があります。この数は、ダンプの場所 37000 または ext4 の場所 74000 にある inode 2 であるルート ディレクトリを見つけることに基づいて計算しました。

4

2 に答える 2

0

わかりました、私が間違っている場合は修正してください。しかし、単純な答えは、inode 番号からブロックの場所を計算できないということのようです。Linux ext4 ドキュメントをもう少し徹底的に読んだ後、誰も質問に答えず、アイデアがありませんでした。ext4 エクステント ツリーに関する文書化が不十分なセクションを見つけました。どうやらこれがデータの場所を見つける方法です。明日か月曜日に詳しく調べます。

于 2014-03-15T05:22:16.540 に答える
0

私の質問に対する答えが見つかりました。私が書いているプログラムをGitHubに投稿しました。RAID ドライブを整列させ、inode データを読み取ることができます。次に、ファイルをプルします。

于 2014-03-21T23:23:13.780 に答える