GUID Partition Table, аббр. GPT — стандарт формата размещения таблиц разделов на физическом жестком диске. Он является частью Extensible Firmware Interface (EFI) — стандарта, предложенного Intel на смену BIOS. EFI использует GPT там, где BIOS использует Главную загрузочную запись (англ. Master Boot Record, MBR).
Возможности
правитьВ отличие от MBR, которая начинается с исполняемой двоичной программы, призванной идентифицировать и загрузить активный раздел, GPT опирается на расширенные возможности EFI для осуществления этих процессов. Однако MBR присутствует в самом начале диска (блок LBA 0) как для защиты, так и в целях совместимости. Собственно GPT начинается с Оглавления таблицы разделов (англ. Partition Table Header).
GPT использует современную систему адресации логических блоков (LBA) вместо применявшейся в MBR адресации «Цилиндр — Головка — Сектор» (CHS). MBR, доставшаяся по наследству со всей своей информацией, содержится в блоке LBA 0, оглавление GPT — в блоке LBA 1. В оглавлении содержится адрес блока, где начинается сама таблица разделов, обычно это следующий блок — LBA 2. Количество разделов не ограничено стандартом и зависит от операционной системы[1] (технически ограничено порядка 264 разделами из-за разрядности полей). Так в Microsoft Windows в таблице разделов резервируется место для 128 записей по 128 байт каждая (в GNU/Linux ядро поддерживает до 256 разделов[2]). Таким образом для таблицы разделов в Windows резервируется 16 384 байт (при использовании сектора размером 512 байт это будет 32 сектора), так что первым используемым сектором каждого жёсткого диска в ней будет блок LBA 34.
Кроме того, GPT обеспечивает дублирование — оглавление и таблица разделов записаны как в начале, так и в конце диска.
Теоретически, GPT позволяет создавать разделы диска размером до 9,4 ЗБ (9,4 × 1021 байт) (при размере сектора 512 байт, иначе — больше), в то время как MBR может работать только до 2,2 ТБ (2,2 × 1012 байт).
GPT позволяет назначать разделам идентификаторы GUID, имена и атрибуты, независимо от внутренних UUID файловых систем, их меток и прочего, и позволяет обращаться по таким именам вместо меток и номеров разделов. Благодаря поддержке Юникода в именах и щадящих ограничений на них, разделы могут быть названы на любом языке и сгруппированы по папкам[3].
Наследственный MBR (LBA 0)
правитьОсновная цель помещения MBR в начало диска — защитная. MBR-ориентированные дисковые утилиты могут не распознать и даже перезаписать GPT-диски. Чтобы избежать этого, указывается наличие всего одного раздела, охватывающего весь GPT-диск. Системный идентификатор (англ. System ID) для этого раздела устанавливается в значение 0xEE
, указывающее, что применяется GPT. Вследствие этого EFI игнорирует MBR. Некоторые 32-битные операционные системы, например Windows XP, не приспособленные для чтения дисков, содержащих GPT, тем не менее распознаю́т этот Системный идентификатор и представляют том в качестве недоступного GPT-диска. Более старые ОС[какие?] обычно представляют диск как содержащий единственный раздел неизвестного типа и без свободного места; как правило, они отказываются модифицировать такой диск, пока пользователь явно не потребует и не подтвердит удаление данного раздела. Таким способом предотвращается случайное стирание содержимого GPT-диска.
Оглавление таблицы разделов (LBA 1)
правитьОглавление таблицы разделов указывает те логические блоки на диске, которые могут быть задействованы пользователем (англ. the usable blocks). Оно также указывает число и размер записей данных о разделах, составляющих таблицу разделов. Стандартно в Microsoft Windows резервируется 128 записей данных о разделах. Таким образом, возможно создание 128 разделов на диске.
Оглавление содержит GUID (англ. Globally Unique IDentifier — «глобально уникальный идентификатор») диска. В оглавлении также содержится его собственный размер и местоположение (всегда блок LBA 1), а также размер и местоположение вторичного (запасного) оглавления и таблицы разделов, которые всегда размещаются в последних секторах диска. Важно, что оно также содержит контрольную сумму CRC32 для себя и для таблицы разделов. Эти контрольные суммы проверяются процессами EFI при загрузке машины. Из-за проверок контрольных сумм недопустима и бессмысленна модификация содержимого GPT в шестнадцатеричных редакторах. Всякое редактирование нарушит соответствие содержания контрольным суммам, после чего EFI перезапишет первичный GPT вторичным. Если же оба GPT будут содержать неверные контрольные суммы, доступ к диску станет невозможным[к. 1].
Записи данных о разделах (LBA 2-33)
правитьЗаписи данных о разделах (англ. Partition entries) просты и расположены с равным приращением адресов. Первые 16 байт определяют GUID типа раздела. Например, GUID системного EFI-раздела имеет вид «C12A7328-F81F-11D2-BA4B-00A0C93EC93B
». Следующие 16 байт содержат GUID, уникальный для данного конкретного раздела. Далее записываются данные о начале и конце 64-битных LBA, если они имеются. Остальное место отводится информации об именах и атрибутах разделов.
Идентификаторы (GUID) различных типов разделов
правитьАссоц. платф. | Тип раздела | Глобально-уникальный идентификатор (GUID) |
---|---|---|
(Нет) | Неиспользуемая запись данных | 00000000-0000-0000-0000-000000000000 |
Схема разделов MBR | 024DEE41-33E7-11D3-9D69-0008C781F39F | |
Системный раздел EFI | C12A7328-F81F-11D2-BA4B-00A0C93EC93B | |
BIOS boot partition | 21686148-6449-6E6F-744E-656564454649 | |
Раздел Intel Fast Flash (iFFS) (для технологии Intel Rapid Start) | D3BFE2DE-3DAF-11DF-BA40-E3A556D89593 | |
Загрузочный раздел Sony | F4019732-066E-4E12-8273-346C5641494F | |
Загрузочный раздел Lenovo | BFBFAFE7-A34F-448A-9A5B-6213EB736C22 | |
Windows | Резервный раздел Microsoft | E3C9E316-0B5C-4DB8-817D-F92DF00215AE |
Раздел основных данных | EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 | |
Менеджер логических томов, раздел метаданных | 5808C8AA-7E8F-42E0-85D2-E1E90434CFB3 | |
Менеджер логических томов, раздел данных | AF9B60A0-1431-4F62-BC68-3311714A69AD | |
Раздел восстановления | DE94BBA4-06D1-4D40-A16A-BFD50179D6AC | |
HP-UX | Раздел данных | 75894C1E-3AEB-11D3-B7C1-7B03A0000000 |
Раздел Сервиса | E2A1E728-32E3-11D6-A682-7B03A0000000 | |
Linux | Раздел данных | 0FC63DAF-8483-4772-8E79-3D69D8477DE4 |
RAID раздел | A19D880F-05FC-4D3B-A006-743F0F84911E | |
Своп-раздел | 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F | |
Раздел Менеджера логических томов (LVM) | E6D6D379-F507-44C2-A23C-238F2A3DF928 | |
Раздел /home | 933AC7E1-2EB4-4F13-B844-0E14E2AEF915 | |
Раздел /srv (данные сервера) | 3B8F8425-20E0-4F3B-907F-1A25A76F98E8 | |
Раздел dm-crypt | 7FFEC5C9-2D00-49B7-8941-3EA10A5586B7 | |
Раздел LUKS | CA7D7CCB-63ED-4C53-861C-1742536059CC | |
Зарезервировано | 8DA63339-0007-60C0-C436-083AC8230908 | |
FreeBSD | Загрузочный раздел | 83BD6B9D-7F41-11DC-BE0B-001560B84F0F |
Раздел данных | 516E7CB4-6ECF-11D6-8FF8-00022D09712B | |
Своп-раздел | 516E7CB5-6ECF-11D6-8FF8-00022D09712B | |
Раздел UFS (Unix File System) | 516E7CB6-6ECF-11D6-8FF8-00022D09712B | |
Раздел менеджера томов Vinum | 516E7CB8-6ECF-11D6-8FF8-00022D09712B | |
Раздел ZFS | 516E7CBA-6ECF-11D6-8FF8-00022D09712B | |
macOS | Раздел HFS+ (Hierarchical File System) | 48465300-0000-11AA-AA11-00306543ECAC |
Раздел APFS (Apple File System) | 7C3457EF-0000-11AA-AA11-00306543ECAC | |
Apple UFS | 55465300-0000-11AA-AA11-00306543ECAC | |
ZFS | 6A898CC3-1DD2-11B2-99A6-080020736631 | |
Apple RAID раздел | 52414944-0000-11AA-AA11-00306543ECAC | |
Apple RAID раздел, offline | 52414944-5F4F-11AA-AA11-00306543ECAC | |
Загрузочный раздел Apple | 426F6F74-0000-11AA-AA11-00306543ECAC | |
Apple Label | 4C616265-6C00-11AA-AA11-00306543ECAC | |
Раздел Apple TV Recovery | 5265636F-7665-11AA-AA11-00306543ECAC | |
Раздел Apple Core Storage (то есть Lion FileVault) | 53746F72-6167-11AA-AA11-00306543ECAC | |
Solaris | Загрузочный раздел | 6A82CB45-1DD2-11B2-99A6-080020736631 |
Корневой раздел | 6A85CF4D-1DD2-11B2-99A6-080020736631 | |
Своп раздел | 6A87C46F-1DD2-11B2-99A6-080020736631 | |
Backup-раздел | 6A8B642B-1DD2-11B2-99A6-080020736631 | |
Раздел /usr | 6A898CC3-1DD2-11B2-99A6-080020736631 | |
Раздел /var | 6A8EF2E9-1DD2-11B2-99A6-080020736631 | |
Раздел /home | 6A90BA39-1DD2-11B2-99A6-080020736631 | |
EFI_ALTSCTR | 6A9283A5-1DD2-11B2-99A6-080020736631 | |
Зарезервированные разделы | 6A945A3B-1DD2-11B2-99A6-080020736631 | |
6A9630D1-1DD2-11B2-99A6-080020736631 | ||
6A980767-1DD2-11B2-99A6-080020736631 | ||
6A96237F-1DD2-11B2-99A6-080020736631 | ||
6A8D2AC7-1DD2-11B2-99A6-080020736631 | ||
NetBSD | Своп раздел | 49F48D32-B10E-11DC-B99B-0019D1879648 |
Раздел FFS | 49F48D5A-B10E-11DC-B99B-0019D1879648 | |
Раздел LFS[англ.] | 49F48D82-B10E-11DC-B99B-0019D1879648 | |
Раздел RAID | 49F48DAA-B10E-11DC-B99B-0019D1879648 | |
Соединённый раздел | 2DB519C4-B10F-11DC-B99B-0019D1879648 | |
Шифрованный раздел | 2DB519EC-B10F-11DC-B99B-0019D1879648 | |
Chrome OS | Ядро ChromeOS | FE3A2A5D-4F32-41A7-B725-ACCC3285A309 |
ChromeOS rootfs | 3CB8E202-3B7E-47DD-8A3C-7FF2A13CFCEC | |
Для будущего использования ChromeOS | 2E0A753D-9E48-43B0-8337-B15192CB1B5E | |
QNX | Power-safe (QNX6) file system[4] | CEF5A9AD-73BC-4601-89F3-CDEEEEE321A1 |
OS/2 | ArcaOS Type 1[5] | 90B6FF38-B98F-4358-A21F-48F35B4A8AD3 |
Примечание 1: GUID для раздела данных Linux ранее являлся дубликатом GUID для раздела основных данных Microsoft Windows.
Примечание 2: Порядок записи байтов в написаниях GUID — little-endian. К примеру, GUID системного раздела EFI записан как: C12A7328-F81F-11D2-BA4B-00A0C93EC93B, что соответствует последовательности 16 байтов: 28 73 2A C1 1F F8 D2 11 BA 4B 00 A0 C9 3E C9 3B. Обратите внимание, что байты пишутся задом наперед только в первых трех блоках (C12A7328-F81F-11D2).
Недостатки
править- Противоречивые реализации поддержки GPT, возможно, из-за закрытости большей части стандарта (например, GUID для раздела данных Linux был изменён на другой, в старых версиях parted используется нестандартная кодировка имён).
- Не предусмотрено возможности назначать имя всему диску, как отдельным разделам (хотя у него есть свой GUID).
- По-прежнему сильна привязка раздела к его номеру в таблице (например, многие загрузчики ОС предпочитают номер именам и GUID).
- Количество дубликатов таблиц строго ограничено двумя, их позиции зафиксированы, что в случае повреждения диска, ошибок администрирования или ошибок программ недостаточно для удобного восстановления данных.
- Ни резервная копия GPT, ни основная не позволяют аннулировать другую копию в случае, если та неверна, но имеет правильную контрольную сумму и не может быть стёрта, то есть не предусмотрено защиты от повреждённых секторов (плохих блоков), которая давно есть в некоторых (ext3, ext4[6]) файловых системах.
Примечания
правитькомментарии
- ↑ Впрочем, редактирование возможно — см. https://www.linux.org.ru/forum/admin/13360627?cid=13363080)
источники
- ↑ What’s the Difference Between GPT and MBR When Partitioning a Drive? Дата обращения: 5 апреля 2016. Архивировано 6 апреля 2016 года.
- ↑ Lingzhu Xiang. linux - What is the maximum number of partitions with EFI? (англ.). Super User (19 апреля 2013). Дата обращения: 5 апреля 2016.
- ↑ Для создания папок с разделом имя раздела должно содержать
/
и представлять относительный путь к разделу. - ↑ QNX Power-safe filesystem . Дата обращения: 15 февраля 2016. Архивировано 24 сентября 2015 года.
- ↑ Arca Noae announces GUID for OS/2 Type 1 GPT partitions . Дата обращения: 2 ноября 2020. Архивировано 30 октября 2020 года.
- ↑ Лечение жесткого диска с бэд блоками bad blocks испорченные блоки (Решение) | Kubuntu.ru . www.kubuntu.ru. Дата обращения: 15 июля 2020. Архивировано 16 июля 2020 года.
Ссылки
править- Microsoft TechNet: Disk Sectors on GPT Disks
- Microsoft TechNet: Using GPT Drives on x86-64 Systems