我想知道 Linux 下 GPT 分区驱动器上的最大分区数是多少。
GPT 分区表最多可以包含 128 个分区,但设备节点/dev/sda?
(如此处所述,主设备号为 8 的块设备)/dev/sda1
最多只允许/dev/sda15
.
这是否意味着一个驱动器上的分区数不能超过 15 个,即使是 GPT 分区的驱动器也是如此?
让我们阅读精美的来源。
在中block/partitions/efi.c
,设置gpt分区的地方是efi_partition()
。这里决定最大分区数:
for (i = 0; i < le32_to_cpu(gpt->num_partition_entries) && i < state->limit-1; i++) {
Run Code Online (Sandbox Code Playgroud)
num_partition_entries
来自磁盘上的 gpt 标头,因此最大数量为state->limit - 1
. state
是这个函数的参数,这个函数在同一个文件中调用 from check_part()
, check_partition()
from ,得到
state->limit = disk_max_parts(hd);
Run Code Online (Sandbox Code Playgroud)
所以极限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;
}
Run Code Online (Sandbox Code Playgroud)
因此,如果磁盘设备有GENHD_FL_EXT_DEVT /* allow extended devt */
(循环设备、通用 ATA/ATAPI 磁盘、SCSI 磁盘、MD RAID),则限制为DISK_MAX_PARTS
(256),否则为minors
.
综上所述,通常Linux内核支持的最大数量是255。
归档时间: |
|
查看次数: |
6569 次 |
最近记录: |