1

Я всегда думал, что GPT - это способ записи таблицы разделов на диск, и вы можете делать это как хотите. Но когда я позвонил

fdisk -l

для моего внешнего накопителя (подключенного через USB-порт), где были удалены все разделы, показывалось предупреждение

WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.

Disk /dev/sdb: 500.1 GB, 500074283008 bytes
255 heads, 63 sectors/track, 60797 cylinders, total 976707584 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: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1   976707583   488353791+  ee  GPT

Как вы можете видеть, это показывает System = GPT . Я подумал: хорошо, может быть, когда я играл с разделами, я не полностью удалил раздел GPT из /dev/sdb . Поэтому я создал новый раздел MBR, используя fdisk (fdisk сказал: «Раздел 1 типа Linux и размер 465.7 GiB установлен»), снова вызвал fdisk -l и получил

WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.

Disk /dev/sdb: 500.1 GB, 500074283008 bytes
60 heads, 62 sectors/track, 262555 cylinders, total 976707584 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: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048   976707583   488352768   83  Linux

И это то, что я не понимаю. fdisk создал раздел не-GPT старого стиля, но по-прежнему считает, что диск относится к типу GPT.

Что это значит? Означает ли это, что GPT также является некоторым свойством дискового оборудования?

1 ответ1

1

В этом контексте основная загрузочная запись (MBR) и таблица разделов GUID (GPT) - это два разных типа таблиц разделов - структуры данных, которые содержат информацию о разделах - которые могут храниться на дисках. ("MBR" также может использоваться для обозначения загрузчиков в режиме BIOS или для первого сектора на диске, но эти значения не имеют отношения к вашему вопросу.) Большая часть вашего вопроса относится к расположению данных, используемых MBR против GPT:

  • MBR использует первый сектор диска и, если присутствуют расширенные и логические разделы, дополнительные сектора, которые могут быть где угодно на диске.
  • GPT использует первые 34 сектора диска и последние 33 сектора диска (при условии 512-байтовых секторов и размеров таблицы разделов по умолчанию; число используемых секторов может варьироваться, если эти предположения не выполняются).

Таким образом, GPT использует гораздо больше дискового пространства, чем MBR (но все же тривиальный объем дискового пространства по сравнению с общей емкостью современного диска), а GPT использует критический первый сектор MBR. По этой причине часть GPT представляет собой защитную MBR, которая очень похожа на обычную MBR; но защитная MBR состоит из одного раздела типа 0xEE, который охватывает весь диск или 2 ТБ, в зависимости от того, что меньше. Идея защитной MBR состоит в том, чтобы заставить неосведомленные GPT инструменты думать, что используется весь диск, чтобы предотвратить случайную загрузку диска более старой утилитой разметки только для MBR.

Используемая вами версия Linux fdisk не совсем не знает GPT - она знает достаточно, чтобы искать структуры данных GPT и предупреждать вас, когда находит их. Однако он недостаточно осведомлен о GPT, чтобы точно сообщать о структурах данных GPT, а только о защитной MBR. Новые версии fdisk могут обрабатывать GPT-диски более тщательно. Так может и другие инструменты, как libparted (ядро parted GParted, а также некоторые другие инструменты) и мой собственный GPT FDISK gdisk sgdisk и cgdisk

Вы начали с диска GPT. Затем вы удалили разделы с диска; но это не удаляло структуры данных GPT - оно просто создавало структуры данных, которые идентифицировали диск как пустой. Поскольку fdisk не понимает структуры данных GPT, он не может отличить диск, заполненный допустимыми разделами GPT, и диск со структурами данных GPT, но разделы не определены. Используя fdisk для создания новой MBR, замените защитную MBR GPT на MBR, которая определяет (в вашем случае) один раздел Linux. Обратите внимание, однако, что это оставило 66 секторов структур данных GPT без изменений. (33 из этих секторов находятся в конце определенного вами раздела, поэтому они могут быть перезаписаны структурами данных файловой системы или содержимым файла.) Поскольку fdisk ищет эти структуры данных GPT, он продолжает жаловаться на обнаружение GPT.

При конвертации из GPT в MBR лучше использовать что-то на основе libparted; этот инструмент знает достаточно, чтобы исключить старые структуры данных GPT. В качестве альтернативы вы можете использовать мой gdisk , который преобразует структуры данных MBR в эквиваленты GPT. Старый fdisk вы использовали, очевидно, не делает этого. (Я не знаю, что делают новые версии fdisk .) Инструменты Windows, как и старый fdisk , оставляют старые данные GPT.

В настоящее время ваш диск технически является легальным MBR-диском. Некоторые инструменты, однако, будут жаловаться на это, как и fdisk . Мой gdisk спросит, хотите ли вы считать его MBR или GPT. Это предназначено, чтобы помочь в восстановлении, если кто-то случайно сотрет защитную MBR; но это может вызвать проблемы, если вы не знаете, что делаете. Некоторые другие инструменты могут работать неправильно неизвестными способами. Чтобы избежать проблем, вы можете использовать мои fixparts на диске. Эта программа установлена в gdisk или gptfdisk в большинстве дистрибутивов Linux и может стереть нежелательные структуры данных GPT. Однако есть одна важная оговорка: поскольку ваш новый раздел перекрывает структуры данных GPT на конце диска, части fixparts будут удалены внутри раздела, что может привести к повреждению файла или файловой системы, если вам не повезет. Лучшим вариантом может быть сокращение файловой системы (всего на 33 сектора) до конца, а затем запускать на ней fixparts .

Если у вас нет веских причин использовать MBR, я рекомендую использовать GPT в эти дни. Более старые ОС, такие как DOS и Windows XP, требуют MBR, но большинство или все современные ОС, включая Windows 7 и более поздние версии, любой даже удаленно текущий Linux, большинство или все текущие BSD и любые OS X/macOS, работающие на базе Intel Маки, поддержка GPT. GPT имеет скромные преимущества перед MBR, такие как резервные структуры данных, контрольные суммы для обнаружения ошибок и именованные разделы. Преобразование из GPT в MBR, как вы сделали, выявило тот факт, что переключение может вызвать проблемы или, по крайней мере, путаницу. Конечно, для максимальной совместимости, MBR лучше, и это может быть важно на некоторых сменных носителях; но, как правило, GPT является лучшей таблицей разделов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .