Структура GPT

Схема разбиения жесткого диска на основе GPT. (GUID Partition Table)

Страница 1 Схема разбиения жесткого диска на основе GPT.

(GUID Partition Table) Захаров Н.

М.

Страница 2 GUID-таблица разделов (GPT) GUID Partition Table ( GPT) — стандарт формата размещения таблиц разделов на физическом жестком диске.

Он является частью EFI ( Extensible Firmware Interface - Расширяемого микропрограммного интерфейса) — стандарта, предложенного Intel на смену BIOS.

EFI использует GPT там, где BIOS использует Главную загрузочную запись ( Master Boot Record , MBR).

GUID (Globally Unique Identifier) — статистически уникальный 128-битный идентификатор.

Его главная особенность — уникальность, которая позволяет создавать расширяемые сервисы и приложения без опасения конфликтов, вызванных совпадением идентификаторов.

Хотя уникальность каждого отдельного GUID не гарантируется, общее количество уникальных ключей настолько велико (2128 или 3,4028×1038 ), что вероятность того, что будут независимо сгенерированы два совпадающих ключа, крайне мала.

GUID-таблица разделов была разработана в связи с необходимостью преодоления ограничений, накладываемых традиционной таблицей разделов жёсткого диска, не позволяющей создавать разделы размером свыше 2 Тбайт или располагать их на дисках за пределами первых 2 Тбайт их ёмкости.

Страница 3 Слот ( описатель раздела) традиционной таблицы разделов в MBR.

Количество секторов в разделе и смещение раздела – поле длинной 4 байта.

Максимальный размер раздела и граница начала раздела: 2^32 x 512 байт ( сектор ) = 2199023255552 байт = 2 Тбайт Важнейшним техническим отличием GPT от традиционной таблицы разделов является полный отказ от использования дисковых адресов формата CHS ( Цилиндр — Головка — Сектор)и окончательный переход на адресацию LBA.

Кроме того , GPT упрощает разбиение дисков на большое число разделов.

Страница 4 Структура GPT На рисунке приведена диаграмма, поясняющая формат GUID Partition Table.

Каждый логический блок (LBA) имеет размер ровно 512 байт.

Отрицательные адреса логических блоков говорят о том, что их нумерация начинается с конца тома (диска), причем последний адресуемый блок имеет адрес −1 GPT обеспечивает дублирование — оглавление и таблица разделов записаны как в начале, так и в конце диска.

Страница 5 Защитная (protective) MBR -(LBA 0) Имеет формат, полностью соответствующий традиционной MBR.

В защитной MBR, однако, код начального загрузчика (IPL1} не используется, поскольку загрузка с такого диска может выполняться только на компьютерах, удовлетворяющих спецификации UEFI, и осуществляется не так, как на компьютерах без поддержки UEFI.

Основная цель помещения MBR в начало диска = защитная.

MBR-ориентированные дисковые утилиты могут не распознать и даже переписать GPT диски.

Чтобы избежать этого, указывается наличие всего одного раздела, охватывающего весь GPT диск.

Системный идентификатор ( SystemID ) для этого раздела устанавливается в значение 0xEE, указывающее, что применяется GPT.

Вследствие этого EFI игнорирует MBR.

Некоторые 32-битные операционные системы, не приспособленные для чтения дисков содержащих GPT, тем не менее распознают этот Системный идентификатор и представляют том в качестве недоступного GPT диска.

Более старые ОС обычно представляют диск, как содержащий единственный раздел неизвестного типа и без свободного места;

как правило, они отказываются модифицировать такой диск, пока пользователь явно не потребует и не подтвердит удаление данного раздела.

Таким способом предотвращается случайное стирание содержимого GPT диска.

Страница 6 Защитная MBR:

• код начального загрузчика (IPL1} не используется

• определён только один раздел с кодом системы EEh, покрывающий собой весь диск.o поле начала этого раздела в формате CHS задаёт цилиндр 0, головку 0 и сектор 2 (первый сектор соответствует самой MBR),поле начала в формате LBA — сектор 1o Поля конца соответствуют последнему сектору физического диска, а если его ёмкость превосходит предел, допускаемый традиционной таблицей разделов, то они содержат значения FFFFFFh для адреса в формате CHS и FFFFFFFFh для адреса в формате LBA.

Страница 7 Заголовок GPT - Primary GPT Header (LBA 1) Первой структурой данных GPT является её заголовок (GPT Header);

он размещается в первом секторе диска (LBA = 1).

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

Заголовок GPT указывает те логические блоки на диске, которые могут быть задействованы пользователем.

Он также указывает число и размер записей данных о разделах, составляющих таблицу разделов.

Зарезервировано 128 записей данных о разделах, каждая запись длиной 128 байт.

Таким образом возможно создание 128 разделов на диске.

Оглавление содержит GUID диска.

В нём записан свой собственный размер и местоположение (всегда блок LBA 1), а также размер и местоположение вторичного (запасного) оглавления и таблицы разделов, которые всегда размещаются в последних секторах диска.

Важно, что он также содержит контрольную сумму CRC32 для себя и для таблицы разделов.

Эти контрольные суммы проверяются процессами EFI при загрузке машины.

Из-за проверок контрольных сумм невозможным становится применение шестнадцатеричных редакторов для модификации содержимого GPT.

Всякое редактирование изменит контрольные суммы, после чего EFI перезапишет первичный GPT вторичным.

Если же оба GPT будут содержать неверные контрольные суммы, доступ к диску станет невозможным.

Страница 8 Обозначение Смещение Размер Описание Signature00h8 Сигнатура заголовка GPT (строка символов «EFI PART», 5452415020494645h) Revision08h4 Версия формата заголовка;

к номеру версии спецификации UEFI она отношения не имеет.

