315.35K
Категория: ИнформатикаИнформатика

shema-razbieniya-zhestkogo-diska-na-osnove-gpt-guid-partition-table

1.

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

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 Тбайт их ёмкости.
Страница ▪ 2

3.

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

4.

Структура GPT
На рисунке приведена
диаграмма, поясняющая формат
GUID Partition Table.
Каждый логический блок (LBA)
имеет размер ровно 512 байт.
Отрицательные адреса
логических блоков говорят о том,
что их нумерация начинается с
конца тома (диска), причем
последний адресуемый блок
имеет адрес −1
GPT обеспечивает дублирование
— оглавление и таблица
разделов записаны как в начале,
так и в конце диска.
Страница ▪ 4

5.

Защитная (protective) MBR -(LBA 0)
Имеет формат, полностью соответствующий традиционной MBR. В защитной
MBR, однако, код начального загрузчика (IPL1} не используется, поскольку
загрузка с такого диска может выполняться только на компьютерах,
удовлетворяющих спецификации UEFI, и осуществляется не так, как на
компьютерах без поддержки UEFI.
Основная цель помещения MBR в начало диска = защитная.
MBR-ориентированные дисковые утилиты могут не распознать и даже
переписать GPT диски. Чтобы избежать этого, указывается наличие всего
одного раздела, охватывающего весь GPT диск. Системный идентификатор
(System ID) для этого раздела устанавливается в значение 0xEE,
указывающее, что применяется GPT. Вследствие этого EFI игнорирует MBR.
Некоторые 32-битные операционные системы, не приспособленные для
чтения дисков содержащих GPT, тем не менее распознают этот Системный
идентификатор и представляют том в качестве недоступного GPT диска.
Более старые ОС обычно представляют диск, как содержащий единственный
раздел неизвестного типа и без свободного места; как правило, они
отказываются модифицировать такой диск, пока пользователь явно не
потребует и не подтвердит удаление данного раздела. Таким способом
предотвращается случайное стирание содержимого GPT диска.
Страница ▪ 5

6.

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

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
будут содержать неверные контрольные суммы, доступ к диску станет
невозможным.
Страница ▪ 7

8.

Формат заголовка GPT
Обозначение
Смещение
Размер
Описание
Signature
00h
8
Сигнатура заголовка GPT (строка символов «EFI PART»,
5452415020494645h)
Revision
08h
4
Версия формата заголовка; к номеру версии спецификации UEFI
она отношения не имеет. Сейчас используется первая версия
заголовка, которой соответствует значение 00010000h
HeaderSize
0Ch
4
Размер заголовка GPT в байтах. Он должен превосходить 92 и не
должен превышать размер сектора
HeaderCRC32
10h
4
Контрольная сумма заголовка GPT размером HeaderSize байтов.
При подсчёте контрольной суммы начальное значение этого
поля принимается равным нулю
Reserved
14h
4
Зарезервированное поле; должно содержать нуль
MyLBA
18h
8
LBA этой копии заголовка
AlternateLBA
20h
8
LBA другой копии заголовка
FirstUsableLBA
28h
8
LBA первого блока, с которого могут начинаться разделы этого
диска
LastUsableLBA
30h
8
LBA последнего блока, после которого на диске не может быть
разделов
DiskGUID
38h
16
Уникальный идентификатор (GUID) этого диска
PartitionEntryLBA
48h
8
LBA начала массива разделов диска
NumberOfPartitionEntries
50h
4
Количество записей в массиве разделов диска
SizeOfPartitionEntry
54h
4
Размер каждой записи массива разделов; должен быть кратен 8
Контрольная сумма масива разделов. Подсчёт суммы начинается
с начала блока, адрес которого указан полем PartitionEntryLBA, и
охватывает NumberOfPartitionEntries * SizeOfPartitionEntry байт,
то есть весь массив разделов
PartitionEntryArrayCRC32
58h
4
Reserved
5Сh
Размер сектора - 5Сh
Страница ▪ 8
Резервная область заголовка, должна содержать нули

9.

Заголовок
GPT
Страница ▪ 9

10.

Массив разделов - Записи данных о разделах (LBA 2-33 = 32
сектора)
Массив разделов начинается непосредственно за блоком
заголовка GPT, то есть со второго блока диска (LBA 2).
Массив разделов состоит из записей одинакового формата,
каждая из которых описывает один раздел диска.
32 сектора * 4 записи в каждом = 128 записей
128 записей данных о разделах, каждая запись длиной 128 байт.
Таким образом возможно создание 128 разделов на диске.
Первые 16 байт определяют GUID типа раздела. Следующие 16
байт содержат GUID, уникальный для данного конкретного
раздела.
Страница ▪ 10

11.

Формат записи в массиве
разделов
Обозначение
Смещение Размер
PartitionTypeGUID
0h
16
UniquePartitionGUID
10h
16
StartingLBA
20h
8
EndingLBA
28h
8
Attributes
30h
8
PartitionName
38h
72
Reserved
Страница ▪ 11
80h
Описание
GUID типа данного раздела. Определяет
файловую систему, используемую для
хранения данных в этом разделе
GUID раздела. Является уникальным
идентификатором раздела и создаётся
каждый раз, когда создаётся раздел
LBA первого блока данного раздела на
диске
LBA последнего блока данного раздела
на диске
Атрибуты раздела
Строка в кодировке Unicode,
содержащая имя данного раздела
размер
Неиспользуемая часть записи массива
записи разделов
80h

12.

Идентификаторы (GUID) различных типов разделов
Ассоц. платф.
Тип раздела
Глобально уникальный идентификатор (GUID)
Неиспользуемая запись данных 00000000-0000-0000-0000-000000000000
(Нет)
Windows
HP-UX
Linux
Страница ▪ 12
Схема разделов MBR
024DEE41-33E7-11D3-9D69-0008C781F39F
Системный раздел EFI
C12A7328-F81F-11D2-BA4B-00A0C93EC93B
Резервный раздел Microsoft
E3C9E316-0B5C-4DB8-817D-F92DF00215AE
Раздел основных данных
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
Менеджер логических томов,
раздел мета-данных
5808C8AA-7E8F-42E0-85D2-E1E90434CFB3
Менеджер логических томов,
раздел данных
AF9B60A0-1431-4F62-BC68-3311714A69AD
Раздел данных
75894C1E-3AEB-11D3-B7C1-7B03A0000000
Раздел Сервиса
E2A1E728-32E3-11D6-A682-7B03A0000000
Раздел данных
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

13.

Каждый раздел имеет поле атрибутов длиной 64 бита.
Бит
0
1
2–47
48–63
Страница ▪ 13
Описание
Признак необходимости раздела для функционирования машины.
Установкой этого бита владелец/создатель раздела указывает,
что без него компьютер может оказаться неработоспособным. В
частности, ОС может отказаться загружаться или даже
устанавливаться, если этого раздела нет. Удалять или
модифицировать такой раздел может только программное
обеспечение, точно знающее его назначение и функции, все
остальные программы, встретив такой раздел в GPT, не должны
каким-либо образом менять его
Когда этот бит установлен, BIOS не должна создавать для этого
раздела устройство EFI_BLOCK_IO_PROTOCOL. Подробно это
описано в спецификации UEFI
Зарезервировано для нужд UEFI; должны быть равны нулю
Используются для нужд разработчиков файловых систем. При
изменении значений разрядов 0–47 значения этих разрядов
должны сохраняться, они изменяются только программным
обеспечением соответствующей файловой системы

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
Страница ▪ 14

15.

Порядок записи байтов в записях 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
Страница ▪ 15
English     Русский Правила