Администрирование FreeBSD, Linux, ... GUID Partition Table (GPT) Sun, November 17 2019  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

GUID Partition Table (GPT) Печать
Добавил(а) microsin   

Таблица разделов GUID (GPT) это стандартная схема разметки физического устройства хранения данных для компьютера, такого как жесткий диск (HDD) или диск на основе FLASH-памяти (solid-state drive, SSD). В этой схеме используются универсальные, уникальные идентификаторы, также известные как globally unique identifier (GUID). Несмотря на то, что GPT является частью нового стандарта для firmware материнских плат Unified Extensible Firmware Interface (UEFI), который призван заменить старый PC BIOS, GPT все равно используется в некоторых системах со старой BIOS, потому что существуют ограничения старой системы таблицы разделов master boot record (MBR), которая основана на 32-битной логической адресации (logical block addressing, LBA) традиционных секторов диска по 512 байт (перевод статьи Википедии [1]).

Все современные операционные системы персонального компьютера поддерживают GPT. Некоторые, включая macOS и Microsoft Windows на архитектуре x86, поддерживают загрузку с разделов GPT только когда в системе присутствует EFI, однако FreeBSD и большинство дистрибутивов Linux могут загружаться из разделов GPT на системах как с традиционными, старыми BIOS, так и с EFI.

Система формирования разделов диска на основе Master Boot Record (MBR), широко используемая в начале 1980-х годов начиная с MS-DOS, накладывает ограничения на размер диска при использовании современного оборудования. Главная проблема - ограниченное максимальное количество секторов диска при кодировании их номеров 32-битным адресом блока. Для жестких дисков, у которых сектора по 512 байт, таблица MBR позволяет отформатировать диск размером не более 2 терабайта TiB (232 x 512 байт).

В конце 1990-х, компания Intel разработала новый формат таблицы разделов GPT как часть того, что в конечном счете стало стандартом Unified Extensible Firmware Interface (UEFI). В 2010 году GPT сформировала подмножество спецификации UEFI. GPT использует 64 бита для логического адреса блока, что позволяет иметь на диске 264 секторов. Для дисков с секторами по 512 байт, максимальный 9.4 зетабайт ZB (9.4 x 1024 байт), или 8 ZiB (264 секторов, каждый по 29 байт).

Также, как и современные MBR, GPT использует логическую адресацию блоков (LBA) вместо ранней, ушедшей в прошлое системы адресации на основе номеров цилиндров, головки и сектора (cylinder-head-sector, CHS). Protective MBR сохраняется в LBA 0, заголовок GPT в LBA 1, и в заголовке GPT есть указатель на таблицу разделов (Partition Entry Array), обычно находящуюся начиная с LBA 2. Каждая запись в Partition Entry Array имеет размер 128 байт. Спецификация UEFI предусматривает выделение под Partition Entry Array как минимум 16384 байт, независимо от размера сектора. Таким образом, если на диске сектора имеют размер 512 байт, сектор 34 будет первым сектором, который можно использовать непосредственно под раздел диска.

Производители жестких дисков начали производить свои новые изделия с секторами по 4096 байт. Первые такие диски продолжали представляться для операционной системы как диски с 512-байтными физическими секторами. Могло произойти ухудшение производительности, когда физические границы 4-KiB сектора диска не совпадают с логическими блоками 4 KiB, страницами кластеров и страницами виртуальной памяти, что повсеместно используется в операционных и файловых системах. Это в частности создавало проблему на операциях записи, когда привод был вынужден выполнять две операции read-modify-write (чтение, модификация, запись), чтобы обработать одну не выровненную операцию записи 4 KiB.

[Варианты MBR, используемые с GPT]

Protective MBR (LBA 0). Для ограниченной обратной совместимости пространство традиционной MBR все еще резервировалось спецификацией GPT, однако это теперь используется способом, который предотвращает неправильное определение диска старыми утилитами, рассчитанными на традиционную MBR, и уменьшает вероятность ошибочной перезаписи дисков GPT. Это называется как protective MBR.

Тип одного раздела EEh [2], обозначающий весь диск GPT (здесь "весь" на самом деле подразумевает то, как этот диск может быть представлен в MBR) показывает раздел GPT. Операционные системы и утилиты, которые не могут читать диски GPT, обычно распознают диск как содержащий один раздел неизвестного типа и без свободного места, и в результате отказываются модифицировать диск, если пользователь явно не разрешит и не подтвердит удаление этого раздела. Такой подход минимизирует случайные уничтожения данных. Кроме того, осведомленные о GPT операционные системы могут проверить protective MBR, и если вложенный тип раздела не EEh, или если существует несколько разделов на целевом диске, то операционная система может отказаться от манипулирования таблицей разделов.

Хотя MBR и protective MBR были определены в расчете 512 байт на сектор, на различных носителях реальный размер сектора может быть больше (на магнитооптических дисках и жестких дисках с Advanced Format [3]).

Если реальный размер диска превышает максимальный размер раздела, представленный традиционными 32-битными записями LBA в MBR, то зарегистрированный размер этого раздела обрезается на максимуме, игнорируя таким образом остальную часть диска. Это в результате дает максимальный размер диска 2 TiB в предположении, что в каждом секторе 512 байт (см. [3]). Это могло бы предоставить 16 TiB при размере сектора 4 KiB, но поскольку многие устаревшие операционные системы и инструменты жестко заточены на размер сектора 512 байт, или ограничены 32-разрядными вычислениями, превышение предела 2 TiB могло вызывать проблемы совместимости.

Hybrid MBR (LBA 0 + GPT). В операционных системах, которые поддерживают загрузку на основе GPT через службы BIOS, отличающиеся от EFI, первый сектор все еще используется для сохранения кода загрузчика (bootloader) первой стадии, однако модифицированный для распознавания разделов GPT. Загрузчик в MBR не должен подразумевать размер сектора 512 байт.

Заголовок таблицы разделов (LBA 1). В таблице ниже приведен формат заголовка GPT.

Таблица 1. Формат заголовка GPT.

Смещение Длина (байт) Содержимое
0 (0x00) 8 Сигнатура ("EFI PART", 0x45 0x46 0x49 0x20 0x50 0x41 0x52 0x54 или 0x5452415020494645ULL(1) на машинах little-endian).
8 (0x08) 4 Ревизия. Для GPT версии 1.0, по крайней мере при UEFI версии 2.7 (май 2017), значение будет 0x00 0x00 0x01 0x00.
12 (0x0C) 4 Размер заголовка в байтах, порядок байт little-endian (обычно десятичное 92, или 0x5C).
16 (0x10) 4 CRC32/zlib заголовка (смещение +0 до размера заголовка), порядок байт little-endian. При вычислении CRC это поле обнуляется.
20 (0x14) 4 Зарезервировано, здесь должны быть нули.
24 (0x18) 8 Текущий LBA (место копии этого заголовка).
32 (0x20) 8 Backup LBA (место еще одной копии заголовка).
40 (0x28) 8 LBA первого блока, который можно использовать для разделов (последний LBA primary таблицы разделов + 1).
48 (0x30) 8 LBA последнего блока, который можно использовать (первый LBA secondary таблицы разделов - 1).
56 (0x38) 16 GUID диска в mixed endian (в операционных системах UNIX также называется как UUID).
72 (0x48) 8 Начальный LBA массива элементов раздела (всегда 2 в primary копии).
80 (0x50) 4 Количество элементов раздела в массиве.
84 (0x54) 4 Размер одного элемента раздела (обычно 128, или 0x80)/
88 (0x58) 4 CRC32/zlib массива элементов раздела, порядок байт little-endian.
92 (0x5C) * Зарезервировано; должны быть нули до конца блока (420 байт для сектора размером 512 байт, но может быть больше, если сектор большего размера).

Примечание (1): Добавление суффикса ULL обозначает тип константы как unsigned long long int.

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

Элементы раздела (LBA 2 - 23). После заголовка идет Partition Entry Array, где описываются разделы, и здесь каждая запись занимает минимум 128 байт. Начальное расположение массива на диске и размер каждой записи даются в заголовке GPT. Первые 16 байт каждой записи обозначают глобальный уникальный идентификатор (GUID) типа раздела. Например, GUID для системного раздела EFI будет C12A7328-F81F-11D2-BA4B-00A0C93EC93B (см. таблицу 9 ниже). Следующие 16 байт это GUID, уникальный для раздела. Затем идут начальный и конечный 64-битные адреса LBA, атрибуты раздела и затем символьное имя раздела (36 символов максимум) в кодировке Unicode. Сущность и цель идентификаторов GUID, как это определено в RFC4122[9] - систему уникальной идентификации типов раздела без необходимости центрального реестра.

Таблица 2. Формат элемента раздела GPT.

Смещение Длина (байт) Содержимое
0 (0x00) 16 GUID типа раздела (mixed endian).
16 (0x10) 16 Уникальный GUID раздела (mixed endian).
32 (0x20) 8 Первый LBA (little endian).
40 (0x28) 8 Последний LBA (little endian, включительно, обычно нечетное значение).
48 (0x30) 8 Флаги атрибутов (например, бит 60 обозначает read-only).
56 (0x38) 72 Символы имени раздела (36 символов в кодировке UTF-16LE).

64-разрядные атрибуты таблицы разделов совместно используются 48-разрядными общими атрибутами для всех типов разделов и 16-битными атрибутами, зависящими от типа раздела:

Таблица 3. Атрибуты раздела.

Бит Содержимое
0 Требуется для платформы (нужен, чтобы правильно работал компьютер, например для раздела OEM утилиты формирования разделов диска должны сохранить раздел как есть).
1 EFI firmware должно игнорировать содержимое этого раздела и не пытаться считывать с него данные.
2 Загружаемый под управлением старого BIOS - эквивалент флагу active (обычно установленному биту 7) при смещении +0 в элементах таблицы разделов MBR).
3 - 47 Зарезервировано для использования в будущем.
48 - 63 Определяется и используется в зависимости от определенного типа раздела.

Microsoft определяет атрибуты, зависящие от типа, для базовых разделов данных следующим образом:

Таблица 4. Атрибуты раздела базового типа.

Бит Содержимое
60 Read-only (раздел только для чтения).
61 Теневая копия (другого раздела).
62 Скрытый раздел.
63 Нет буквы диска (например, не выполнять автоматическое монтирование).

Google определяет атрибуты, зависящие от типа, для ядра Chrome OS следующим образом:

Таблица 5. Атрибуты раздела Chrome OS kernel.

Бит Содержимое
48 - 51 Приоритет (15: самый высокий, 1: самый низкий, 0: не загружаемый).
52 - 55 Оставшиеся попытки.
56 Флаг успешной загрузки.

[GPT в операционных системах]

Ниже в таблицах показана поддержка GPT различными операционными системами.

Таблица 6. Поддержка GPT на UNIX и других операционных системах стиля and Unix.

OS Версия или редакция Платформа R/W Boot Примечание
FreeBSD Начиная с 7.0 IA-32, x86-64, ARM Да Да В конфигурации hybrid могут использоваться идентификаторы как GPT, так и MBR раздела.
Linux Большинство x86 дистрибутивов Fedora 8+ и Ubuntu 8.04+ IA-32, x86-64 Да Да GPT поддерживают новые утилиты, такие как gdisk, GNU Parted, util-linux v2.23+ fdisk, SYSLINUX, GRUB 0.96 (пропатченный) и GRUB 2.
macOS Начиная с 10.4.0 (некоторые функции были запущены начиная с 10.4.6) IA-32, x86-64, PowerPC Да Да С разделов GPT могут загружаться только компьютеры Intel Macintosh.
MidnightBSD Начиная с 0.4-CURRENT IA-32, x86-64 Да Требуется BIOS В конфигурации hybrid могут использоваться идентификаторы как GPT, так и MBR раздела.
NetBSD Начиная с 6.0 x86, x86-64 Да В разработке Некоторые пользователи описали свою процедуру инсталляции с EFI, но пока не было официального подтверждения. Установка с UEFI, выполняемая наполовину вручную, работает на NetBSD 8.0 (-current).
OpenBSD Начиная с 5.9 x86_64 Да Требуется UEFI См. OpenBSD 5.9 site:openbsd.org.
Solaris Начиная с Solaris 10 IA-32, x86-64, SPARC Да Да См. Oracle Solaris site:oracle.com.
HP-UX Начиная с 11.20 IA-64 Да Да См. HP-UX GPT site:hp.com.

Таблица 7. Поддержка GPT на 32-битных версиях Windows (платформа IA-32).

OS Дата релиза R/W Boot Примечание
Windows XP 2001-10-25 Нет Нет  
Windows Server 2003 2003-04-24  
Windows Server 2003 SP1 2005-03-30 Да В конфигурации hybrid раздел MBR имеет приоритет.
Windows Vista 2006-07-22
Windows Server 2008 2008-02-27
Windows 7 2009-10-22
Windows 8 2012-08-01 Требуется UEFI
Windows 8.1 2013-08-27
Windows 10 2015-07-29

Windows 7 и более ранние версии Windows не поддерживают UEFI на 32-битных платформах, поэтому они не поддерживают загрузку с GPT-разделов.

Таблица 8. Поддержка GPT на 64-битных версиях Windows.

OS Дата релиза Платф. R/W Boot Примечание
Windows XP Pro x64 Edition, Windows Server 2003 2005-04-25 x64 Да Нет В конфигурации hybrid MBR раздел MBR имеет приоритет.
Windows Server 2003 2005-04-24 IA-64 Да
Windows Vista 2006-07-22 x64 Требуется UEFI В конфигурации hybrid раздел MBR имеет приоритет.
Windows Server 2008 2008-02-27 x64
IA-64 Да
Windows 7 2009-10-22 x64 Требуется UEFI
Windows Server 2008 R2 2009-10-22 IA-64 Да
Windows 8, Windows Server 2012 2012-08-01 x64 Требуется UEFI
Windows 8.1 2013-08-27 x64
Windows 10 2015-07-29 x64
Windows Server 2016 2016-10-12 x64

Таблица 9. Значения GUID типов раздела.

OS Тип раздела Globally unique identifier (GUID)
- Не используемый элемент 00000000-0000-0000-0000-000000000000
Схема раздела MBR 024DEE41-33E7-11D3-9D69-0008C781F39F
Раздел EFI System C12A7328-F81F-11D2-BA4B-00A0C93EC93B
Раздел BIOS boot 21686148-6449-6E6F-744E-656564454649
Раздел Intel Fast Flash (iFFS, для технологии Intel Rapid Start) D3BFE2DE-3DAF-11DF-BA40-E3A556D89593
Раздел Sony boot F4019732-066E-4E12-8273-346C5641494F
Раздел Lenovo boot BFBFAFE7-A34F-448A-9A5B-6213EB736C22
Windows Зарезервированный раздел (Microsoft Reserved Partition, MSR) E3C9E316-0B5C-4DB8-817D-F92DF00215AE
Базовый раздел данных EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
Раздел метаданных Logical Disk Manager (LDM) 5808C8AA-7E8F-42E0-85D2-E1E90434CFB3
Раздел данных Logical Disk Manager AF9B60A0-1431-4F62-BC68-3311714A69AD
Windows Recovery Environment DE94BBA4-06D1-4D40-A16A-BFD50179D6AC
Раздел IBM General Parallel File System (GPFS) 37AFFC90-EF7D-4E96-91C3-2D7AE055B174
Раздел Storage Spaces E75CAF8F-F680-4CEE-AFA3-B001E56EFC2D
HP-UX Раздел данных 75894C1E-3AEB-11D3-B7C1-7B03A0000000
Сервисный раздел (Service Partition) E2A1E728-32E3-11D6-A682-7B03A0000000
Linux Данные файловой системы Linux 0FC63DAF-8483-4772-8E79-3D69D8477DE4
Раздел RAID A19D880F-05FC-4D3B-A006-743F0F84911E
Корневой раздел (Root Partition) x86 44479540-F297-41B2-9AF7-D131D5F0458A
Корневой раздел (Root Partition) x86-64 4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709
Корневой раздел (Root Partition) 32-битного ARM 69DAD710-2CE4-4E3C-B16C-21A1D49ABED3
Корневой раздел (Root Partition) 64-битного ARM / AArch64 B921B045-1DF0-41C3-AF44-4C6F280D3FAE
Раздел подкачки (Swap Partition) 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F
Раздел Logical Volume Manager (LVM) E6D6D379-F507-44C2-A23C-238F2A3DF928
Раздел домашних каталогов пользователей (/home) 933AC7E1-2EB4-4F13-B844-0E14E2AEF915
Раздел /srv (данные сервера) 3B8F8425-20E0-4F3B-907F-1A25A76F98E8
Раздел Plain dm-crypt 7FFEC5C9-2D00-49B7-8941-3EA10A5586B7
Раздел LUKS CA7D7CCB-63ED-4C53-861C-1742536059CC
Зарезервировано 8DA63339-0007-60C0-C436-083AC8230908
FreeBSD Загрузочный раздел (Boot Partition) 83BD6B9D-7F41-11DC-BE0B-001560B84F0F
Раздел данных (Data Partition) 516E7CB4-6ECF-11D6-8FF8-00022D09712B
Раздел подкачки (Swap Partition) 516E7CB5-6ECF-11D6-8FF8-00022D09712B
Раздел Unix File System (UFS) 516E7CB6-6ECF-11D6-8FF8-00022D09712B
Раздел Vinum volume manager 516E7CB8-6ECF-11D6-8FF8-00022D09712B
Раздел ZFS 516E7CBA-6ECF-11D6-8FF8-00022D09712B
macOS, Darwin Раздел Hierarchical File System Plus (HFS+) 48465300-0000-11AA-AA11-00306543ECAC
Apple APFS 7C3457EF-0000-11AA-AA11-00306543ECAC
Apple UFS container 55465300-0000-11AA-AA11-00306543ECAC
ZFS 6A898CC3-1DD2-11B2-99A6-080020736631
Раздел Apple RAID 52414944-0000-11AA-AA11-00306543ECAC
Отключенный раздел Apple RAID 52414944-5F4F-11AA-AA11-00306543ECAC
Раздел Apple Boot (Recovery HD) 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
SoftRAID_Status B6FA30DA-92D2-4A9A-96F1-871EC6486200
SoftRAID_Scratch 2E313465-19B9-463F-8126-8A7993773801
SoftRAID_Volume FA709C7E-65B1-4593-BFD5-E71D61DE9B02
SoftRAID_Cache BBBA6DF5-F46F-4A89-8F59-8765B2727503
Solaris, illumos Загрузочный раздел (Boot Partition) 6A82CB45-1DD2-11B2-99A6-080020736631
Корневой раздел (Root Partition) 6A85CF4D-1DD2-11B2-99A6-080020736631
Раздел подкачки (Swap Partition) 6A87C46F-1DD2-11B2-99A6-080020736631
Раздел бэкапа (Backup Partition) 6A8B642B-1DD2-11B2-99A6-080020736631
Раздел /usr 6A898CC3-1DD2-11B2-99A6-080020736631
Раздел /var 6A8EF2E9-1DD2-11B2-99A6-080020736631
Раздел /home 6A90BA39-1DD2-11B2-99A6-080020736631
Альтернативный сектор 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 Раздел подкачки (Swap Partition) 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 Ядро Chrome OS FE3A2A5D-4F32-41A7-B725-ACCC3285A309
Корневая файловая система (rootfs) 3CB8E202-3B7E-47DD-8A3C-7FF2A13CFCEC
Зарезервировано для будущего использования 2E0A753D-9E48-43B0-8337-B15192CB1B5E
Container Linux CoreOS Раздел /usr (coreos-usr) 5DFBF5F4-2848-4BAC-AA5E-0D9A20B745A6
Корневая файловая система с возможностью изменения размера (Resizable rootfs, coreos-resize) 3884DD41-8582-4404-B9A8-E9B84F2DF50E
Кастомизации OEM (coreos-reserved) C95DC21A-DF0E-4340-8D7B-26CBFA9A03E0
Корневая файловая система на RAID (coreos-root-raid) BE9067B9-EA49-4F15-B4F6-F36F8C9E1818
Haiku Haiku BFS 42465331-3BA3-10F1-802A-4861696B7521
MidnightBSD Загрузочный раздел (Boot Partition) 85D5E45E-237C-11E1-B4B3-E89A8F7FC3A7
Раздел данных (Data Partition) 85D5E45A-237C-11E1-B4B3-E89A8F7FC3A7
Раздел подкачки (Swap Partition) 85D5E45B-237C-11E1-B4B3-E89A8F7FC3A7
Раздел Unix File System (UFS) 0394EF8B-237E-11E1-B4B3-E89A8F7FC3A7
Раздел Vinum volume manager 85D5E45C-237C-11E1-B4B3-E89A8F7FC3A7
Раздел ZFS 85D5E45D-237C-11E1-B4B3-E89A8F7FC3A7
Ceph   Журнал (Journal) 45B0969E-9B03-4F30-B4C6-B4B80CEFF106
dm-crypt journal 45B0969E-9B03-4F30-B4C6-5EC00CEFF106
OSD 4FBD7E29-9D25-41B8-AFD0-062C0CEFF05D
dm-crypt OSD 4FBD7E29-9D25-41B8-AFD0-5EC00CEFF05D
Диск в процессе создания 89C57F98-2FE5-4DC0-89C1-F3AD0CEFF2BE
dm-crypt диск в процессе создания 89C57F98-2FE5-4DC0-89C1-5EC00CEFF2BE
Block CAFECAFE-9B03-4F30-B4C6-B4B80CEFF106
Block DB 30CD0809-C2B2-499C-8879-2D6B78529876
Лог с упреждающей записью блока 5CE17FCE-4087-4169-B7FF-056CC58473F9
Lockbox для ключей dm-crypt FB3AABF9-D25F-47CC-BF5E-721D1816496B
Multipath OSD 4FBD7E29-8AE0-4982-BF9D-5A8D867AF560
Multipath journal 45B0969E-8AE0-4982-BF9D-5A8D867AF560
Multipath block CAFECAFE-8AE0-4982-BF9D-5A8D867AF560
7F4A666A-16F3-47A2-8445-152EF4D03F6C
Multipath block DB EC6D6385-E346-45DC-BE91-DA2A7C8B3261
Лог с упреждающей записью multipath block 01B41E1B-002A-453C-9F17-88793989FF8F
dm-crypt block CAFECAFE-9B03-4F30-B4C6-5EC00CEFF106
dm-crypt block DB 93B0052D-02D9-4D8A-A43B-33A3EE4DFBC3
Лог с упреждающей записью dm-crypt block 306E8683-4FE2-4330-B7C0-00A917C16966
dm-crypt LUKS journal 45B0969E-9B03-4F30-B4C6-35865CEFF106
dm-crypt LUKS block CAFECAFE-9B03-4F30-B4C6-35865CEFF106
dm-crypt LUKS block DB 166418DA-C469-4022-ADF4-B30AFD37F176
Лог с упреждающей записью dm-crypt LUKS block 86A32090-3647-40B9-BBBD-38D8C573AA86
dm-crypt LUKS OSD 4FBD7E29-9D25-41B8-AFD0-35865CEFF05D
OpenBSD Раздел данных 824CC7A0-36A8-11E3-890A-952519AD3F61
QNX Файловая система, устойчивая к пропаданию питания (QNX6) CEF5A9AD-73BC-4601-89F3-CDEEEEE321A1
Plan 9 Раздел Plan 9 C91818F9-8025-47AF-89D2-F030D7000C2C
VMware ESX vmkcore (раздел coredump) 9D275380-40AD-11DB-BF97-000C2911D1B8
Раздел файловой системы VMFS AA31E02A-400F-11DB-9590-000C2911D1B8
Зарезервировано VMware 9198EFFC-31C0-11DB-8F78-000C2911D1B8
Android-IA Bootloader 2568845D-2332-4675-BC39-8FA5A4748D15
Bootloader2 114EAFFE-1552-4022-B26E-9B053604CF84
Boot 49A4D17F-93A3-45C1-A0DE-F50B2EBE2599
Recovery 4177C722-9E92-4AAB-8644-43502BFD5506
Misc EF32A33B-A409-486C-9141-9FFB711F6266
Metadata 20AC26BE-20B7-11E3-84C5-6CFDB94711E9
System 38F428E6-D326-425D-9140-6E0EA133647C
Cache A893EF21-E428-470A-9E55-0668FD91A2D9
Data DC76DDA9-5AC1-491C-AF42-A82591580C0D
Persistent EBC597D0-2053-4B15-8B64-E0AAC75F4DB1
Vendor C5A0AEEC-13EA-11E5-A1B1-001E67CA0C3C
Config BD59408B-4514-490D-BF12-9878D963F378
Factory 8F68CC74-C5E5-48DA-BE91-A0C8C15E9C80
Factory (alt) 9FDAA6EF-4B3F-40D2-BA8D-BFF16BFB887B
Fastboot / Tertiary 767941D0-2085-11E3-AD3B-6CFDB94711E9
OEM AC6D7924-EB71-4DF8-B48D-E267B27148FF
Android 6.0+ ARM Android Meta 19A710A2-B3CA-11E4-B026-10604B889DCF
Android EXT 193D1EA4-B3CA-11E4-B075-10604B889DCF
Open Network Install Environment (ONIE) Boot 7412F7D5-A156-4B13-81DC-867174929325
Config D4E6E2CD-4469-46F3-B5CB-1BFF57AFC149
PowerPC PReP boot 9E1A2D38-C612-4316-AA26-8B49521E5A8B
Операционные системы freedesktop.org (Linux и т. п.) Shared boot loader configuration BC13C2FF-59E6-4262-A352-B275FD6F7172
Atari TOS Базовый раздел данных (GEM, BGM, F32) 734E5AFE-F61A-11E6-BC64-92361F002671