Сейчас используется первая версия заголовка, которой соответствует значение 00010000h HeaderSize0Ch4 Размер заголовка GPT в байтах.

Он должен превосходить 92 и не должен превышать размер сектора HeaderCRC3210h4 Контрольная сумма заголовка GPT размером HeaderSize байтов.

При подсчёте контрольной суммы начальное значение этого поля принимается равным нулю Reserved14h4 Зарезервированное поле;

должно содержать нуль MyLBA18h8 LBA этой копии заголовка AlternateLBA20h8 LBA другой копии заголовка FirstUsableLBA28h8 LBA первого блока, с которого могут начинаться разделы этого диска LastUsableLBA30h8 LBA последнего блока, после которого на диске не может быть разделов DiskGUID38h16 Уникальный идентификатор (GUID) этого диска PartitionEntryLBA48h8 LBA начала массива разделов диска NumberOfPartitionEntries50h4 Количество записей в массиве разделов диска SizeOfPartitionEntry54h4 Размер каждой записи массива разделов;

должен быть кратен 8 PartitionEntryArrayCRC3258h4 Контрольная сумма масива разделов.

Подсчёт суммы начинается с начала блока, адрес которого указан полем PartitionEntryLBA, и охватывает NumberOfPartitionEntries * SizeOfPartitionEntry байт, то есть весь массив разделов Reserved 5Сh Размер сектора - 5Сh Резервная область заголовка, должна содержать нули Формат заголовка GPT Страница 9 Заголовок GPT Страница 10 Массив разделов - Записи данных о разделах (LBA 2-33 = 32 сектора) Массив разделов начинается непосредственно за блоком заголовка GPT, то есть со второго блока диска (LBA 2).

Массив разделов состоит из записей одинакового формата, каждая из которых описывает один раздел диска.

32 сектора * 4 записи в каждом = 128 записей 128 записей данных о разделах, каждая запись длиной 128 байт.

Таким образом возможно создание 128 разделов на диске.

Первые 16 байт определяют GUID типа раздела.

Следующие 16 байт содержат GUID, уникальный для данного конкретного раздела.

Страница 11 Обозначение Смещение Размер Описание PartitionTypeGUID0h16 GUID типа данного раздела.

Определяет файловую систему, используемую для хранения данных в этом разделе UniquePartitionGUID10h16 GUID раздела.

Является уникальным идентификатором раздела и создаётся каждый раз, когда создаётся раздел StartingLBA20h8 LBA первого блока данного раздела на диске EndingLBA28h8 LBA последнего блока данного раздела на диске Attributes30h8 Атрибуты раздела PartitionName38h72 Строка в кодировке Unicode, содержащая имя данного раздела Reserved80h размер записи -80h Неиспользуемая часть записи массива разделов Формат записи в массиве разделов Страница 12 Ассоц.

платф.

Тип раздела Глобально уникальный идентификатор (GUID) (Нет) Неиспользуемая запись данных 00000000-0000-0000-0000-000000000000 Схема разделов MBR 024DEE41-33E7-11D3-9D69-0008C781F39F Системный раздел EFI C12A7328-F81F-11D2-BA4B-00A0C93EC93B Windows Резервный раздел Microsoft E3C9E316-0B5C-4DB8-817D-F92DF00215AE Раздел основных данных EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 Менеджер логических томов, раздел мета-данных 5808C8AA-7E8F-42E0-85D2-E1E90434CFB3 Менеджер логических томов, раздел данных AF9B60A0-1431-4F62-BC68-3311714A69AD HP-UX Раздел данных 75894C1E-3AEB-11D3-B7C1-7B03A0000000 Раздел Сервиса E2A1E728-32E3-11D6-A682-7B03A0000000 Linux Раздел данных EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 RAID раздел A19D880F-05FC-4D3B-A006-743F0F84911E Своп-раздел 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F Раздел Менеджера логических томов (LVM) E6D6D379-F507-44C2-A23C-238F2A3DF928 Зарезервировано 8DA63339-0007-60C0-C436-083AC8230908 Идентификаторы (GUID) различных типов разделов Страница 13 Бит Описание0 Признак необходимости раздела для функционирования машины.

Установкой этого бита владелец/создатель раздела указывает, что без него компьютер может оказаться неработоспособным.

В частности, ОС может отказаться загружаться или даже устанавливаться, если этого раздела нет.

Удалять или модифицировать такой раздел может только программное обеспечение, точно знающее его назначение и функции, все остальные программы, встретив такой раздел в GPT, не должны каким-либо образом менять его1 Когда этот бит установлен, BIOS не должна создавать для этого раздела устройство EFI_BLOCK_IO_PROTOCOL.

Подробно это описано в спецификации UEFI 2–47 Зарезервировано для нужд UEFI;

должны быть равны нулю 48–63 Используются для нужд разработчиков файловых систем.

При изменении значений разрядов 0–47 значения этих разрядов должны сохраняться, они изменяются только программным обеспечением соответствующей файловой системы Каждый раздел имеет поле атрибутов длиной 64 бита.

Страница 14 Раздел средств среды восстановления Windows DE94BBA4-06D1-4D40-A16A-BFD50179D6AC Cистемный EFI-раздел C12A7328-F81F-11D2-BA4B- 00A0C93EC93B Резервный раздел Microsoft E3C9E316-0B5C-4DB8-817D- F92DF00215AE Раздел основных данных EBD0A0A2-B9E5-4433-87C0- 68B6B72699C7 Страница 15 Порядок записи байтов в записях GUID является little-endian (порядок от младшего к старшему или «остроконечный») К примеру, GUID системного раздела EFI записан как: C12A7328-F81F-11D2-BA4B-00A0C93EC93B
English     Русский Правила