Все современные операционные системы персональных компьютеров поддерживают GPT. Некоторые из них, включая macOS и Microsoft Windows на архитектуре x86, поддерживают загрузку с разделов GPT только на системах с прошивкой EFI, но FreeBSD и большинство дистрибутивов Linux могут загружаться с разделов GPT на системах с интерфейсом BIOS или прошивки EFI.
История
Схема разбиения на разделы Master Boot Record (MBR), широко используемая с начала 1980-х годов, налагала ограничения на использование современного оборудования. Доступный размер адресов блоков и связанной с ними информации ограничен 32 битами. Для жестких дисков с секторами размером 512 байт записи таблицы разделов MBR допускают максимальный размер 2 ТиБ (2³² × 512 байт) или 2,20 ТБ (2,20 × 10¹² байт). [1]
В конце 1990-х годов Intel разработала новый формат таблицы разделов как часть того, что в конечном итоге стало Unified Extensible Firmware Interface (UEFI). Таблица разделов GUID указана в главе 5 спецификации UEFI 2.8. [2] GPT использует 64 бита для адресов логических блоков, что позволяет использовать диск размером до 2 64 секторов. Для дисков с секторами размером 512 байт максимальный размер составляет 8 ЗиБ (2 64 × 512 байт) или 9,44 ЗБ (9,44 × 10²¹ байт). [1] Для дисков с секторами размером 4096 байт максимальный размер составляет 64 ЗиБ (2 64 × 4096 байт) или 75,6 ЗБ (75,6 × 10²¹ байт).
В 2010 году производители жестких дисков представили накопители с секторами размером 4096 байт ( Advanced Format ). [3] Для совместимости с устаревшим оборудованием и программным обеспечением эти накопители включают технологию эмуляции ( 512e ), которая представляет 512-байтовые сектора субъекту, получающему доступ к жесткому диску, несмотря на их базовые 4096-байтовые физические сектора. [4] Производительность может снижаться при операциях записи, когда накопитель вынужден выполнять две операции чтения-изменения-записи для выполнения одной невыровненной операции записи размером 4096 байт. [4] С апреля 2014 года на рынке доступны накопители корпоративного класса без технологии эмуляции ( 4K native ). [5] [6]
Готовность поддержки логических секторов размером 4 КБ в операционных системах различается в зависимости от их типа, поставщика и версии. [7] Например, Microsoft Windows поддерживает собственные диски размером 4 КБ с Windows 8 и Windows Server 2012 (обе выпущены в 2012 году) в UEFI . [8]
Функции
Как и MBR, GPT использует логическую адресацию блоков (LBA) вместо исторической адресации цилиндр-головка-сектор (CHS). Защитный MBR хранится в LBA 0, а заголовок GPT — в LBA 1, с резервным заголовком GPT, хранящимся в конечном LBA. Заголовок GPT имеет указатель на таблицу разделов ( Partition Entry Array ), которая обычно находится в LBA 2. Каждая запись в таблице разделов имеет размер 128 байт. Спецификация UEFI предусматривает, что для Partition Entry Array выделяется минимум 16 384 байта, независимо от размера сектора. [9] Таким образом, на диске с секторами размером 512 байт для массива записей раздела используется не менее 32 секторов, а первый используемый блок находится на LBA 34 или выше, в то время как на диске с секторами размером 4096 байт для массива записей раздела используется не менее 4 секторов, а первый используемый блок находится на LBA 6 или выше.
Варианты МБР
Защитный МБР (LBA 0)
Для ограниченной обратной совместимости пространство устаревшей Master Boot Record (MBR) по-прежнему зарезервировано в спецификации GPT, но теперь оно используется таким образом, что не позволяет утилитам на основе MBR неправильно распознавать и, возможно, перезаписывать диски GPT. Это называется защитной MBR . [10]
Один раздел типа EEh , охватывающий весь диск GPT (где «весь» на самом деле означает всю часть диска, которая может быть представлена в MBR), указывается и идентифицирует его как GPT. Операционные системы и инструменты, которые не могут читать диски GPT, обычно распознают диск как содержащий один раздел неизвестного типа и без пустого пространства, и обычно отказываются изменять диск, если пользователь явно не запросит и не подтвердит удаление этого раздела. Это сводит к минимуму случайные стирания. [10] Кроме того, операционные системы, поддерживающие GPT, могут проверять защитный MBR, и если тип включенного раздела не является типом EEh или если на целевом устройстве определено несколько разделов, ОС может отказаться манипулировать таблицей разделов. [11]
Если фактический размер диска превышает максимальный размер раздела, представляемый с использованием устаревших 32-битных записей LBA в таблице разделов MBR, записанный размер этого раздела обрезается по максимуму, тем самым игнорируя остальную часть диска. Это составляет максимальный сообщаемый размер 2 ТиБ, предполагая, что диск имеет 512 байт на сектор (см. 512e ). Это привело бы к 16 ТиБ с секторами по 4 КиБ ( 4Kn ), но поскольку многие старые операционные системы и инструменты жестко закодированы для размера сектора 512 байт или ограничены 32-битными вычислениями, превышение предела в 2 ТиБ может вызвать проблемы совместимости. [10]
Гибридный MBR (LBA 0 + GPT)
В операционных системах, которые поддерживают загрузку на основе GPT через службы BIOS, а не EFI, первый сектор также может использоваться для хранения первой стадии кода загрузчика, но измененного для распознавания разделов GPT. Загрузчик в MBR не должен предполагать размер сектора 512 байт. [10]
Заголовок таблицы разделов (LBA 1)
Заголовок таблицы разделов определяет используемые блоки на диске. Он также определяет количество и размер записей разделов, которые составляют таблицу разделов (смещения 80 и 84 в таблице). [2] : 119
Записи разделов (LBA 2–33)
После основного заголовка и перед резервным заголовком Partition Entry Array описывает разделы, используя минимальный размер 128 байт для каждого блока записи. [12] Начальное местоположение массива на диске и размер каждой записи указаны в заголовке GPT. Первые 16 байт каждой записи обозначают глобальный уникальный идентификатор типа раздела (GUID). Например, GUID для системного раздела EFI — C12A7328-F81F-11D2-BA4B-00A0C93EC93B . Вторые 16 байт — это GUID, уникальный для раздела. Затем следуют начальный и конечный 64-битные LBA, атрибуты раздела и 36-символьное (макс.) имя раздела Unicode . Согласно природе и назначению GUID и RFC 4122, для обеспечения уникальности обозначений типов разделов GUID не требуется никакого центрального реестра. [13] [2] : 2200
64-битные атрибуты таблицы разделов являются общими для 48-битных атрибутов всех типов разделов и 16-битных атрибутов, специфичных для определенного типа:
Microsoft определяет атрибуты, специфичные для типа базового раздела данных , как: [15] [16]
Google определяет атрибуты, специфичные для типа ядра ChromeOS, следующим образом: [17]
Поддержка операционной системы
UNIX и Unix-подобные системы
Windows: 32-битные версии
Windows 7 и более ранние версии не поддерживают UEFI на 32-разрядных платформах и, следовательно, не допускают загрузку с разделов GPT. [32]
Windows: 64-битные версии
Ограничено 128 разделами на диск. [32]
GUID типа раздела
"Partition type GUID" означает, что каждый тип раздела строго идентифицируется уникальным для этого типа номером GUID, и поэтому все разделы одного типа будут иметь одинаковый "partition type GUID". Каждый раздел также имеет "partition unique GUID" в качестве отдельной записи, которая, как следует из названия, является уникальным идентификатором для каждого раздела.
^ Добавление ULLсуффикса к целочисленной константе делает ее типом unsigned long long int.
^ Существует сторонняя реализация (GPTTSD)
^ Windows XP 64-bit обычно не поддерживает загрузку с GPT-дисков, но существуют неофициальные методы загрузки XP с нее. [37]
^ Только при использовании пакета обновления 1 или 2.
^ В многодисковой конфигурации загрузчик без UEFI (загрузочный диск) требует разбиения на разделы на основе MBR, тогда как системный диск может использовать разбиение на разделы GUID.
^ Идентификаторы GUID в этой таблице записаны в соответствии с RFC 4122, т.е. в порядке байтов big-endian , распознаваемом по положению битов версии. Например, GUID для раздела системы EFI ( ), когда сериализован в структурах данных GPT (little-endian), соответствует шестнадцатеричной последовательности . Первые три блока байты переставлены на little-endian, последний представляет собой массив байтов. Подробности см. в TN2166 [11]C12A7328-F81F-11D2-BA4B-00A0C93EC93B28 73 2A C1 1F F8 D2 11 BA 4B 00 A0 C9 3E C9 3B
^ Формирование этого GUID не следует определению GUID; оно формируется с использованием кодов ASCII для строки " Hah!IdontNeedEFI ". Такое формирование значения "GUID" нарушает гарантированную уникальность GUID.
^ ab Некоторые производители компьютеров имеют собственные GUID для разделов, которые аналогичны системному разделу EFI, но содержат загрузчики для запуска инструментов восстановления, специфичных для производителя. [44]
^ ab Ранее Linux использовал тот же GUID для разделов данных, что и Windows (базовый раздел данных: EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 ). Linux никогда не имел отдельного уникального типа раздела GUID, определенного для его разделов данных. Это создавало проблемы при двойной загрузке Linux и Windows в настройке UEFI-GPT. Новый GUID (данные файловой системы Linux: 0FC63DAF-8483-4772-8E79-3D69D8477DE4 ) был определен совместно разработчиками GPT fdisk и GNU Parted. [46] Он идентифицируется как код типа 0x8300 в GPT fdisk.
^ ab GUID для /usrSolaris используется как общий GUID для ZFS в macOS.
^ ab NetBSD и MidnightBSD использовали FreeBSD GUID до того, как были созданы их уникальные GUID.
^ Файловая система Ceph использует GUID для обозначения состояния подготовки, в котором находится диск. [68] [69]
^ Устаревшие Fuchsia GUID имели две странности: UUID не генерировались случайным образом (несколько серий битов были общими для разделов), и разделы были уникально идентифицированы по типу GUID. Стандартизированная схема использует случайно сгенерированные GUID, а слотированные разделы (например, zircon_{a,b,r}) имеют один и тот же тип и различаются по имени и уникальному GUID. [84]
Ссылки
^ ab "FAQ: Ограничения разделов дисков" (PDF) . www.uefi.org . 2010 . Получено 12 декабря 2020 .
^ abc "Спецификация унифицированного расширяемого интерфейса прошивки (UEFI)" (PDF) . www.uefi.org . 29 августа 2022 г. стр. 110 . Получено 23 июня 2023 г. .
^ Суинберн, Ричард (1 апреля 2010 г.). «Факты: жесткие диски 4K Advanced Format». www.bit-tech.net . Получено 12 декабря 2020 г. .
^ ab Smith, Ryan (18 декабря 2009 г.). «Western Digital's Advanced Format: The 4K Sector Transition Begins». www.anandtech.com . Архивировано из оригинала 28 декабря 2020 г. . Получено 12 декабря 2020 г. .
^ "Enterprise Capacity 3.5 HDD Data Sheet" (PDF) . Seagate Technology . 23 апреля 2014 г. стр. 2. Архивировано (PDF) из оригинала 2014-08-12 . Получено 10 августа 2014 г.
^ "WD Re Datacenter Distribution Specification Sheet" (PDF) . Western Digital . 21 января 2016 г. стр. 2. Архивировано (PDF) из оригинала 2015-09-06 . Получено 14 февраля 2016 г.
^ "Обновление совместимости с расширенным форматом (4K) диска (Windows)". 28 ноября 2012 г. Архивировано из оригинала 2013-01-11 . Получено 3 января 2013 г.
^ "Политика поддержки Microsoft для жестких дисков с секторами 4K в Windows". Microsoft . Архивировано из оригинала 2011-08-19 . Получено 24 октября 2013 .
^ "Спецификация UEFI". UEFI.org .
^ abcd Смит, Родерик (3 июля 2012 г.). «Извлеките максимум из больших дисков с GPT и Linux». IBM . Получено 14 декабря 2020 г. .
^ abcd "Техническое примечание TN2166: Секреты GPT". Разработчик Apple . Apple . 2006-11-06 . Получено 2014-04-16 .
^ Заголовок GPT содержит поле, которое определяет размер записи таблицы разделов. Минимально требуемый размер — 128 байт, но реализации должны допускать и другие значения. См. "Mac Developer Library". Developer.Apple.com . Apple . Получено 2014-07-13 .
^ Лич, П.; Миллинг, М.; Зальц, Р. (июль 2005 г.). Пространство имен URN универсального уникального идентификатора (UUID). Internet Engineering Task Force . doi : 10.17487/RFC4122 . RFC 4122 . Получено 18 декабря 2020 г. .{{citation}}: CS1 maint: год ( ссылка )
^ Эллиотт, Роб (4 января 2010 г.). "e09127r3 EDD-4 Hybrid MBR Boot Code Annex" (PDF) . www.t13.org . Архивировано из оригинала (PDF) 20 августа 2020 г. . Получено 16 декабря 2020 г. .
^ "GPT | Microsoft Docs". 31 августа 2016 г.
^ "CREATE_PARTITION_PARAMETERS (vds.h) - Приложения Win32 | Microsoft Docs". 9 февраля 2023 г.
^ "Мифы и факты о компьютерах Intel Mac". rEFIt . Источник forge.
^ "Схемы разделов, доступные в Disk Utility на Mac". Поддержка Apple . Получено 2024-11-08 .
^ «Значительные изменения от NetBSD 5.0 до 6.0»..
^ "Значительные изменения от NetBSD 5.0 до 6.0 (NetBSD/i386)"..
^ "Значительные изменения от NetBSD 5.0 до 6.0 (NetBSD/amd64)"..
^ "OpenBSD 5.9"..
^ "Загрузка с корневой файловой системы ZFS". Oracle. Архивировано из оригинала 2011-12-10.
^ "idisk(1M)". Hewlett-Packard.
^ abcd "Windows и GPT FAQ". msdn.microsoft.com . 1 июня 2017 г. . Получено 14 декабря 2020 г. .
^ Windows 8 32-разрядная версия поддерживает загрузку с ПК на базе UEFI (только x86-32) с использованием дисков на базе GPT.
^ Windows 8.1 32-разрядная версия поддерживает загрузку с ПК на базе UEFI (только x86-32) с использованием дисков на базе GPT.
^ Windows 10 32-разрядная версия поддерживает загрузку с ПК на базе UEFI (только x86-32) с использованием дисков на базе GPT.
^ Microsoft повышает ограничение скорости с появлением 64-разрядных версий Windows Server 2003 и Windows XP Professional Архивировано 10 ноября 2010 г. на Wayback Machine
^ Смит, Род (23 июня 2011 г.). «Необходимость уникального кода типа Linux GPT GUID (включая PATCH)». bug-parted (список рассылки) . Получено 12 апреля 2016 г.
^ Сергей Антонов (2014-07-31). "libfdisk: (gpt) add Microsoft Storage Spaces GUID". util-linux/util-linux.git — репозиторий кода util-linux . Получено 2021-08-21 .
^ Известные проблемы с Storage Replica
^ abcdefghijklmnopqrstu vwxyz aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi bj bk bl bm bn bo bp bq br bs bt bu bv bw bx by bz ca cb cc cd ce cf cg ch ci cj ck cl cm cn co cp cq cr cs ct cu cv cw cx cy cz da db dc dd de df dg dh di dj dk dl dm dn do dp dq dr ds dt du dv dw dx dy dz ea eb Спецификация обнаруживаемых разделов (DPS)
^ abcde systemd-gpt-автогенератор(8)
^ Домашние каталоги
^ Спецификация загрузчика
^ ab "[dm-crypt] LUKS GPT GUID". Saout.de. Архивировано из оригинала 2014-02-03 . Получено 2014-01-29 .
^ ab "[dm-crypt] LUKS GPT GUID". Saout.de. Архивировано из оригинала 2014-02-03 . Получено 2014-01-29 .
^ ab "исходный код pyuefi".
^ "исходный код udisks-2.7.4". GitHub . 10 июля 2022 г.
^ Руководство пользователя GNU/Hurd: Установка, Установка через Интернет
^ Hurd и GRUB используют для работы одну и ту же файловую систему Linux ext2 и больше не поддерживают «UFS».файловая система
^ Hurd использует ту же файловую систему подкачки Linux
^ "Руководство пользователя блочного устройства SPDK" . Получено 20.01.2021 .
^ "Barebox State Framework" . Получено 2021-05-21 .
^ Villemoes, Rasmus (2020-11-17). "RFC: Partition type GUID for U-Boot environment". Список рассылки U-Boot (Список рассылки) . Получено 28.09.2021 .
^ "Исходный код U-boot 2021.07: include/part_efi.h". 20 ноября 2020 г. Получено 28 сентября 2021 г.
^ ab zircon/system/public/zircon/hw/gpt.h
^ "[paver] добавить поддержку новой схемы разделов" . Получено 2021-10-22 .
Внешние ссылки
Microsoft TechNet: Секторы дисков на GPT-дисках (архивная страница)
Развертывание Microsoft Windows: преобразование MBR в GPT без потери данных
Microsoft TechNet: Устранение неполадок дисков и файловых систем
Microsoft TechNet: Использование GPT-дисков
Microsoft: часто задаваемые вопросы по использованию GPT-дисков в Windows
Microsoft Technet: как работают базовые диски и тома Немного специфичные для Microsoft, но хорошие цифры связывают GPT со старым форматом MBR и защитным MBR, показывают макеты полных дисков и то, как интерпретировать шестнадцатеричные дампы таблиц разделов.
Apple Developer Connection: Секреты GPT
Используйте по максимуму большие диски с GPT и Linux
Преобразование загрузки Windows Vista SP1+ или 7 x86_64 из режима BIOS-MBR в режим UEFI-GPT без переустановки
Поддержка GPT (схемы разделов) и жестких дисков объемом более 2,19 ТБ в Microsoft Windows XP