web-dev-qa-db-ja.com

ovelapはありませんが、2つのLinuxパーティションでパーティションテーブルを書き換えることはできません

Windows 10で作成されたバグのため、ハードディスクのパーティションテーブルをTestDiskで書き換えようとしています。デュアルブート環境(Windows/Ubuntu)と2つのLinuxパーティション(パーティションタイプ83)がありました。パーティションはUbuntu 13にあり、もう1つはUbuntu 15.04にありました。

重複はなく、その結果、TestDiskが2つのLinuxパーティションを含む構造を拒否する理由がわかりません。「クイック検索」画面で、2つのLinuxパーティションの1つだけを選択すると、私には「Structure OK」ですが、両方のLinuxパーティションを選択しようとすると、「Bad structure」と表示されます。あなたは私を助けることができます?

2つのLinuxパーティションを選択しようとすると:

TestDisk 6.14, Data Recovery Utility, July 2013
Christophe GRENIER <[email protected]>
http://www.cgsecurity.org

Disk /dev/sda - 750 GB / 698 GiB - CHS 91201 255 63
     Partition               Start        End    Size in sectors
 P FAT32 LBA                0  32 33  3263 170 43   52428800 [RECOVERY]
 * HPFS - NTFS           3263 170 44 39744  19 19  586057728 [OS]
 P HPFS - NTFS          39744  19 20 51954 195 57  196164776 [DATA]
   HPFS - NTFS          39744  19 20 51954 209 31  196165632 [DATA]
>L Linux                51954 209 32 70244 108  8  293822464
 L Linux                70244 108  9 90445 190 49  324534272
 L Linux Swap           90446 195 54 91201  52 51   12120064

Structure: Bad. Use Up/Down Arrow keys to select partition.
Use Left/Right Arrow keys to CHANGE partition characteristics:
*=Primary bootable  P=Primary  L=Logical  E=Extended  D=Deleted
Keys A: add partition, L: load backup, T: change type, P: list files,
     Enter: to continueubuntu@ubuntu:~$
ext4 blocksize=4096 Large file Sparse superblock, 150 GB / 140 GiB

最初のLinuxパーティションのみを選択しようとすると:

Disk /dev/sda - 750 GB / 698 GiB - CHS 91201 255 63
     Partition               Start        End    Size in sectors
 P FAT32 LBA                0  32 33  3263 170 43   52428800 [RECOVERY]
 * HPFS - NTFS           3263 170 44 39744  19 19  586057728 [OS]
 P HPFS - NTFS          39744  19 20 51954 195 57  196164776 [DATA]
   HPFS - NTFS          39744  19 20 51954 209 31  196165632 [DATA]
 L Linux                51954 209 32 70244 108  8  293822464
   Linux                70244 108  9 90445 190 49  324534272
>L Linux Swap           90446 195 54 91201  52 51   12120064

Structure: Ok.  Use Up/Down Arrow keys to select partition.
Use Left/Right Arrow keys to CHANGE partition characteristics:
*=Primary bootable  P=Primary  L=Logical  E=Extended  D=Deleted
Keys A: add partition, L: load backup, T: change type,
     Enter: to continue
SWAP2 version 1, pagesize=4096, 6205 MB / 5918 MiB

2番目のLinuxパーティションのみを選択しようとすると:

Disk /dev/sda - 750 GB / 698 GiB - CHS 91201 255 63
     Partition               Start        End    Size in sectors
 P FAT32 LBA                0  32 33  3263 170 43   52428800 [RECOVERY]
 * HPFS - NTFS           3263 170 44 39744  19 19  586057728 [OS]
 P HPFS - NTFS          39744  19 20 51954 195 57  196164776 [DATA]
   HPFS - NTFS          39744  19 20 51954 209 31  196165632 [DATA]
   Linux                51954 209 32 70244 108  8  293822464
>L Linux                70244 108  9 90445 190 49  324534272
 L Linux Swap           90446 195 54 91201  52 51   12120064

Structure: Ok.  Use Up/Down Arrow keys to select partition.
Use Left/Right Arrow keys to CHANGE partition characteristics:
*=Primary bootable  P=Primary  L=Logical  E=Extended  D=Deleted
2
Grégory P.

任務完了 ! TestDiskを使用して、すべてのパーティションを正常に復元しました。そうは言っても、私は少し幸運だったと自白しなければなりません。昨日、数日間使用しなかったTestDiskを起動しました。不明な理由により、アプリケーションの動作は以前の動作とは異なります。実際、TestDiskが「クイック検索」画面を表示するのに少なくとも1分かかりますが、前回使用したときにすぐに表示されました。この1分間、TestDisk画面には、各パーティションの開始ポイントと終了ポイントの値が表示されます。ただし、この1分間、最初のLinuxパーティションのエンドポイント値は、他のTestDisk画面や他のコマンドやアプリケーションによってこれまでに提供されたことのない値でした。一時的に表示されたこれらの値は正しいものだと感じました。ポイントは、これらの値が2つのLinux /論理パーティションの間にスペースを持つことを許可したということです。

次に、単純なASCIIファイルであるLog TestDiskファイルを編集しました。このテキストファイルに2つの新しい行を追加しました。これらの行は、欠落している2つの論理パーティションに関するものでした。当然、最初のLinuxパーティションでは、「クイック検索」画面の直前に不思議な形で表示されていたエンドポイント値を入力しました。次のステップは、更新されたログファイルをTestDiskにロードすることでした。ディスク構造はアプリケーションによってすぐに受け入れられました。ログファイルで指定された値を考慮してパーティションテーブルを書き換えるようにTestDiskに依頼する必要がありました。その後、コンピューターを再起動し、Ubuntu Live-CDセッションからBoot-Repairを起動して、もう一度再起動する必要がありました。ついに、稼働中のGRUBを使用し、Ubuntuを起動し、Ubuntuを楽しむことができました。

詳細については、TestDiskでパーティションテーブルを正常に書き換えるために最終的に使用された値は、最初のシート( "Feuil1")の最後にあります。 https://docs.google.com/spreadsheets/ d/16bOgee0CIObZORWjyKw7l7do8czfdfB5PEGZj6OhWjc/edit?usp = sharing

0
Grégory P.

TestDiskは最後の手段となるツールです。多くの場合、Windowsパーティション分割ツールで発生するこの種の問題は、それほど思い切った方法で修正できません。専門家にとって、不思議はfdiskまたはsfdiskで処理できます。中級レベルの人のために、私自身のFixParts(Ubuntuのgdiskパッケージの一部)は多くの問題を修正できます。使用方法については、 FixPartsのドキュメント を参照してください。 このUbuntuフォーラムスレッド は、sfdiskを使用して問題を解決するためのいくつかの基本的な情報があります。とは言っても、出力を読み違えない限り、FixPartsがすべてのパーティションを回復できるとは思いません-少なくとも、それ自体では回復できません。 sfdiskはおそらくそれを行うことができますが、それには専門知識が必要になります。

残念ながら、パーティションテーブルが現在どのように表示されているかについて情報を提供していないため、重要な詳細については盲目的に作業しています。私が提供したリンク(特に私のFixPartsページ)を読んで、それをあなたが得たものと比較し、そしておそらくこれらのツールがあなたのディスクをどのように構成しているかを見てみることをお勧めします。さらにヘルプが必要な場合は、Sudo fdisk -l /dev/sdaの出力が含まれるように質問を編集し、この回答にコメントを追加して注意を喚起してください。

あなたが直面している問題について、私の疑いは、2つのパーティションの間に空きセクターがないときに、2つのパーティションを論理的なパーティションとして回復しようとしていることが原因であると考えています。 MBRディスクの通常の構造では、任意の2つの論理パーティションの間に少なくとも1つの空きセクターが必要なため、実行しようとしていることが機能しません。 (sfdiskなどの一部のツールには、この制限を回避する方法がありますが、ほとんどのツールで制限されます。)ディスクレイアウトを考えると、最初にサイズ変更しない限り、すべてのパーティションをMBRセットアップに含めることができない場合があります。 1つまたは2つのパーティション。現在のパーティションの状態によっては、非常に危険な命題になる可能性があります。

もう1つの可能性は、GPTに変換することです。 (または、ディスクは元々GPT形式であった可能性がありますが、MBRを使用することをTestDiskに伝えただけですか?)GPTには、MBRのパーティション間のギャップの問題がないので、この形式ですべてのパーティションを含めることができます。欠点は、ディスクが現在MBRを使用していてWindowsを正常に起動している場合、WindowsをEFIモードで起動するには、いくつかの手順を踏む必要があります。 (EFI/UEFIファームウェアを搭載したコンピューターも必要です。)ディスクが現在MBRを使用している場合でも、GPTに変換すると、パーティションのサイズを変更できる場合があります。次に、MBRに変換し直して、Windowsを再度起動します。このような変換は、一時的なものであっても、ブートローダーを再インストールする必要があります。

何をするにしても、何が起こっているのかを完全に理解するまで、パーティションテーブルに変更を加えないでください。あなたと同じような状況にある多くの人々は、問題を十分に理解していないために急いで侵入し、データに取り返しのつかない危害を加えています。また、適切なバックアップがない場合は、バックアップを作成してください。有能な人でさえ、あなたの問題を解決しようとしてデータを簡単に失ってしまうかもしれません。


編集:

あなたが提示した新しい情報を考えると、Windowsはパーティションテーブルから2つのパーティションを完全に消去したようです。良いニュースは、ファイルシステムの開始点と終了点に関する優れたデータが得られたので、回復できるはずです。 (TestDiskがファイルシステムを検出したという事実は、データにおそらく完全な形でアクセスできないことを意味します。)

