誤ってディスクのすべてのパーティションを誤って消去しました。
/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-4 の 1 つです。ファイルにはsize
拡張パーティションのサイズが含まれていないため、最初にすべての論理パーティションを収容するのに十分な大きさでなければなりません。
ランニング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
(don't forget the
fsck -n -n mount`の内容を保存します) to check the consistency of the filesystems on each partition (don't use
。オフセットが正しい場合にのみ機能します。オフセットは正確ですが、サイズが間違っているとディスクが破損する可能性があります(読み取り専用モードでもログに書き込まれるため)。
fsckがファイルシステムを見つけることができない場合、パーティションのオフセットは間違っています。エラーが報告されると、パーティションのサイズが間違っている可能性が高くなります。ディスクに書き込まない限り、パーティションテーブルを回復できます。。ディスクにマウントされたパーティションがないときにw
キーを押すと、fdisk
カーネルはパーティションテーブルを再読み込みします。正しく分割されたら、通常のシステムで再起動して正常に続行できます。
答え2
部分すでに再起動している場合でも役立ちます。