"デバイス->パーティションテーブルの作成...をクリックして適用"をクリックして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
この出力はどういう意味ですか?回復できる方法はありますか?
testdisk を使用してパーティションテーブルを復元してみてください。 Testdiskはディスクの表面を読み取り、パーティションの開始位置と終了位置を判別しようとします。
パーティションテーブルをリカバリする可能性がありますが、2つの条件を満たす必要があります。
これが機能する方法は、カーネルがパーティションレイアウトをメモリに保持することです。パーティションが使用中の場合、パーティションがどこから始まるかを知る必要があるため、新しいテーブルが使用されなくなるまで、新しいテーブルの再読み込みを拒否します。
これを行う方法:
/sys/block/sda
にアクセスします。そこには、各パーティションのディレクトリが表示されます(sda1
、sda2
など)。これらのそれぞれの内部には、start
およびsize
というファイルがあります(つまり、/sys/block/sda/sda1/start
)。これらとまったく同じ開始位置とサイズを使用してパーティションテーブルを再作成すると、問題ありません。
パーティションの種類は保持されないことに注意してください。 Linuxはこの情報を気にしません。したがって、再作成した後、パーティションの種類が何に設定されているか(NTFSなど)を覚えておく必要があります。
#fdisk -l /dev/sdc ディスク/ dev/sdc:8006 MB、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 on/mnt/tmp type xfs(rw)
#cat /mnt/tmp/world hello
#fdisk /dev/sdc fdiskへようこそ(util-linux 2.22.2)。 書き込みを行うまで、変更はメモリにのみ残ります writeコマンドを使用する前に注意してください。 コマンド(ヘルプはm):d パーティション番号(1-4) :1 パーティション1が削除されました コマンド(ヘルプはm):d 選択されたパーティション2 パーティション2が削除されました コマンド(ヘルプはm):p ディスク/ dev/sdc:8006 MB、8006926336バイト、15638528セクター 単位= 1 * 512のセクター= 512バイト セクターサイズ(論理/物理):512バイト/ 512バイト I/Oサイズ(最小/最適):512バイト/ 512バイト ディスク識別子:0x000ce29c デバイスブートスタートエンドブロックIdシステム コマンド(ヘルプはm):w パーティションテーブルが変更されました! ioctl()を呼び出してパーティションテーブルを再読み取りします。 警告:パーティションテーブルを再読み取りしていますfaエラー16が発生しました:デバイスまたはリソースがビジーです。 カーネルはまだ古いテーブルを使用しています。新しいテーブルは、 次の再起動時、またはpartprobe(8)またはkpartx(8)を実行した後で使用されます ディスクの同期。
まだマウントされていてアクセス可能であることに注意してください。
#cat/mnt/tmp/world hello
#cd /sys/class/block/sdc # ls alignment_offset device @ events_poll_msecs power/ro slaves / bdi @ discard_alignment ext_range queue/sdc1/stat capability events Holders/range sdc2/subsystem @ dev events_async inflight removeable size uevent #cat sdc1/start 2048 #cat sdc1/size 2097152 #cat sdc2/start 2099200 #cat sdc2/size 13539328
#fdisk /dev/sdc fdiskへようこそ(util-linux 2.22.2)。 変更はメモリにのみ残ります。 writeコマンドを使用する前に注意してください。 コマンド(ヘルプはm):n パーティションタイプ: pプライマリ(0プライマリ、0拡張、4空き) e拡張 選択(デフォルトp):p パーティション番号(1-4、デフォルト1):1 最初のセクター(2048-15638527、デフォルト2048):2048 最後のセクター、+セクターまたは+ size {K、M、G}(2048-15638527、デフォルト15638527): +2097151 Linuxタイプでサイズ1のパーティション1 GiB is set Command(m for help):n パーティションタイプ: pプライマリ(1プライマリ、0拡張、3フリー) e拡張 選択(デフォルトp):p パーティション番号(1- 4、デフォルト2):2 最初のセクター(2099200-15638527、デフォルト2099200):2099200 最後のセクター、+セクターまたは+ size {K、M、G}(2099200-15638527、デフォルト15638527 ):+13539327 Linuxタイプおよびサイズ6.5のパーティション2 GiB is set Command(m for help):p ディスク/ dev/sdc:8006 MB、8006926336バイト、15638528セクター 単位= 1 * 512のセクター= 512バイト セクターサイズ(論理/物理): 512バイト/ 512バイト I/Oサイズ(最小/最適):512バイト/ 512バイト ディスク識別子:0x000ce29c デバイスブート開始エンドブロックID System /dev/sdc1 2048 2099199 1048576 83 Linux /dev/sdc2 2099200 15638527 6769664 83 Linux コマンド(ヘルプはm):w パーティションテーブルが変更されました! ioctl()を呼び出してパーティションテーブルを再読み取りします。 警告:パーティションテーブルの再読み取りに失敗しましたエラー16:デバイスまたはリソースがビジーです。 カーネルはまだ古いテーブルを使用しています。新しいテーブルは、 次の再起動時、またはpartprobe(8)またはkpartx(8)を実行した後で使用されます ディスクの同期。
!!最後のセクターを指定する場合、サイズ-1を使用することに注意してください!!
ドライブをアンマウントし、partprobe
を実行してカーネルに新しいテーブルを取得するように指示してから、再マウントし、ファイルにアクセスできることを確認します。
#umount /mnt/tmp/ # partprobe /dev/sdc # mount/dev/sdc2/mnt/tmp #cat/mnt/tmp/world hello
parted
には、ファイルシステムの開始位置と長さがおおよそわかっている場合に、ファイルシステムの開始位置と長さを探知できるレスキューコマンドがあります。
NTFSディスクのサイズを知っている場合、fdiskまたはpartedを使用してこれらをリセットできる可能性がありますが、運が悪いと思います。