testdisk - パーティションテーブルを回復する

testdisk - パーティションテーブルを回復する

ノートパソコンのパーティションテーブルを破壊してしまいました。

Testdiskは以下のことを報告します

Disk laptop.img - 250 GB / 232 GiB - CHS 30402 255 63 (RO)
 Partition               Start        End    Size in sectors
>P MS Data                   435868     456606      20739 [NO NAME]
 P MS Data                 19232600   19235479       2880 [NO NAME]
 D MS Data                 41945087   83890143   41945057
 D MS Data                 57151486  168579069  111427584
 D MS Data                 67637246  141037565   73400320
 D MS Data                151523326  193466365   41943040
 D MS Data                170617328  170618223        896
 D MS Data                170631168  170634047       2880
 D MS Data                171338232  171344405       6174 [Boot]
 D MS Data                172008235  172231918     223684 [NO NAME]
 P MS Data                193466368  214437887   20971520
 D MS Data                217321375  225321678    8000304 [root]
 D MS Data                224923646  308809725   83886080 [media]
 D MS Data                308809728  420237311  111427584
 D MS Data                418910206  481824765   62914560 [vmimages]

私のパーティション テーブルには 3 つのプライマリ パーティションがありました。

 1. WinXP Home
 2. /boot
 3. LVM

LVM 内には 9 個または 10 個の LVM パーティションがありました。そのうちの 1 つは私のホームでした (luks で暗号化)

testdisk はパーティション テーブルや他のパーティションを回復できません。[P] の付いたパーティションには有用なデータがありません。

dd を使用してパーティションを抽出し、できるだけ多くのファイルを復元したいと考えています。上記の testdisk レポートから [root] lvm パーティションなどを抽出する方法について何かアイデアはありますか?

ディスクも破損しているのではないかと心配です。

答え1

okei、これが私が今までやってきたことです。ストレスの多い時に他の人がこれを読まなくて済むことを心から願っています。

だから私は2つのものが必要なのです

a. partition table
b. LVM configuration.

ディスク イメージに何かありますか? ディスク イメージで文字列を検索して、役立つ情報を抽出します。

# strings -t d laptop.img > laptop.img.str

これは非常に大きなファイルになる可能性があることに注意してください。250Gb のディスクの場合、私の laptop.img.str は約 60Gb です。

これを実行する必要があるのは、250 GB のディスク イメージ ファイルではなく、60 GB のファイルで検索する方がはるかに効率的だからです。

# head -1 /etc/lvm/backup/VG_file 

次のような結果が返されます:

# Generated by LVM2 version 2.02.98(2) (2012-10-15): Mon Nov  5 09:10:16 2012

だから、laptop.img.strで「# LVM2バージョンで生成」を検索する必要があることが分かりました。

# grep -E --color '# Generated by LVM2 version ' laptop.img.str > LVM2.extracts

たくさん見つかりました。日付を並べ替えると次のようになります:

24956608512 # Generated by LVM2 version 2.02.97(2) (2012-08-07): Sat Sep 22 16:22:39 2012

結果でした。

okei lvm2 構成には便利なものがあるんですね。

次のステップ。

ほぼすべてのディスクには 512 バイトのセクターがあるので、次のように計算します。

# echo 24956608512/512|bc
48743376

うーん、何か面白いものが見つかるといいですね。

# dd if=laptop.img bs=512 skip=48743376 count=1 

そして実際、とても美しいものが私の画面に現れました

# Generated by LVM2 version 2.02.97(2) (2012-08-07): Sat Sep 22 16:22:39 2012

contents = "Text Format Volume Group"
version = 1

description = "Created *after* executing 'lvextend -l +100%FREE /dev/vg01/mmoviess'"

creation_host = "mylaptop"  # Linux mylaptop 3.5.3-1-ARCH #1 SMP PREEMPT Sun Aug 26 09:14:51 CEST 2012 x86_64
creation_time = 1348320159  # Sat Sep 22 16:22:39 2012

カウントを 1 から 4 に変更すると、LVM2 conf ファイル全体が取得されます。安全な場所にバックアップし、パーティション テーブルを続行します。

3 つのプライマリ パーティションがあることがわかりました。 sda1 - sda2 - sda3 そこで、laptop.img.str でそれらを検索しようと思いました。

最終的に、上記の手順で次のことがわかりました。

Disk /dev/sda: 250.1 GB, 250059350016 bytes, 488397168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000b13ab

   Device Boot      Start         End Blocks   Id System
/dev/sda1   *          20    41945087    20972534    7  HPFS/NTFS/exFAT
/dev/sda2        41945088    42469375      262144   83  Linux
/dev/sda3        42469376   488397167   222963896   8e  Linux LVM

Testdisk レポートはまったく役に立ちませんでした。

hexdump は私の新しい親友になりました!

また、次のものも便利です: -a -b パラメータ付きの grep と、オフセット パラメータ付きの losetup ! 追加のソフトウェアやインストールは一切不要です。

強力な使用法を備えた基本的なコマンドだけです。

関連情報