web-dev-qa-db-ja.com

パーティションテーブルを修復する

システムのハードディスクのパーティションテーブルを上書きしました。間違ったデバイスでcfdiskを作成し(/dev/sdaではなく/dev/sdd)、すべてのパーティションを削除し、デバイス全体にまたがる1つの新しいプライマリを作成し、そのタイプを07(NTFS)に設定して、writeを押しました。 。

だからここで私は私のシステムを実行しています。再起動するまで、何も変わらないことを願っています-つまり、すべてのデータにアクセスできます(現在、デバイス全体のバックアップをdd-作成しており、最も重要な.tar.gz-バックアップを作成する予定です)後でデータ)。また、/proc/partitions/proc/diskstats(これはスループットやこのようなものに関するものだと思いますが...)、および/sys/block/sda/sda?/{start,size}もバックアップしました。

私が知っているいくつかのさらなること:

  • 4つのプライマリパーティション
  • 1番目のパーティション:〜100Mb、ext3、/ boot
  • 2番目のパーティション:〜100Mb、「Win7ブートパーティション」、ntfs(?)
  • 3番目のパーティション:〜20 ... 30GB、Win7、ntfs
  • 4番目のパーティション:〜20 ... 30GB、luksで暗号化されたデバイス
  • Luks- de暗号化されたデバイスはLVM-PVです
  • //home、およびswap-パーティションはすべて、上記のPV(上のVG)上のLVです。

だから私の質問:

  • カーネルパーティションテーブルをディスクに書き込む最も簡単な方法は何ですか?
  • 上記の(そしておそらく私が知らない他の...)データを取得してパーティションテーブルを生成する最も簡単な方法は何ですか?
  • Luksやlvmに関して注意すべき問題はありますか?
  • 再起動する前にバックアップする必要のあるデータはありますか(カーネル[/ sys/...、/ proc/...]など、パーティションテーブルの再生成に役立つ可能性のあるもの)?
4
m.sr

トリッキーすぎない。うまくいけば。

まず、/ dev/sda上のすべてのパーティションのサイズと順序に注意してください。

challenger:/home/michael # grep . /sys/block/sda/sda*/{start,size}
/sys/block/sda/sda1/start:63
/sys/block/sda/sda2/start:228690000
/sys/block/sda/sda3/start:257040
/sys/block/sda/sda1/size:256977
/sys/block/sda/sda2/size:83885760
/sys/block/sda/sda3/size:228432960

/ dev/sdaでfdiskを実行し、単位をセクターに変更します。

Command (m for help): u
Changing display/entry units to sectors

次に、パーティションの作成を開始します。パーティションごとに適切な番号startおよびsizeを使用します。
1つずつずれたエラーを回避します-fdiskに入力する前にsizeから1を引きます。

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First sector (63-312581807, default 63): 
Using default value 63
Last sector, +sectors or +size{K,M,G} (63-312581807, default 312581807): +256976

Command (m for help): p

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders, total 312581808 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x02b002af

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1              63      257039      128488+  83  Linux

パーティションIDを設定し、右側のパーティションのブートフラグを切り替えることを忘れないでください

ここでMBRを再インストールすると、準備が整います。


当然、お気に入りのパーティションエディタを使用してこれらすべてを行うことができます... partedも問題なく動作します。

パーティションの開始/終了に関する情報を失った場合-partedには、失われたパーティションがないかディスクを検索するための「レスキュー」オプションがあります。しかし、あなたはそれらを必要とすべきではありません。

5
MikeyB

パーティションテーブルが破損している場合は、RIPのブートディスク(Linuxでレスキュー可能)を使用してtestdiskを実行することをお勧めします。ちなみに、実行中のシステムからtestdiskを実行して、パーティションをスキャンして回復させることができるかもしれませんが、ファイルが開いている実行中のシステムに対してどうなるかわからないため、試してみません。

重要なデータのバックアップを試したい場合(まだ持っていないのですか?)、今がその良い機会です...

1