Как предотвратить неправильное размещение вторичного GPT в Windows во время загрузки?

Как предотвратить неправильное размещение вторичного GPT в Windows во время загрузки?

На моем компьютере есть один (и единственный) жесткий диск на 3 ТБ с 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 исправить это или я исправляю это с помощью gparted в Ubuntu.

Я прошу вашей помощи ответить на два вопроса:

  1. Есть ли какое-либо решение или способ предотвратить ошибочный сброс вторичного GPT в Windows 7 во время загрузки Windows?

  2. Неправильное размещение вторичного 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.52 ГБ. Оно также может распознать все разделы, кроме последнего (потому что последний — ext4).

Однако я запускаю gdisk64.exe (64-разрядную версию GPT fdisk для Windows), и он выдает предупреждение:

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, повторяется. Во время запуска Windows, она выполняет «Проверку файловой системы на E:» и запрашивает проверку диска на целостность. После этого и chkdsk, и Disk Management показывают нормальные результаты без каких-либо предупреждений, но gdisk64 снова и снова сообщает то же самое предупреждение для вторичной таблицы разделов, перекрывающей последний раздел на 4 294 966 385 блоков. Последний используемый сектор возвращается к 1 565 565 838 и предшествует последнему сектору диска (5 860 533 168) слишком рано, хотя это было исправлено и установлено на 5 860 533 134 с помощью gparted при последней перезагрузке (фаза Ubuntu).

Я думаю, что основная проблема здесь, по-видимому, заключается в том, что Windows 7 устанавливает вторичный/резервный GPT в средней точке жесткого диска, а не позволяет резервной копии оставаться после последнего раздела. Как я знаю, «последний используемый сектор» — это место, где начинается вторичный/резервный GPT. Жесткий диск имеет всего 5 860 533 168 секторов. Последний используемый сектор составляет 5 860 533 134 после исправления gparted, но снова становится 1 565 565 838 после процесса загрузки Windows 7. Тот факт, что моя Windows 7 (SP1, 64-разрядная версия) может распознавать полную емкость жесткого диска в управлении дисками, сам по себе не помогает избежать сброса резервного GPT в неправильном месте. Я знаю, как сбросить вторичный GPT туда, где он должен быть, но я не знаю, как предотвратить его неправильное размещение Windows 7 во время фазы загрузки ОС.

Ниже приведены мои вопросы: Неправильное размещение вторичного GPT приводит к тому, что некоторые из моих файлов теперь имеют нулевой размер файла. Есть ли способ восстановить эти файлы, поскольку их содержимое все еще там?

Есть ли способ предотвратить ошибочный сброс вторичного GPT в Windows 7 во время загрузки Windows?

Пожалуйста помоги.

решение1

5860533168(Ubuntu видит его) — это реальное число логических секторов. Для этого нужно 33 бита, и если вы попытаетесь сохранить его в 32 битах, то самый старший бит будет потерян, и число станет 1565565872(Windows использует его).

Похоже, что ваш Windows (или некоторые его части) использует 32 бита, хотя должен использовать больше. Windows и Ubuntu борются за то, где должна располагаться таблица вторичных разделов. Ubuntu права.

По данным Microsoft[выделено мной]:

Microsoft исследовала, как Windows поддерживает эти большие диски. Результаты выявили несколько проблем, которые относятся ко всем версиям Windows до ивключая Windows 7 с пакетом обновления 1и Windows Server 2008 R2 с пакетом обновления 1.

На данный момент известно о следующем некорректном поведении, возникающем при работе Windows с однодисковым хранилищем емкостью более 2 ТБ:

  • Числовая емкость за пределами 2 ТБ переполняется. Это приводит к тому, что система может адресовать только емкость за пределами 2 ТБ. Например, на диске объемом 3 ТБ доступная емкость может составлять всего 1 ТБ.
  • Числовая емкость за пределами 2 ТБ усекается. Это приводит к тому, что адресного пространства остается не более 2 ТБ. Например, на диске объемом 3 ТБ доступная емкость может составлять всего 2 ТБ.
  • Устройство хранения данных не обнаружено правильно. В этом случае оно не отображается ни в диспетчере устройств, ни в окне управления дисками.

Полагаю, вы попали в эту ситуацию, клонировав диск, который был достаточно мал, чтобы не вызывать проблем в Windows 7 SP1. Вероятно, 1 ГБ (судя по размещению раздела HP Factory Recovery, который находился в конце старого диска).

Файловая система на текущем системном разделе Windows была повреждена. Возможно, ее структуры можно восстановить, но вы не можете быть уверены, что повреждение не затронуло важные файлы. Даже если сейчас все работает, поврежденные файлы могут вызвать проблемы в будущем.

Предупреждение: следующие процедуры могут быть не лучшим решением. Я никогда не сталкивался с вашей проблемой, поэтому я никогда не пытался от нее избавиться. Это просто то, что я бы попробовал. Вы можете подождать, пока появятся другие ответы (или комментарии).

Если у вас все еще есть старый диск со старыми данными и вы готовы удалить все изменения, внесенные в клонированную копию Windows, то вы можете выполнить следующие действия:

  1. Отключите новый диск (чтобы избежать конфликтов UUID), подключите старый.
  2. Загрузите старую версию Windows.
  3. Установите обновления, чтобы ваша Windows была готова к полной поддержке дисков объемом 3 ТБ. (ХотяЭта статьяупоминает, что «неправильно настроенные параметры системы, неправильные записи в реестре или технология Intel® Rapid Storage» также могут помешать работе).
  4. Клонируйте снова. Я бы клонировал только старый раздел Windows в уже существующий раздел на большом диске; Ubuntu остался бы нетронутым; для корректной загрузки Windows может потребоваться обновить GRUB или/и загрузочную запись EFI на большом диске.

Если вы не можете вернуться к старой версии Windows, попробуйте сделать следующее:

  1. Если возможно, не позволяйте Windows записывать вторичную таблицу разделов.
  2. Запустите chkdskна файловой системе, содержащей Windows (обычно C:\). Я не уверен, насколько это безопасно. Обратите внимание, что часть вашего раздела Windows находится за пределами того, что Windows считает последним сектором, поэтому инструмент может работать или не работать правильно. Подключение диска кдругой(полностью обновлено) Windows и работа chkdskна нем могут быть безопаснее (но если вы хотите использовать USB-корпус для этой цели, имейте в виду,некоторые корпуса могут вызывать проблемы).
  3. Установите обновления, чтобы ваша Windows была готова к полной поддержке дисков объемом 3 ТБ.

Связанный контент