誤って起動ディスクのパーティションを削除しました。システムはまだ実行中です。どのように回復できますか?

誤って起動ディスクのパーティションを削除しました。システムはまだ実行中です。どのように回復できますか?

誤ってディスクのすべてのパーティションを誤って消去しました。

/dev/sda/dev/sdbRAIDミラーとして設定する新しいディスクであるブートディスク。

誤って間違いを/dev/sdaして/dev/sdb

システムはまだ動作しているため、どこかでキャッシュされたパーティションテーブルを実行しています。

パーティションテーブルを復元したり、少なくともパーティションを正確に再作成したりすることができますか?

fdisk /dev/sda -lパーティションは作成されません。

うん、スマートだと思います。

答え1

カーネルはパーティションテーブルをキャッシュに永続的に保持します(再ロードを明示的に指示しない限り、一部のパーティションが使用中の場合は再ロードできません)。したがって、再起動するまで安全です(またはカーネルに実際のディスクの内容を反映しないデータを操作するように指示します。たとえば、mdraidを有効にした場合は、そのメタデータをディスクに書き込んだ可能性があります)。

お持ちの場合最新情報ブートセクタ(最初の512バイト)をバックアップして復元できます(cat boot-sector-backup >/dev/sda- 復元するファイルのサイズが正確に512バイトであることを確認してください)。ブートローダのインストールによってブートセクタのバックアップが作成された可能性がありますが、アップグレードされた場合、またはそれ以降のパーティションを再分割した場合は、最新の状態ではありません。古い可能性があるバックアップを復元しないでください。

パーティションに関するカーネル情報にはアクセスできます/sys/class/block/sda/sda*。各パーティションのディレクトリ(sda1などsda2)から:

  • start512バイトセクタのパーティションの先頭へのオフセットを含みます。
  • size512バイトセクタのパーティションサイズを含みます(拡張パーティションを除く)。

パーティション番号が5以上の場合は論理パーティションです(参照:「拡張」パーティションと「論理」パーティションの違いは何ですか?)、拡張パーティションに含まれます。拡張パーティションの有無これはパーティション 1-4 の 1 つです。ファイルにはsize拡張パーティションのサイズが含まれていないため、最初にすべての論理パーティションを収容するのに十分な大きさでなければなりません。

ランニングfdisk /dev/sdau単位をセクタに切り替えるために使用されます。拡張パーティションから始めて、正しいオフセットとサイズでパーティション()を作成しますn(プロンプトに示すように、サイズについてはセクタ数の+前に置きます)。

pパーティションテーブルが正しいことを確認するために使用されます。パーティションの一部がLinuxデータパーティションではない場合を使用してtタイプを設定します(82Linuxスワップパーティションの場合、cWindows FAT32パーティションの場合、7Windows NTFSパーティションの場合)。起動可能なDOS / Windowsパーティションがある場合は起動可能フラグ(a)を設定します。

出力が正常であることを再確認し、w新しいテーブルをディスクにコミットします。

/sys/class/block/sda/ in a tar archive on a USB stick. Then reboot from a removable media. **After rebooting, if the partition table you created is not correct, you risk massive data corruption**. So from the removable media, run(don't forget thefsck -n -n mount`の内容を保存します) to check the consistency of the filesystems on each partition (don't use。オフセットが正しい場合にのみ機能します。オフセットは正確ですが、サイズが間違っているとディスクが破損する可能性があります(読み取り専用モードでもログに書き込まれるため)。

fsckがファイルシステムを見つけることができない場合、パーティションのオフセットは間違っています。エラーが報告されると、パーティションのサイズが間違っている可能性が高くなります。ディスクに書き込まない限り、パーティションテーブルを回復できます。。ディスクにマウントされたパーティションがないときにwキーを押すと、fdiskカーネルはパーティションテーブルを再読み込みします。正しく分割されたら、通常のシステムで再起動して正常に続行できます。

答え2

部分すでに再起動している場合でも役立ちます。

関連情報