[Linux: переход с MBR на GPT]

MS-DOS Master Boot Record. MBR должна была находиться в первых 512 байтах диска, и здесь содержится загрузчик и таблица разделов. Код загрузчика занимает 446 байт, таблица разделов использует 64 байта, и последние 2 байта хранят сигнатуру загрузки (boot signature). MBR ограничена четырьмя главными разделами (primary partitions), один primary-раздел может содержать расширенный раздел (extended partition), который может быть поделен на логические разделы. Linux поддерживает (теоретически) неограниченное количество логических разделов. Ранние версии Linux ограничивались 63-мя разделами IDE и 15-ю разделами SCSI, потому что ядро было ограничено общим количеством устройств, которое оно могло выделить. Сейчас менеджер устройств udev выделяет номера устройств динамически, поэтому такого ограничения уже нет.

Маленькая и не гибкая MBR просуществовала на Linux довольно долго благодаря хитрым хакам, позволяющим обходить ограничения MBR. Система логической адресации блоков LBA, сменившая старую систему адресации на основе цилиндров, головок и секторов CHS позволила поддерживать диски до 2 терабайт при размере сектора 512 байт. Более продвинутые модификации Linux позволяли использовать сектора по 4096 байт, что давало максимальный размер диска 16 терабайт.

GUID Partition Table (GPT). Современный Linux не нуждается в EFI BIOS для загрузки с раздела GPT, так как может использовать GPT даже на системах со старым BIOS. Операционные системы Mac OS X и Windows не обладают такой гибкостью. У GPT не существует разделения на primary-раздел и логические разделы, здесь диск просто разбивается на отдельные разделы.

