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

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

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

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

私が知っているその他の事柄:

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

私の質問は次のとおりです:

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

答え1

それほど難しくはない。うまくいけば。

まず、/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 つずれたエラーを回避するには、sizefdisk に入力する前に 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 にはディスク上で失われたパーティションを検索する「レスキュー」オプションがあります。ただし、それらは必要ありません。

答え2

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

重要なデータのバックアップを試してみたい場合 (まだバックアップしていない場合は)、今がそれを実行する良いタイミングです...

関連情報