どのようにこれを行うにせよ、私は強く完全な低レベルにすることから始めることをお勧めしますディスクのバックアップ。私の計算が正しければ、ディスクのサイズは700GiBなので、次のようなコマンドを使用して、少なくとも同じくらいの空き容量があるディスクにバックアップを実行できるはずです。

Sudo dd if=/dev/sda of=/path/to/lots/of/space/backup-sda.img bs=4096

この操作は完了するまでに数時間かかる可能性があります。このコマンド、特にif=およびof=オプションを使用する場合は、veryに注意してください。これらのオプションは、それぞれ入力ファイルと出力ファイルを指定します。それが終わったら...

IIRC、sfdiskは、間にスペースがない論理パーティションで拡張パーティションを作成できるため、次のコマンドを使用して最初にsfdiskテキストファイルを作成することで、リカバリを試すことができます。

sfdisk -d /dev/sda > partitions-sda.txt

partitions-sda.txtの内容は、スプレッドシートの出力の最初のブロックと同様である必要があります。次に、そのファイルをテキストエディタにロードして、不足している2つのパーティションに関する情報を追加できます。トリッキーな部分は開始値とサイズ値ですが、すでに計算されているようなので、適切な値を指定して適切な線を作成する必要があります。また、拡張パーティションの開始点を調整して、2つの「新しい」(復元された)パーティションが含まれるようにする必要もあります。完了したら、結果をディスクに書き戻すことができます。

sfdisk -f /dev/sda < partitions-sda.txt

これは動作するはずです。そうでない場合は、間違いを犯したか、sfdiskの機能を誤っているか、sfdiskが変更されている可能性があります。

これが完了したら、ファイルシステムを確認することをお勧めします。また、最初のUbuntuパーティションの最後を縮小して、次のパーティションとの間に小さなギャップを設けることもできます。おそらくGPartedでこれを実行できます。ただし、この問題のためにGPartedがディスクでの作業を拒否する可能性があります。この場合、パーティションをバックアップして削除し、その場所に新しいパーティションを作成して、データを復元する必要があります。

この手順の代わりに、新しいディスクを購入し、パーティションを一度に1つずつコピーすることもできます。 ddskipオプションとともに使用して、「失われた」ファイルシステムをディスクから読み取ることができます。その際、パーティションを再作成する必要はありません。ただし、開始点を指定するときは非常に正確でなければなりません。

さらに別の方法としては、TestDiskを使用して最初のLinuxパーティションを復元し、GPartedでそれを少し圧縮してから、もう一度TestDiskを実行して2番目のLinuxパーティションを復元します。これは機能するはずですが、TestDiskまたはGPartedが公式に割り当てられていない間、2番目のファイルシステムが占有している領域に何かを書き込む可能性があり、損傷する可能性があります。

GPTとしてディスクを回復するようにTestDiskに指示することも、もう1つのオプションですが、少なくとも他のフープを飛び越えるまで、Windowsを起動できなくなります。コンピューターがBIOSベースの場合(2011年以降のほとんどのコンピューターのようにEFIベースではない)、GPTからWindowsを起動することはできません。このオプションを使用する場合は、新しいブートローダーをディスクに書き込む必要があります。


編集2:

最新の質問への回答:

  • はい、ddコマンドを元に戻し、バックアップを復元します。
  • 最初に示したsfdiskコマンドは-dオプションを使用し、2番目のコマンドは-fオプションを使用したことに注意してください。
  • sfdiskを使用する重要な点は、IIRC、2つの論理パーティションを間にスペースを入れずに作​​成できるまれなプログラムの1つであることです。これは、いずれかの論理パーティションの前に、ディスクにEBRを連続して書き込むことによって行われます。 EBRは重要なディスクデータ構造ですが、通常は手動で変更する必要はありません。 sfdisk(またはGPartedなど)にそれらを処理させるだけです。
  • 私の推測では、Linuxパーティションは元々プライマリであり、Windowsはそれらを削除したと思います。しかし、おそらくそれらはsfdiskによって作成された論理、または互いに隣り合う2つの論理パーティションを作成できる何かであり、Windowsパーティショナーが何かを作成しようとするのではなく、それらを詰まらせて削除したことに気付いたときt。
2
Rod Smith

スクリーンショットの開始セクターと終了セクターを見てください。最初のものでは、明らかに構造が悪い最初のLinuxパーティションを選択します。 2番目のスクリーンショットでは、良いLinuxスワップファイルを選択します。 3番目のスクリーンショットで、2番目のLinuxパーティションを選択します。これもOKです。スクリーンショットによると、2つのパーティションを同時に選択することはありません。私の知る限り、同時に2つのパーティションを選択することは不可能であるため、それを行うこともできません。したがって、最初のLinuxパーティションのみを修復する必要があります。ところで:3番目のスクリーンショットでは、いくつかの重要な情報が省略されています。

0
wie5Ooma