Linux GPT partitions fig1

Когда Вы форматируете жесткий диск и хотите использовать GPT, просто выберите для этого в выпадающем списке опцию gpt.

Linux GPT disk format fig2

У GPT есть несколько важных преимуществ перед MBR: 

• 64-битная адресация позволяет иметь на диске 264 секторов, что дает размер диска 8 ZiB при 512-байтных блоках. Дисков такого размера физически пока что не существует.
• По умолчанию максимальное количество разделов может быть 128. Разделов может быть и больше, если Ваша операционная система это поддерживает.
• GPT устойчива к отказам благодаря копиям таблицы разделов в первом и последнем секторах диска.
• GPT проверяет свою целостность с помощью CRC (CRC), и использует уникальные идентификаторы для дисков и разделов.

Уникальные идентификаторы. Идентификаторы GPT GUID (Globally Unique IDentifiers) и идентификаторы Linux UUID (Universally Unique IDentifiers) не одно и то же, хотя они служат одной и той же полезной цели: дают уникальные имена блочным устройствам. Linux UUID это функция файловых систем, и они создаются, когда создается файловая система. Чтобы посмотреть Linux UUID, выполните команду blkid:

$ sudo blkid 
/dev/sda1: LABEL="storage" UUID="60e97193-e9b2-495f-8db1
  -651f3a87d455" TYPE="ext4" 
/dev/sda2: LABEL="oldhome" UUID="e6494a9b-5fb6-4c35-ad4c-
   86e223040a70" TYPE="ext4"

В этом примере также показаны метки файловой системы, это произвольные имена, которые пользователь может дать своим блоковым устройствам. Мы можем использовать UUID в /etc/fstab примерно так:

