我的桌面有一個(也是唯一的)3TB 硬碟,有5 個分割區:1. EFI、2. Windows 7 SP1(64 位元)、3. HP Factory Recovery 分割區、4. 用於資料儲存的NTFS 以及5. Ubuntu 18.04 .2(64 位元)。 GRUB (v.2.02) 是開機載入程式。
只要我啟動到Windows 7,我總是會收到「輔助分割區表與最後一個分割區重疊4,294,966,385 個區塊」的警告,並且最後一個可用磁區已重設為1,565,565,838(這早於硬碟機的最後一個磁扇區5,860,533,168) )。無論是讓 Windows 7 修復它還是透過 Ubuntu 中的 gparted 修復它,同樣的警告不斷出現。
我請求您幫助的問題有兩個:
有沒有任何解決方案或方法可以防止 Windows 7 在載入 Windows 的過程中錯誤地重設輔助 GPT?
輔助 GPT 的錯誤位置導致我的某些檔案現在檔案大小為零位元組。由於這些文件的內容仍然存在,有沒有辦法恢復這些文件?
以下是詳細的錯誤訊息:
(1. Ubuntu階段)
假設最後啟動的作業系統是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 載入階段的磁碟檢查,我發現一些檔案的檔案大小現在為零位元組。)
我開啟 Windows 的磁碟管理。它可以正確識別硬碟的全部容量為2794.52GB。它還可以識別除最後一個分割區之外的所有分割區(因為最後一個分割區是 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
我關閉電腦並再次啟動進入 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
我重新啟動電腦並再次啟動至 Ubuntu。 gdisk 和 gparted 未偵測到任何 GPT 錯誤。
(4. Windows 階段)
然後我嘗試啟動到 Windows 7。在啟動 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 在載入作業系統階段將其放錯位置。
以下是我的問題:輔助 GPT 的錯位導致我的某些檔案現在檔案大小為零位元組。有沒有辦法恢復這些文件,因為這些文件的內容仍然存在?
有沒有辦法防止Windows 7在載入Windows過程中錯誤地重設輔助GPT?
請幫忙。
答案1
5860533168
(Ubuntu看到的)是邏輯扇區的真實數量。這需要 33 位,如果您嘗試將其儲存為 32 位,則最高有效位將遺失,並且數字將變為1565565872
(Windows 使用它)。
看起來您的 Windows(或其某些部分)使用 32 位,而它應該使用更多位。 Windows 和 Ubuntu 在輔助分割區表應該放置的位置上爭論不休。烏班圖是對的。
據微軟稱[強調我的]:
Microsoft 已經研究了 Windows 如何支援這些大磁碟。結果揭示了適用於早於 和 之前的所有 Windows 版本的幾個問題包含帶有 Service Pack 1 的 Windows 7和具有 Service Pack 1 的 Windows Server 2008 R2。
到目前為止,當 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 Factory Recovery 分割區的位置來判斷)。
目前 Windows 系統分割區上的檔案系統已損壞。也許可以修復其結構,但您無法確定損壞是否不會影響重要檔案。即使現在可以正常工作,損壞的文件也可能在將來引起問題。
警告:以下過程可能不是最佳解決方案。我從來沒有遇到過你的問題,所以我從來沒有試圖從中恢復。這正是我想要嘗試的。您可能需要等待其他答案(或評論)出現。
如果您仍然擁有包含舊資料的舊磁碟,並且願意放棄對 Windows 複製副本所做的任何更改,那麼您可以按照以下步驟操作:
- 斷開新磁碟的連線(以避免 UUID 衝突),連接舊磁碟。
- 啟動舊 Windows。
- 安裝更新,以便您的 Windows 準備好完全支援 3 TB 磁碟。 (雖然本文提到「系統設定配置不正確、註冊表中的不規則條目或英特爾®快速儲存技術」也可能會產生幹擾)。
- 再次克隆。我只會將舊的 Windows 分割區複製到大磁碟上已有的分割區; Ubuntu 將保持不變;大磁碟上的 GRUB 或/和 EFI 啟動項目可能需要更新才能正確啟動 Windows。
如果您無法還原到舊的 Windows,您可以嘗試以下操作:
- 如果可能,請勿讓 Windows 寫入輔助分割區表。
chkdsk
在包含 Windows 的檔案系統上執行(通常C:\
)。我不確定這有多安全。請注意,Windows 分割區的一部分超出了 Windows 認為的最後一個磁區,因此該工具可能會也可能無法正常運作。將磁碟連接到其他(完全更新)Windows 並chkdsk
在那裡運行可能會更安全(但如果您想為此目的使用 USB 外殼,請注意某些外殼可能會造成麻煩)。- 安裝更新,以便您的 Windows 準備好完全支援 3 TB 磁碟。