gpartedを使用してパーティションテーブルを消去しました。パーティションを復元する方法はありますか?

gpartedを使用してパーティションテーブルを消去しました。パーティションを復元する方法はありますか?

「デバイス - >パーティションテーブルの作成...その後、適用」をクリックしてgpartedを使用してNTFS(Windows)パーティションテーブルを消去しました。 NTFSパーティションを復元する方法はありますか?

このコマンドを試してみて、gpart /dev/sda 次のような結果を得ました。

Begin scan...
End scan.

Checking partitions...
Ok.

Guessed primary partition table:
Primary partition(1)
type: 000(0x00)(unused)
size: 0mb #s(0) s(0-0)
chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r

Primary partition(2)
type: 000(0x00)(unused)
size: 0mb #s(0) s(0-0)
chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r

Primary partition(3)
type: 000(0x00)(unused)
size: 0mb #s(0) s(0-0)
chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r

Primary partition(4)
type: 000(0x00)(unused)
size: 0mb #s(0) s(0-0)
chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r

この出力はどういう意味ですか?回復する方法はありますか?

答え1

パーティション表を回復できますが、2つの条件を満たす必要があります。

  1. コンピュータを再起動しませんでした。
  2. テーブルを交換するときにドライブが使用中でした。

どのように機能するかは、カーネルがパーティションレイアウトをメモリに保持することです。パーティションが使用されている場合は、パーティションの開始場所を知る必要があるため、使用しなくなるまで新しいテーブルの再ロードを拒否します。

これを行うには:

行く/sys/block/sda。これには、各パーティションsda1(など)のディレクトリが表示されますsda2。各ファイルにはstartand size(so)というファイルがあります/sys/block/sda/sda1/start。まったく同じ開始位置とサイズでパーティションテーブルを再作成してもかまいません。

パーティションタイプは保持されません。 Linuxはこの情報に興味がありません。したがって、再作成後、パーティションの種類が何(NTFSまたはその他)に設定されているかを覚えておく必要があります。


はい

ソースディスク:

#fdisk -l /dev/sdc

ディスク /dev/sdc: 8006MB, 8006926336 バイト, 15638528 セクタ
単位= 1 * 512 = 512バイトセクタ
セクタサイズ(論理/物理):512バイト/512バイト
I/Oサイズ(最小/最適): 512バイト/512バイト
ディスク識別子:0x000ce29c

   デバイス起動開始エンドブロックIDシステム
/dev/sdc1 2048 2099199 1048576 83 Linux
/dev/sdc2 2099200 15638527 6769664 83 Linux
#grep sdcマウント|
/dev/sdc2 /mnt/tmp の xfs(rw) タイプ
#猫/mnt/tmp/世界
こんにちは

パーティションテーブルの消去

#fdisk /dev/sdc
fdisk(util-linux 2.22.2)へようこそ。

変更は書き込みとして決定するまでメモリに残ります。
writeコマンドを使用する前に注意してください。


コマンド(ヘルプはm):d
パーティション数(1-4):1
パーティション1が削除されました。

コマンド(ヘルプはm):d
選択したパーティション2
パーティション2が削除されました。

コマンド(ヘルプはm):p

ディスク /dev/sdc: 8006MB, 8006926336 バイト, 15638528 セクタ
単位= 1 * 512 = 512バイトセクタ
セクタサイズ(論理/物理):512バイト/512バイト
I/Oサイズ(最小/最適): 512バイト/512バイト
ディスク識別子:0x000ce29c

   デバイス起動開始エンドブロックIDシステム

コマンド(ヘルプはm):w
パーティションテーブルが変更されました!

パーティションテーブルを再読み込みするには、ioctl()を呼び出します。

警告:エラー16のため、パーティションテーブルの再読み込みに失敗しました。デバイスまたはリソースが使用中です。
カーネルはまだ古いテーブルを使用しています。新しいテーブルは次の目的で使用されます。
次回の再起動時、または partprobe(8) または kpartx(8) の実行時に
ディスクを同期します。

まだインストールされていてアクセスできることに注意してください。

#猫/mnt/tmp/世界
こんにちは

オフセットの取得

#CD /sys/class/block/sdc

#ls
alignment_offset device@events_poll_msecs 電源/ro スレーブ/
bdi@discard_alignment ext_range キュー/sdc1/stat
機能イベントホルダー/範囲sdc2/subsystem@
dev events_async 機内リムーバブルサイズ uevent

#猫sdc1 /スタート
2048年

#catsdc1/サイズ
2097152

#猫sdc2 /スタート
2099200

#catsdc2/サイズ
13539328

パーティション表の回復

#fdisk /dev/sdc
fdisk(util-linux 2.22.2)へようこそ。

変更は書き込みとして決定するまでメモリに残ります。
writeコマンドを使用する前に注意してください。


コマンド(ヘルプはm):n
パーティションタイプ:
   p基本(基本0個、拡張0個、アイドル4個)
   拡大する
選択(デフォルト値p):p
パーティション数(1〜4、デフォルト値1):1
最初のセクタ(2048-15638527、デフォルト値2048):2048
最後のセクタ、+セクタ、または+サイズ{K、M、G}(2048-15638527、デフォルト値15638527):+2097151
Linuxタイプとサイズ1GiBのパーティション1の設定

コマンド(ヘルプはm):n
パーティションタイプ:
   pメイン(メイン1個、拡張0個、無料3個)
   拡大する
選択(デフォルト値p):p
パーティション数(1〜4、デフォルト値2):2
最初のセクタ(2099200-15638527、デフォルト値2099200):2099200
最後のセクタ、+セクタ、または+サイズ{K、M、G}(2099200-15638527、デフォルト値15638527):+13539327
Linuxタイプとサイズ6.5GiBのパーティション2の設定

コマンド(ヘルプはm):p

ディスク /dev/sdc: 8006MB, 8006926336 バイト, 15638528 セクタ
単位= 1 * 512 = 512バイトセクタ
セクタサイズ(論理/物理):512バイト/512バイト
I/Oサイズ(最小/最適): 512バイト/512バイト
ディスク識別子:0x000ce29c

   デバイス起動開始エンドブロックIDシステム
/dev/sdc1 2048 2099199 1048576 83 Linux
/dev/sdc2 2099200 15638527 6769664 83 Linux

コマンド(ヘルプはm):w
パーティションテーブルが変更されました!

パーティションテーブルを再読み込みするには、ioctl()を呼び出します。

警告:エラー16のため、パーティションテーブルの再読み込みに失敗しました。デバイスまたはリソースが使用中です。
カーネルはまだ古いテーブルを使用しています。新しいテーブルは次の目的で使用されます。
次回の再起動時、または partprobe(8) または kpartx(8) の実行時に
ディスクを同期します。

!!最後のセクタを指定するときは、サイズ-1を使用します。!!

確認する

ドライブをアンマウントし、partprobeカーネルに新しいテーブルをインポートするように指示するタスクを実行してから、再度マウントしてファイルにアクセスできることを確認します。

#削除/mnt/tmp/

#部分プローブ/dev/sdc

# /dev/sdc2 /mnt/tmp マウント

#猫/mnt/tmp/世界
こんにちは

答え2

試してみることができますテストディスクパーティションテーブルを復元します。 Testdisk はディスク表面を読み込み、パーティションの開始と終了の位置を決定しようとします。

答え3

partedおおよその場所がわかっている場合は、ファイルシステムの開始と長さをスニッフィングする回復コマンドがあります。

答え4

NTFSディスクのサイズがわかっている場合は、fdiskまたはpartedを使用してディスクサイズをリセットできますが、運がないようです。

関連情報