web-dev-qa-db-ja.com

testdiskとパーティションテーブルのバックアップをロードしますか?

新しいディスクがあるので、testdiskバックアップがどのように機能するかを確認したいと思いました。

ディスクを_gksu gparted /dev/sdc_でパーティション分割してフォーマットした後、次のようになります。

_$ Sudo fdisk -lu /dev/sdc

Disk /dev/sdc: 60.0 GB, 60011642880 bytes
255 heads, 63 sectors/track, 7296 cylinders, total 117210240 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c0705

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1              63    20980889    10490413+  83  Linux
/dev/sdc2        20980890   117210239    48114675    5  Extended
/dev/sdc5        20980953    83891429    31455238+  83  Linux
/dev/sdc6        83891493   100663289     8385898+  83  Linux
/dev/sdc7       100663353   109049219     4192933+  83  Linux
/dev/sdc8       109049283   117210239     4080478+  82  Linux swap / Solaris
_

したがって、この後、パーティションのブートレコードをtestdiskでバックアップしてから、復元したいと思います。私もです:

_cd /tmp
Sudo testdisk
_

... その後

  • _[ Create ] Create a new log file_
  • _Select a media_から_Disk /dev/sdc - 60 GB / 55 GiB_を選択し、次に_[Proceed ]_を選択します
  • _Please select the partition table type,_から、_[Intel ] Intel/PC partition_を選択します
  • 次の画面で、_[ Analyse ] Analyse current partition structure..._を選択します。私はこれを得る:
     1 P Linux 0 1 1 1305 254 63 20980827 
 2E拡張LBA1306 0 1 7295 254 63 96229350 
起動可能なパーティションはありません
 5 L Linux 1306 1 1 5221 254 63 62910477 
 X拡張52220 1 6265 254 63 16771860 
 6 L Linux 5222 1 1 6265 254 63 16771797 
 X拡張62660 1 6787 254 63 8385930 
 7 L Linux 6266 1 1 6787 254 63 8385867 
 X拡張67880 1 7295 254 63 8161020 
 8 LLinuxスワップ67881 1 7295 254 63 8160957
  • _[ Backup ] Save current partition list to backup.log file and proceed_を選択します
  • nを_Should TestDisk search for partition created under Vista ?_に回答します。私は得る:
    ディスク/ dev/sdc-60 GB/55 GiB --CHS 7296 255 63 
パーティションの開始終了サイズ(セクター単位)
 * Linux 0 1 1 1305 254 63 20980827 
 L Linux 1306 1 1 5221 254 63 62910477 
 L Linux 5222 1 1 6265 254 63 16771797 
 L Linux 6266 1 1 6787 254 63 8385867 
 LLinuxスワップ6788 1 1 7295 254 63 8160957 
  • _Enter: to continue_を押します。私は得る:
ディスク/ dev/sdc-60 GB/55 GiB --CHS 7296 255 63 
 
パーティションの開始終了サイズ(セクター単位)
 
 1 * Linux 0 1 1 1305 254 63 20980827 
 2E拡張LBA1306 0 1 7295 254 63 96229350 
 5 L Linux 1306 1 1 5221 254 63 62910477 
 6 L Linux 5222 1 1 6265 254 63 16771797 
 7 L Linux 6266 1 1 6787 254 63 8385867 
 8 LLinuxスワップ67881 1 7295 254 63 8160957 
  • ここで_[ Quit ] Return to main menu_を選択します
  • 次のメニューから_[ Quit ]_を選択します
  • 最初のメニューから_[ Quit ] Quit program_を選択します

これで、_backup.log_に_/tmp_があり、次の内容が含まれています。

_#1412861047 Disk /dev/sdc - 60 GB / 55 GiB - CHS 7296 255 63
 1 : start=       63, size= 20980827, Id=83, P
 2 : start= 20980890, size= 96229350, Id=05, E
 5 : start= 20980953, size= 62910477, Id=83, L
 6 : start= 83891493, size= 16771797, Id=83, L
 7 : start=100663353, size=  8385867, Id=83, L
 8 : start=109049283, size=  8160957, Id=82, L
_

上記のプロセスを繰り返すと、同じ内容が_backup.log_に追加されます。

