誤って間違ったディスクからすべてのパーティションを削除してしまいました。
/dev/sda
はブート ディスクであり、/dev/sdb
RAID ミラーとして設定しようとしている新しいディスクです。
うっかりミスをして、/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
など) では次のようになります。
start
パーティションの先頭のオフセットを 512 バイトのセクター単位で格納します。size
パーティションのサイズが 512 バイトのセクター単位で格納されます (拡張パーティションを除く)。
5以上の番号のパーティションがある場合、それらは論理パーティションです(「拡張」パーティションと「論理」パーティションの違いは何ですか) は、拡張パーティション内に格納されます。拡張パーティションは 1 つ (またはまったくない) あり、パーティション 1 ~ 4 のいずれかになります。ファイルにはsize
拡張パーティションのサイズは含まれていないため、まずそれを決定する必要があります。拡張パーティションは、すべての論理パーティションが収まる大きさである必要があり、プライマリ パーティション (番号 1 ~ 4 の他のパーティション) を含んではなりません。
を実行しますfdisk /dev/sda
。 を使用してu
単位をセクターに切り替えます。拡張パーティションから始めて、n
適切なオフセットとサイズ (プロンプトに示されているように、+
サイズに関してはセクター数の前に を付けます) でパーティション ( ) を作成します。
p
パーティション テーブルが正しいかどうかを確認するために使用します。これらのパーティションの一部が Linux データ パーティションでない場合は、 を使用してt
そのタイプを設定します ( 82
Linux スワップの場合は 、c
Windows FAT32 パーティションの場合は 、7
Windows 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 がファイルシステムを見つけられない場合は、パーティションのオフセットが間違っています。エラーが報告された場合は、パーティションのサイズが間違っている可能性があります。ディスクに書き込んでいない限り、パーティションテーブルを修正することは可能ですディスクにパーティションがマウントされていない場合は、 を押すw
とfdisk
カーネルがパーティション テーブルを再度読み取ります。パーティションが適切に設定されれば、通常のシステムを再起動して通常どおり続行できるはずです。
答え2
gパート再起動した場合でも役立つはずです。