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

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

誤って間違ったディスクからすべてのパーティションを削除してしまいました。

/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*。各パーティションのディレクトリ ( sda1sda2など) では次のようになります。

  • startパーティションの先頭のオフセットを 512 バイトのセクター単位で格納します。
  • sizeパーティションのサイズが 512 バイトのセクター単位で格納されます (拡張パーティションを除く)。

5以上の番号のパーティションがある場合、それらは論理パーティションです(「拡張」パーティションと「論理」パーティションの違いは何ですか) は、拡張パーティション内に格納されます。拡張パーティションは 1 つ (またはまったくない) あり、パーティション 1 ~ 4 のいずれかになります。ファイルにはsize拡張パーティションのサイズは含まれていないため、まずそれを決定する必要があります。拡張パーティションは、すべての論理パーティションが収まる大きさである必要があり、プライマリ パーティション (番号 1 ~ 4 の他のパーティション) を含んではなりません。

を実行しますfdisk /dev/sda。 を使用してu単位をセクターに切り替えます。拡張パーティションから始めて、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「fsck -n (don't forget the-n mount」の内容を保存します) to check the consistency of the filesystems on each partition (don't use。これは、オフセットが正しい場合にのみ機能し、オフセットは正しいがサイズが正しくない場合は、ディスクを損傷する可能性があります (読み取り専用モードであっても、ジャーナルが書き込まれるため)。

fsck がファイルシステムを見つけられない場合は、パーティションのオフセットが間違っています。エラーが報告された場合は、パーティションのサイズが間違っている可能性があります。ディスクに書き込んでいない限り、パーティションテーブルを修正することは可能ですディスクにパーティションがマウントされていない場合は、 を押すwfdiskカーネルがパーティション テーブルを再度読み取ります。パーティションが適切に設定されれば、通常のシステムを再起動して通常どおり続行できるはずです。

答え2

gパート再起動した場合でも役立つはずです。

関連情報