ここで、復元をテストしたいと思います。もう一度_Sudo testdisk_...そして

  • _[ Append ] Append information to log file_
  • _Select a media_から_Disk /dev/sdc - 60 GB / 55 GiB_を選択し、次に_[Proceed ]_を選択します
  • _Please select the partition table type,_から、_[Intel ] Intel/PC partition_を選択します
  • 次の画面で_[ Delete ] Delete all data in the partition table_を選択します
  • yClear MBR partition table by writing zero bytes to it? (Y/N)に答えます
  • yClear partition table, confirm ? (Y/N)に答えます
  • _Partition table has been cleared. You have to reboot for the change to take effect._を取得し、_[Ok]_を押します
  • _Disk /dev/sdc_に戻ります。ここで_[ Analyse ] Analyse current partition structure..._を選択します;ここで取得:

    ディスク/ dev/sdc-60 GB/55 GiB --CHS 57231 64 32 
    現在のパーティション構造:
    パーティションの開始終了サイズ(セクター単位)
     
    起動可能なパーティションはありません
  • _[Quick Search]_をクリックします
  • _Should TestDisk search for partition created under Vista ? [Y/N]_に対してnと答えます
  • 検索が開始したらすぐにStopを押します;これを取れ:

    警告:現在のシリンダーあたりのヘッド数は64 
    ですが、正しい値は255である可能性があります。
     [ジオメトリ]メニューを使用してこの値を変更できます。
     
     \-一部のパーティションがTestDisk 
     \-で見つからないか、パーティションが重複しているためにパーティションテーブルに書き込めません。
  • _[ Continue ]_を押して、取得します。

    ディスク/ dev/sdc-60 GB/55 GiB --CHS 57231 64 32 
    パーティションの開始終了サイズ(セクター単位)
     LLinux 0 1 32 10244 63 32 20981697
  • _L: load backup_に対してlを押します。
  • _Disk /dev/sdc - ..._に_Choose the backup you want to restore:_を選択し、_[ Load ]_を押します。

この時点で、私はこれを取得します:

_<pre>Disk /dev/sdc - 60 GB / 55 GiB - CHS 57231 64 32
     Partition               Start        End    Size in sectors
P Linux                    0   1 32 10244  36 26   20980827
L Linux                    0   1 32 10244  63 32   20981697
L Linux                10244  38 26 40962  39  6   62910477
L Linux                40962  41  6 49151  63 26   16771797
L Linux                49152   1 26 53246  44  4    8385867
L Linux Swap           53246  46  4 57231  35 32    8160957</pre>
_

...および「Structure:Bad。」は赤で表示されます。画像に示されているように:

testdisk-screenshot

私の質問は-なぜこの「構造:悪い」なのか?私が気付くことができる唯一のことは、最初の2つのエントリが同じ範囲をカバーしているということです。しかし、なぜtestdiskは両方をインポートするのですか?バックアップからパーティション構造を復元したい場合、これを回避するにはどうすればよいですか?

3
sdaau

まあ、もっと知識のある答えがあれば幸いです-しかし、少なくとも私はOPを書いている間にこの問題を回避する方法を見つけました。ところで、これはUbuntu 11.04では_TestDisk 6.11, Data Recovery Utility, April 2009_です。ディスクが空になったら、_Sudo testdisk_を再起動し、OPのトレースに従って、同じ画面(次の画面が表示されます)を表示します。

  • _L: load backup_のlを押します。
  • _Disk /dev/sdc - ..._に_Choose the backup you want to restore:_を選択し、_[ Load ]_を押します。

ここで、2番目のエントリに移動し、次のようにします。そのパーティションの_Use Left/Right Arrow keys to CHANGE partition characteristics:_を取得するまで_D=Deleted_。次のようになります。

testdisk-screenshot-2

さて、明らかに、これ以上「悪い構造」は報告されておらず、すべてが緑色です。興味深いことに、このパーティションのみがこのように反応します(たとえば、最初のパーティションは、Dに設定されていても変更を引き起こしません)。

今、私は_Enter: to continue_を押すだけです。次の画面でこれを取得します。

_     Partition                  Start        End    Size in sectors

 1 P Linux                    0   1 32 10244  36 26   20980827
 2 E extended LBA         10244  38  1 57231  63 32   96230208
 5 L Linux                10244  38 26 40962  39  6   62910477
 6 L Linux                40962  41  6 49151  63 26   16771797
 7 L Linux                49152   1 26 53246  44  4    8385867
 8 L Linux Swap           53246  46  4 57231  35 32    8160957
