web-dev-qa-db-ja.com

ファイルはext2 / ext3 / ext4でどのようにレイアウトされますか?

数日前、ext4フォーマットのフラッシュカード上のすべてのメタデータが上書きされました。

これがどのように起こったかについて推測します。これは純粋な憶測です。別のカードを使った直後に起こった。カードのボリュームラベルは、他のカードと同じになりました。そのため、他のカードを引っ張ったときに、同期/アンマウントに失敗したのではないかと思います。カードが引っ張られたときにカードリーダーがシステムに適切に通知しないため、次のシステムが同期を生成し、システムは私がカードを変更したことを認識せず、メタデータを上書きしました。

これが起こったときに私が最初にしたことは、ddを使用してイメージを作成することです。次に行ったのは、画像を読み取り専用にすることでした。私がした3番目のことは、画像の書き込み可能なコピーを作成することです。

私はphotorecを発見しました。これは、すべてではありませんが、いくつかのものを回復することができました。この理由の1つは、非破壊的であるためだと思います。

復元されたファイルの一部はテキストであるため、photorecはファイル形式に関する最小限の情報を使用していると思われます。

カードから他のファイルを回復しようとするには、ext2でファイルがどのように配置されているかを知る必要があります。基本的には、ファイルがブロックに分割されてセクターに書き込まれ、次のセクターを見つける方法に関する情報が現在のセクターに何らかの形で書き込まれているのではないかと思います。

私が一番先に進める必要があるのは、次のセクターへのポインターがどのように書かれているかについての情報です。

PS:photorecコードを読んでいますが、読むのに問題があります。それが私なのか、コードが醜いのか、私にはわかりません。

PPS:extファイルシステムのレイアウトに関する情報をいくつか見つけましたが、基本的なファイルレイアウト情報が見つからないようです。

8

PhotoRecは、ディスク(またはディスクイメージ)をスキャンして、既知のファイル形式のように見えるバイトの連続したチャンクを検索します(たとえば、セグメントヘッダーによってJFIF/EXIF(JPEG)を認識できます)。非常にシンプルですが、制限があります。

The Sleuth Kit は、ファイルシステムを掘り下げるための優れたツールです。少し注意すれば(そして、ツールのスクリプトを作成し、ディスクイメージが迷ったときに16進編集する)、リカバリに使用できます。

Extをより深く理解するツールについては、 ext4magic ?を試してください。 (私はまだこれを使用する必要はありませんでした。)

Documentation/filesystems/ext2.txt カーネルソースには、一般的な構造の概要があります。 Ext4 Wiki には、 Ext4 Disk Layout 詳細を含む(主にext [23]にも適用される)などの適切な情報があります。

しかし、はい、ファイルのデータはブロックに分割されます。 ext2では、各ファイルは、直接ブロック(データブロックへのポインター)、間接ブロック(直接ブロックへのポインターを含む)、二重間接ブロック、および三重間接ブロックを含むiノードで表されます。バックリンクがないため、データブロックの兄弟を見つけるには、最初にすべてのiノードとブロックポインタをスキャンして、その所有者を見つける必要があります。

4
ephemient