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/世界
こんにちは

おすすめ記事