# storage, /dev/sda1 data storage
UUID=60e97193-e9b2-495f-8db1-651f3a87d455 /home/carla/storage ext4 user,defaults 0 0

Или можем использовать метку устройства:

LABEL=storage /home/carla/storage ext4 user,defaults 0

Чтобы получить идентификаторы GUID, нужно использовать команду gdisk:

# gdisk /dev/sdc
GPT fdisk (gdisk) version 0.8.1
Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help):

Этот вывод сразу дал полезную информацию: диск использует GPT, где MBR применена в защищенном режиме (protective MBR). Protected MBR позволяет загружаться на компьютере со старым BIOS, и защищает GPT от утилит, которые не знакомы с GPT (таких как fdisk) и от операционных систем, которые не могут работать с GPT. Вместо GPT-диска они увидят MBR-диск с разделом неизвестного типа, на котором нет свободного места. Команда gdisk выдает подробную информацию о разделах на диске. Нажмите клавишу p, чтобы увидеть все разделы:

Command (? for help): p
Disk /dev/sdc: 3907029168 sectors, 1.8 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): 058D39EE-5D06-409F-AA0C-298A3E6CC302
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 3907029134
Partitions will be aligned on 2048-sector boundaries
Total free space is 819142765 sectors (390.6 GiB)
Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         1953791   953.0 MiB   0700  
   2         1953792        80078847   37.3 GiB    0700  
   3        80078848      2033203199   931.3 GiB   0700  
   4      2033203200      3009765375   465.7 GiB   0700  
   5      3009765376      3048826879   18.6 GiB    0700  
   6      3048826880      3087888383   18.6 GiB    8200

Обратите внимание, что показанный размер логического сектора составляет 512 байт. Новые большие диски могут использовать сектора по 4096 байт, и это именно такой диск. Что на самом деле происходит? Чтобы узнать размер физического сектора, можно запустить команду lsblk:

$ lsblk -t /dev/sdc
NAME   ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC ROTA SCHED RQ-SIZE
sdc            0   4096      0    4096     512    1 cfq       128
|--sdc1         0   4096      0    4096     512    1 cfq       128
|--sdc2         0   4096      0    4096     512    1 cfq       128
|--sdc3         0   4096      0    4096     512    1 cfq       128

Команда lsblk показала, что физические сектора имеют размер 4096 байт. Это магическое число на больших HDD используется по нескольким причинам: оно позволяет более эффективно использовать пространство хранилища данных, потому что обычная страница памяти на x86 компьютерах составляет 4096 байт, и файловые системы ext3, ext4 по умолчанию используют кластеры размером 4KB. Но для обеспечения обратной совместимости (контроллеры диска, старое ПО и старые операционные системы) производители жестких дисков эмулируют сектора по 512 байт.

Вернемся обратно в gdisk и проверим один раздел. Нажмите i, и введите номер раздела. На старом Linux Mint 13 можно увидеть следующее:

Command (? for help): i
Partition number (1-6): 3
Partition GUID code: EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (Microsoft basic data)
Partition unique GUID: 8C208C30-4E8F-4096-ACF9-858959BABBAA
First sector: 80078848 (at 38.2 GiB)
Last sector: 2033203199 (at 969.5 GiB)
Partition size: 1953124352 sectors (931.3 GiB)
Attribute flags: 0000000000000000
Partition name: ''

Обратите внимание на Partition GUID code, он обозначен как "Microsoft basic data". На самом деле Microsoft не сможет прочитать этот раздел (он будет виден как не отформатированный), потому что раздел отформатирован в системе EXT4. Так раздел будет отображаться на старых версиях Linux до 2011 года, когда не существовали никакие GUID файловой системы Linux. Теперь GUID есть, и если Вы используете современный Linux, то вместо этого увидите правильный Linux GUID (0FC63DAF-8483-4772-8E79-3D69D8477DE4).

Уникальный Partition GUID это то, что Вы будете использовать в fstab, примерно так:

PARTUUID=8C208C30-4E8F-4096-ACF9-858959BABBAA /data ext4 user,defaults 0 0

[Ссылки]

1. GUID Partition Table site:wikipedia.org.
2. Partition type site:wikipedia.org.
3. Advanced Format site:wikipedia.org.
4. Using the New GUID Partition Table in Linux site:linux.com.

 

Добавить комментарий


Защитный код
Обновить

Top of Page