Есть 2 типа таблицы разделов:

  • MBR (Master Boot Record)
  • GPT (GUID Partition Table)

Если это не загрузочный диск, то для работы с ним годятся оба типа, но вот если загрузочный диск на GPT, то тут нужен UEFI BIOS для нормальной загрузки ОС. Если с MBR, то режим загрузки в BIOS должен быть выставлен как Legacy. Но всё идёт к тому что скоро режим Legacy не будет использоваться вовсе (на новых устройствах).

MBR

mbr

Довольно уже старая таблица разделов со многими ограничениями и недостатками которая впервые появилась ещё в 1982 году. Таблица разделов указывает на то как диски будут разбиваться в системе с BIOS.

MBR, загрузочный сектор на жестком диске, который хранит информацию, обеспечивающую правильную загрузку ОС, занимает первые 512 байт жесткого диска и также хранит таблицу разделов (partition table). Также указывает на активный раздел (active partition), благодаря чему грузится именно ОС на активном разделе жесткого диска.

4 основных раздела на жестком диске

MBR поддерживает создание только 4 основных разделов на жестком диске. Основной значит имеет возможность загрузки ОС с него. Если вы хотите больше 4 дисков, то вы должны создать 3 основных раздела (primary partitions), а остальные уже будут логическими (logical partitions). В Linux максимальное количество разделов достигает значения 15.

Информация об основных и расширенных разделах содержится в 64-байтах, расположенных в MBR. Каждая запись в таблице разделов (partition table) имеет длину 16 байтов, поэтому доступно не более четырех записей, т.е. разделов диска.

При этом все логические разделы должны быть в расширенном разделе (extended partition). Т.е. вы должны создать 4 раздел расширенным и на всё оставшееся место на диске. И уже внутри этого раздела создавать логические разделы (logical partitions). Вы конечно можете создать расширенным разделом и третий раздел, но логический раздел будет всё равно начинаться с цифры 5.

mbr

Максимальный размер разделов в 2ТБ на диске

Также еще одно плохое ограничение — это максимальный размер разделов в 2ТБ на диске. Т.е. не один раздел, а все вместе общим объёмом не больше 2ТБ.

На диске MBR (основная загрузочная запись) места, где хранятся размеры разделов, имеют длину всего 4 байта. Поскольку это шестнадцатеричное число, наибольшее значение, которое мы можем ввести, - это все буквы F. Таким образом, максимальное значение будет 4 294 967 295 в десятичном виде (FF FF FF FFh = 4294967295d). Этот максимальный размер раздела не в байтах, а в количестве секторов. В свою очередь каждый сектор имеет размер 512 байт мы получаем следующее 4294967295 секторов * 512 байт / сектор = 2199023255040 байт или 2 ТБ.

Если вы всё еще не поняли откуда взялась цифра 4 294 967 295, то это моя последняя попытка. В шестнадцатеричном представлении числа записываются как цифры и буквы. При этом максимальное число 16, как не сложно догадаться. Но так как отсчёт идёт с 0 то максимальное число 15. При этом числа с 0 до 9 записываются также в цифровом представлении, а вот с 10 до 15 уже начиная с буквы A до F. и максимальное значение может быть FFFFFFFF.

Теперь переводим FFFFFFFF шестнадцатеричное в десятичное. Для этого каждое F которое обозначает число 15 умножается на 16 в степени с 0 до 7. И после всё это суммируется.

F1 - 15 × 16^0 = 15
F2 - 15 × 16^1 = 240
F3 - 15 × 16^2 = 3 840
F4 - 15 × 16^3 = 61 440
F5 - 15 × 16^4 = 983 040
F6 - 15 × 16^5 = 15 728 640
F7 - 15 × 16^6 = 251 658 240
F8 - 15 × 16^7 = 4 026 531 840
15 + 240 + 3 840 + 61 440 + 983 040 + 15 728 640 + 251 658 240 + 4 026 531 840 = 4 294 967 295

FFFFFFFF = 4294967295

И еще один минус заключается в том, что MBR хранится без копии и если он вдруг испортиться, то вам придётся восстанавливать его. И вы уже не получите информацию о начале и конце ваших разделов и не загрузите ОС. Для Linux вы можете восстановить MBR с помощью test disk (но это не точно).

Master Boot Code

Master Boot Code выполняет следующие действия:

  1. Сканирует таблицу разделов на наличие активного раздела
  2. Находит начальный сектор активного раздела
  3. Загружает копию загрузочного сектора из активного раздела в память
  4. Передает управление исполняемому коду в загрузочном секторе

Если просто и в двух словах благодаря Master Boot Code у вас грузится ОС после BIOS.

GPT

mbr

Intel начал разрабатывать новый формат BIOS - UEFI, и благодаря этому появился новый формат таблицы разделов GPT.

Наличие бэкапа

Самое первое отличие — это то что таблица разделов дублируется в отличии от MBR, что даёт вам возможность продолжать работать если вы каким-то образом повредили запись, т.е. потеряли одну копию.

128 разделов на диск

Второй важный плюс — это то что тут вы уже можете создать столько разделов на диске сколько вам захочется в отличии от 4 в MBR. Но есть, но, некоторые ОС сами ограничивают количество разделов на диске, которые вы можете создавать. В Linux максимальное число 128, по крайней мере у RedHat.

Максимальный размер диска

Ну и еще тут нет этого дурацкого ограничения в 2ТБ, вы можете создать раздел размером около 9 млрд терабайт. Но опять-таки не все ОС вам дадут это сделать, например, Windows ограничивает размер в 256 терабайт, зависит от версии Windows.

Protective MBR

Также GPT в себе имеет и сектор с информацией о MBR - Protective MBR. Сделано это для обратной совместимости чтобы BIOS без UEFI тоже мог загружать систему с диска GPT (но не всегда это работает). Также это сделано для защиты от перезаписи сектора с GPT утилитами, которые работают с MBR.

GUID Partition Entry Array

Массив записей раздела (GUID Partition Entry Array) описывает разделы, используя минимальный размер 128 байт для каждого блока. Первые 16 байтов каждой записи обозначают глобальный уникальный идентификатор (GUID) типа раздела. Например, GUID для системного раздела EFI - C12A7328-F81F-11D2-BA4B-00A0C93EC93B.

Вторые 16 байтов - это уникальный идентификатор GUID раздела. Затем следуют начальные и конечные 64-битные LBA, атрибуты раздела и максимум 36-символьное имя раздела.

Итог

Прочитав всё выше написанное можно констатировать:

  • MBR и GPT позволяют операционной системе получать точную информацию о структуре диска
  • Если вы повредите сектор с MBR, то вам придётся изрядно попотеть
  • Используйте только GPT
  • Можно использовать ПО для создания резервной копии MBR если уж вы его уже используете
  • Также вы можете использовать ПО для конвертации MBR в GPT (конечно сперва бэкап)
  • Конечно сперва бэкап - слоган любого вендора, даже если это СХД на 500ТБ