私のデスクトップには、5 つのパーティション (1. EFI、2. Windows 7 SP1 (64 ビット)、3. HP 工場出荷時リカバリ パーティション、4. データ ストレージ用の NTFS、5. Ubuntu 18.04.2 (64 ビット)) を持つ 3 TB ハード ドライブが 1 台 (そして唯一) あります。ブートローダーは GRUB (v.2.02) です。
Windows 7 を起動する限り、常に「セカンダリ パーティション テーブルが最後のパーティションと 4,294,966,385 ブロック重複しています」という警告が表示され、最後の使用可能なセクターが 1,565,565,838 にリセットされます (これはハード ドライブの最後のセクター 5,860,533,168 よりかなり早い値です)。Windows 7 で修正しても、Ubuntu の gparted で修正しても、同じ警告が繰り返し表示されます。
ご協力をお願いしたい質問は 2 つあります。
Windows 7 が Windows のロード処理中にセカンダリ GPT を誤ってリセットするのを防ぐための解決策や方法はありますか?
セカンダリ GPT の配置が間違っているため、一部のファイルのファイル サイズが 0 バイトになっています。これらのファイルの内容はまだ残っているので、これらのファイルを復元する方法はありますか?
詳細なエラーメッセージは次のとおりです。
(1. Ubuntu フェーズ)
最後に起動した OS が Ubuntu であり、Gparted と Gdisk がパーティション エラーを検出しないとします。
(2. Windows フェーズ)
再起動します。Windows 7 の読み込み中、Windows デスクトップが表示される前に、次のように表示されます。
Checking file system on E:
The type of the file system is NTFS.
Volume label is NTFS_DATA
One of your disks needs to be checked for consistency. You
may cancel the disk check, but it is strongly recommended
that you continue. To skip disk checking, press any key...
推奨されたディスク チェックを続行して完了します。Windows に入った後、CHKDSK.exe を実行してディスクを再度チェックしましたが、エラー レポートは表示されませんでした。(ちなみに、Windows の読み込みフェーズでのディスク チェックの結果、ファイル サイズが 0 バイトになっているファイルがいくつか見つかりました。)
Windows のディスク管理を開きます。ハード ドライブの全容量が 2794.52 GB であると正しく認識されます。また、最後のパーティションを除くすべてのパーティションも認識されます (最後のパーティションは ext4 であるため)。
ただし、gdisk64.exe (GPT fdisk の Windows 64 ビット バージョン) を実行すると、警告が表示されます。
c:\gdisk>gdisk64 -l 0:
GPT fdisk (gdisk) version 1.0.4
The protective MBR's 0xEE partition is oversized! Auto-repairing.
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Warning! Secondary partition table overlaps the last partition by
4294966385 blocks!
You will need to delete this partition or resize it in another utility.
Disk 0:: 1565565872 sectors, 746.5 GiB
Sector size (logical): 512 bytes
Disk identifier (GUID): xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 1565565838
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)
Number Start (sector) End (sector) Size Code Name
1 2048 206847 100.0 MiB EF00 EFI system partition
2 206848 1925441535 918.0 GiB 0700
3 1925441536 1953521663 13.4 GiB 0700
4 1953523712 5650817023 1.7 TiB 0700
5 5650817024 5860532223 100.0 GiB 8300
PC をシャットダウンし、Windows 7 を再度起動します。Windows のロード中に、上記と同じディスク チェックは要求されません。Windows に入った後、Windows のディスク管理を開くと、ハード ドライブとパーティションの全容量を正しく認識できます。ただし、gdisk64.exe は、セカンダリ パーティション テーブルが最後のパーティションと 4,294,966,385 ブロック重複しており、最後の使用可能なセクターが 1,565,565,838 で、最後のパーティションの終了セクター (5,860,532,223) よりかなり早いため、同じ警告を報告します。
(3. Ubuntu フェーズ)
再起動します。Ubuntu 18.04.2 では、ターミナルで gdisk と fdisk を開きます。同じ問題があることが確認されました。
$ sudo gdisk -l /dev/sda
GPT fdisk (gdisk) version 1.0.3
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Warning! Secondary partition table overlaps the last partition by
4294966385 blocks!
Try reducing the partition table size by 17179865540 entries.
(Use the 's' item on the experts' menu.)
Disk /dev/sda: 5860533168 sectors, 2.7 TiB
Model: TOSHIBA DT01ACA3
Sector size (logical/physical): 512/4096 bytes
Disk identifier (GUID): xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 1565565838
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)
Number Start (sector) End (sector) Size Code Name
1 2048 206847 100.0 MiB EF00 EFI system partition
2 206848 1925441535 918.0 GiB 0700
3 1925441536 1953521663 13.4 GiB 0700
4 1953523712 5650817023 1.7 TiB 0700
5 5650817024 5860532223 100.0 GiB 8300
$ sudo fdisk -l /dev/sda
Disk /dev/sda: 2.7 TiB, 3000592982016 bytes, 5860533168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Device Start End Sectors Size Type
/dev/sda1 2048 206847 204800 100M EFI System
/dev/sda2 206848 1925441535 1925234688 918G Microsoft basic data
/dev/sda3 1925441536 1953521663 28080128 13.4G Microsoft basic data
/dev/sda4 1953523712 5650817023 3697293312 1.7T Microsoft basic data
/dev/sda5 5650817024 5860532223 209715200 100G Linux filesystem
gparted を開くと、警告メッセージが表示されます:
Not all of the space available to /dev/sda appears to be
used, you can fix the GPT to use all of the space (an extra
4294967296 blocks) or continue with the current setting?
[Fix] [Ignore]
私は gparted に GPT を修正させることにしました。その後 gdisk を再度実行しましたが、警告は表示されませんでした。エラーは修正され、最後に使用可能なセクターは 5,860,533,134 です。
$ sudo gdisk -l /dev/sda
GPT fdisk (gdisk) version 1.0.3
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 5860533168 sectors, 2.7 TiB
Model: TOSHIBA DT01ACA3
Sector size (logical/physical): 512/4096 bytes
Disk identifier (GUID): xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 5860533134
Partitions will be aligned on 2048-sector boundaries
Total free space is 4973 sectors (2.4 MiB)
Number Start (sector) End (sector) Size Code Name
1 2048 206847 100.0 MiB EF00 EFI system partition
2 206848 1925441535 918.0 GiB 0700
3 1925441536 1953521663 13.4 GiB 0700
4 1953523712 5650817023 1.7 TiB 0700
5 5650817024 5860532223 100.0 GiB 8300
PC を再起動して、もう一度 Ubuntu を起動します。gdisk と gparted は GPT エラーを検出しません。
(4. Windows フェーズ)
次に、Windows 7 を起動してみます。上記の Windows フェーズで発生したことが再び発生します。Windows の起動中に、「E: のファイル システムをチェックしています」というメッセージが表示され、ディスクの整合性チェックが要求されます。その後、chkdsk とディスクの管理の両方で警告なしで正常な結果が表示されますが、gdisk64 は、セカンダリ パーティション テーブルが最後のパーティションと 4,294,966,385 ブロック重複しているという同じ警告を再度報告します。最後の使用可能なセクターは 1,565,565,838 に戻り、ディスクの最後のセクター (5,860,533,168) よりかなり早く先行しますが、最後の再起動 (Ubuntu フェーズ) で gparted によって修正され、5,860,533,134 に設定されました。
ここでの根本的な問題は、Windows 7 が、最後のパーティションの後にバックアップを残すのではなく、ハード ドライブの中間地点にセカンダリ/バックアップ GPT を設定することにあるように思われます。私が知っているように、「最後の使用可能なセクター」は、セカンダリ/バックアップ GPT が始まる場所です。ハード ドライブには合計 5,860,533,168 セクターがあります。最後の使用可能なセクターは、gparted の修正後 5,860,533,134 ですが、Windows 7 のロード プロセス後 1,565,565,838 に戻ります。私の Windows 7 (SP1、64 ビット) がディスク管理でハード ドライブの全容量を認識できるという事実は、バックアップ GPT が間違った場所にリセットされることを回避するのに役立ちません。セカンダリ GPT を適切な場所にリセットする方法は知っていますが、Windows 7 が OS のロード フェーズ中にセカンダリ GPT を間違った場所に配置するのを防ぐ方法がわかりません。
以下は私の質問です: セカンダリ GPT の配置ミスにより、一部のファイルのファイル サイズが 0 バイトになりました。これらのファイルの内容はまだ残っているので、これらのファイルを復元する方法はありますか?
Windows 7 が Windows のロード処理中にセカンダリ GPT を誤ってリセットするのを防ぐ方法はありますか?
助けてください。
答え1
5860533168
(Ubuntu では) は論理セクターの実際の数です。これには 33 ビットが必要で、32 ビットで保存しようとすると最上位ビットが失われ、数値は1565565872
(Windows ではこれを使用します) になります。
Windows (またはその一部) は、より多く使用すべきところを 32 ビット使用しているようです。Windows と Ubuntu は、セカンダリ パーティション テーブルを配置する場所について争っています。Ubuntu が正しいです。
マイクロソフトによると[強調は筆者による]:
マイクロソフトは、Windowsがこれらの大容量ディスクをどのようにサポートしているかを調査しました。その結果、以前のすべてのバージョンのWindowsに当てはまるいくつかの問題が明らかになりました。Windows 7 Service Pack 1を含むおよび Windows Server 2008 R2 Service Pack 1。
現時点では、Windows が 2 TB を超える単一ディスク ストレージ容量を処理する場合、次の誤った動作が発生することがわかっています。
- 2 TB を超える数値容量はオーバーフローします。その結果、システムは 2 TB を超える容量のみをアドレス指定できるようになります。たとえば、3 TB のディスクでは、使用可能な容量は 1 TB のみになる場合があります。
- 2 TB を超える数値容量は切り捨てられます。このため、アドレス指定可能な領域は 2 TB 以下になります。たとえば、3 TB のディスクでは、使用可能な容量は 2 TB のみになる場合があります。
- ストレージ デバイスが正しく検出されません。この場合、デバイス マネージャーまたはディスクの管理ウィンドウには表示されません。
Windows 7 SP1 で問題が発生しないほど小さいディスクをクローンしたことで、このような状況になったと思われます。おそらく 1 GB です (古いディスクの最後にあった HP ファクトリー リカバリ パーティションの配置から判断)。
現在の Windows システム パーティションのファイル システムが破損しています。構造を修復することは可能ですが、破損が重要なファイルに影響を与えていないかどうかはわかりません。現在は正常に動作している場合でも、破損したファイルは将来問題を引き起こす可能性があります。
警告: 以下の手順は最善の解決策ではない可能性があります。私はあなたの問題を経験したことがないので、その問題を回復しようとしたことがありません。これは私が試す方法です。他の回答 (またはコメント) が表示されるまで待つことをお勧めします。
古いデータが保存された古いディスクがまだ残っていて、Windows のクローン コピーに加えた変更をすべて削除しても構わない場合は、次の手順に従います。
- 新しいディスクを切断し (UUID の競合を避けるため)、古いディスクを接続します。
- 古い Windows を起動します。
- アップデートをインストールして、Windowsが3TBのディスクを完全にサポートできるように準備します。(ただし、この記事「システム設定の不備、レジストリ内の不規則なエントリ、または Intel® Rapid Storage Technology」も干渉する可能性があります。
- 再度クローンを作成します。古い Windows パーティションのみを大容量ディスク上の既存のパーティションにクローンします。Ubuntu はそのまま残ります。Windows を適切に起動するには、大容量ディスク上の GRUB または EFI ブート エントリを更新する必要がある可能性があります。
古い Windows に戻れない場合は、次の操作を試してください。
- 可能であれば、Windows にセカンダリ パーティション テーブルを書き込ませないでください。
chkdsk
Windows が格納されているファイルシステム (通常は ) で実行しますC:\
。これがどの程度安全かはわかりません。Windows パーティションの一部は Windows が最後のセクターと見なす領域を超えているため、ツールが正常に動作しない可能性があります。ディスクを別の(完全に更新された)Windowsで実行するのがchkdsk
安全かもしれません(ただし、この目的でUSBエンクロージャを使用する場合は注意してください一部のエンクロージャは問題を引き起こす可能性がある)。- 更新プログラムをインストールすると、Windows は 3 TB ディスクを完全にサポートできるようになります。