_

それで、_[ Write ] Write partition structure to disk_を選択します。そして

  • yWrite partition table, confirm ? (Y/N)に答えます
  • _You will have to reboot for the change to take effect._を取得し、_[Ok]_を押します
  • 次の画面で_[ Quit ] Return to disk selection_を選択します
  • 次の画面で_[ Quit ] Quit program_を選択します

今、私はこれを行うことができます:

_$ Sudo fdisk -lu /dev/sdc

Disk /dev/sdc: 60.0 GB, 60011642880 bytes
64 heads, 32 sectors/track, 57231 cylinders, total 117210240 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c0705

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1              63    20980889    10490413+  83  Linux
/dev/sdc2        20980928   117211135    48115104    f  W95 Ext'd (LBA)
/dev/sdc5        20980953    83891429    31455238+  83  Linux
/dev/sdc6        83891493   100663289     8385898+  83  Linux
/dev/sdc7       100663353   109049219     4192933+  83  Linux
/dev/sdc8       109049283   117210239     4080478+  82  Linux swap / Solaris
_

...そしてほとんどすべてがOPの元のパーティションテーブルと同じです-ここに「f W95 Ext'd (LBA)」があり、その上に2番目の「_5 Extended_」がありました(_sdc2_、 "extended")パーティション。

誰かが私が間違っていることを指摘でき、削除した後でもまったく同じパーティションテーブルを再構築するために正確に何をすべきかを指摘していただければ幸いです。


編集:私はもっと何かを得たと思います。違いは「f W95 Ext'd (LBA)」と「_5 Extended_」だけではありません。しかしまた、fdiskから-最初の場合:

_255 heads, 63 sectors/track, 7296 cylinders, total 117210240 sectors
/dev/sdc2        20980890   117210239    48114675    5  Extended
_

...そして2番目の場合:

_64 heads, 32 sectors/track, 57231 cylinders, total 117210240 sectors
/dev/sdc2        20980928   117211135    48115104    f  W95 Ext'd (LBA)
_

したがって、CHSジオメトリ(および拡張パーティションの領域)は間違っています。それはおそらくOPで取得された_Warning: the current number of heads per cylinder is 64 but the correct value may be 255._の意味です。したがって、testdiskのメインメニューに到達したら、ジオメトリを変更できます。

  • _[ Geometry ] Change disk geometry_
  • _[ Heads ] Change head geometry_
    • _Enter the number of heads:_ _255_
  • _[ Sectors ] Change sector geometry_
    • Enter the number of sectors per track (1-63): _63_
  • _[ Cylinders ] Change cylinder geometry_(ここでは変更なし):
    • _Enter the number of cylinders:_ _7296_
  • _[ Ok ] Done with changing geometry_
  • _[ Analyse ] Analyse current partition structure_
  • _[Quick Search] Try to locate partition_
  • nから_Should TestDisk search for partition created under Vista ? [Y/N]_
  • testdiskは、削除されたパーティションを検出するようになりました。ヒット_L: load backup_
  • _Disk /dev/sdc -_から_Choose the backup you want to restore:_、次に_[ Load ]_

ここでも_Structure: Bad._と重複したパーティション。 1つおきにDに設定します-不正な構造がクリアされます:

testdisk-screenshot-3

最後に:

  • _Enter: to continue_
  • _[ Write ] Write partition structure to disk_
  • yからWrite partition table, confirm ? (Y/N)
  • _[Ok]_から_You will have to reboot for the change to take effect._
  • _[ Quit ] Return to disk selection_
  • _[ Quit ] Quit program_

これで、fdiskは同じジオメトリと拡張パーティションの同じ範囲を報告します。

_255 heads, 63 sectors/track, 7296 cylinders, total 117210240 sectors
...
/dev/sdc2        20980890   117210239    48114675    f  W95 Ext'd (LBA)

/dev/sdc2        20980890   117210239    48114675    5  Extended        # first
/dev/sdc2        20980928   117211135    48115104    f  W95 Ext'd (LBA) # second
_

...そして以前のレポートと比較すると、最初のレポートと同じ範囲になっていますが、ファイルシステムタイプは同じではありません(_5 Extended_の代わりにf W95 Ext'd (LBA));しかし、少なくともこのように見える方がはるかに優れています。

1
sdaau