3

Мне было интересно, каково максимальное количество разделов на GPT-разделенном диске под Linux.

Таблица разделов GPT может содержать до 128 разделов, но узлы устройств для /dev/sda? (как описано здесь, блочное устройство с номером 8) разрешают только /dev/sda1 до /dev/sda15 .

Означает ли это, что не может быть более 15 разделов на диске, даже на GPT-разделенном диске?

3 ответа3

4

Давайте читать прекрасный источник.

В block/partitions/efi.c местом для установки разделов gpt является efi_partition(). Здесь решается максимальное количество разделов:

for (i = 0; i < le32_to_cpu(gpt->num_partition_entries) && i < state->limit-1; i++) {

num_partition_entries происходит из заголовка gpt на диске, поэтому максимальное число - это состояние state->limit - 1 . state является аргументом этой функции, и эта функция вызывается из check_part() из check_partition() в том же файле, и приходит

state->limit = disk_max_parts(hd);

Таким образом, ограничение составляет disk_max_parts() ,

static inline int disk_max_parts(struct gendisk *disk)
{
        if (disk->flags & GENHD_FL_EXT_DEVT)
                return DISK_MAX_PARTS;
        return disk->minors;
}

Таким образом, если на дисковом устройстве GENHD_FL_EXT_DEVT /* allow extended devt */ (устройство петли, универсальный диск ATA /ATAPI, диск SCSI, MD RAID), ограничение составляет DISK_MAX_PARTS (256), в противном случае это minors.

В заключение, обычно максимальное количество поддерживаемых ядром Linux составляет 255.

2

Что ж, я думаю, что здесь нужно использовать UUID. В этом случае вы обращаетесь не к блочному устройству как /dev /{h, s} dXY, а к UUID устройства. Конечно, в этом случае, предел будет превышать 128.

2

Нет, это означает, что у Linux есть проблема. ☺ Но мы уже знали это.

Кто вам сказал, что таблица разделов EFI содержит до 128 разделов? Этот человек не может читать спецификации. Как я уже говорил ранее, 128 записей из 128 байт каждый минимальный размер , который требуется по спецификации EFI, а не размер таблицы разделов EFI, и , конечно , не максимальный размер.

(Строго говоря, минимум, впервые упомянутый в версии 1.10 Спецификации EFI, составляет всего 16 КБ для всех записей раздела, но не включает блок заголовка. При обычной длине записи 128 байт это минимум 128 записей.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .