GPT分区表有扩展分区吗?

GPT分区表有扩展分区吗?

在MBR模型下,我们可以创建四个主分区,其中一个可以是扩展分区,进一步细分为逻辑分区。

考虑一下来自 Wikipedia 的 GPT 原理图:

GPT

分区条目范围从 LBA 1 到 LBA 34,大概我们用完了这个空间,我知道这是相当数量的分区,如果磁盘使用 GPT 分区,是否可以创建扩展分区?如果可能的话,每个 GPT 分区表可以创建多少个扩展分区?

我不确定这是否是分区条目在 LBA 1 到 LBA 34 范围内的标准,也许我们可以将分区条目扩展到这个范围之外?

实际上,这是相当数量的分区,我无意这样做。

答案1

128 个分区是 GPT 的默认限制,在实践中使用一半的分区可能会很痛苦......

Linux 本身在设备命名空间上最初也有一些限制。对于 /dev/sdX,它假定不超过 15 个分区(sda 为 8,0,sdb 为 8,16 等)。如果有更多分区,它们将使用 259,X 又名块扩展主要表示。

当然,您仍然可以通过各种方式进行更多分区。循环设备、LVM,甚至 GPT 内的 GPT。有时,当将分区作为块设备交给虚拟机时,这种情况会自然发生,它们将分区视为虚拟磁盘驱动器并对其进行分区。

只是不要指望分区内的此类分区会被自动拾取。


gdisk正如 @fpmurphy1 在评论中指出的那样,我错了:您可以使用, expert menu,更改限制resize partition table。如果驱动器的开头和结尾处有未分区的空间(512 字节扇区可容纳 4 个附加分区条目),也可以对现有分区表执行此操作。但我不确定这得到了多么广泛的支持;在parted我尝试过的其他分区器中似乎没有它的选项。


您可以设置的最高限制gdisk似乎是,65536但它有问题:

Expert command (? for help): s   
Current partition table size is 128.
Enter new size (4 up, default 128): 65536
Value out of range

进而...

Expert command (? for help): s   
Current partition table size is 128.
Enter new size (4 up, default 128): 65535
Adjusting GPT size from 65535 to 65536 to fill the sector

Expert command (? for help): s
Current partition table size is 65536.

诶诶?不管你说什么。

但尝试保存该分区表并gdisk陷入循环几分钟。

Expert command (? for help): w

--- gdisk gets stuck here ---
      PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND    
    22253 root      20   0   24004  11932   3680 R 100.0  0.1   1:03.47 gdisk      
--- unstuck several minutes later ---

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): Your option? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/loop0.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.

以下是parted关于成功完成的操作的说明:

# parted /dev/loop0 print free
Backtrace has 8 calls on stack:
  8: /usr/lib64/libparted.so.2(ped_assert+0x45) [0x7f7e780181f5]
  7: /usr/lib64/libparted.so.2(+0x24d5e) [0x7f7e7802fd5e]
  6: /usr/lib64/libparted.so.2(ped_disk_new+0x49) [0x7f7e7801d179]
  5: parted() [0x40722e]
  4: parted(non_interactive_mode+0x92) [0x40ccd2]
  3: parted(main+0x1102) [0x405f52]
  2: /lib64/libc.so.6(__libc_start_main+0xf1) [0x7f7e777ec1e1]
  1: parted(_start+0x2a) [0x40610a]


You found a bug in GNU Parted! Here's what you have to do:

Don't panic! The bug has most likely not affected any of your data.
Help us to fix this bug by doing the following:

Check whether the bug has already been fixed by checking
the last version of GNU Parted that you can find at:

    http://ftp.gnu.org/gnu/parted/

Please check this version prior to bug reporting.

If this has not been fixed yet or if you don't know how to check,
please visit the GNU Parted website:

    http://www.gnu.org/software/parted

for further information.

Your report should contain the version of this release (3.2)
along with the error message below, the output of

    parted DEVICE unit co print unit s print

and the following history of commands you entered.
Also include any additional information about your setup you
consider important.

Assertion (gpt_disk_data->entry_count <= 8192) at gpt.c:793 in function
_parse_header() failed.

Aborted                                                                   

因此parted拒绝使用具有超过 8192 个分区条目的 GPT。没有人这样做,所以它一定是腐败的,对吧?

当您不坚持默认值时就会发生这种情况。

答案2

GPT 上没有扩展分区,因为实际上它对分区数量没有限制(最小支持 128 个分区,这将使用 16,384 字节用于分区表,因此如果您为其保留更多空间,则可以拥有更多分区)。

但随后你将面临以下限制:

  • 您的操作系统(例如:MS Windows 仅限于128
  • 用于处理分区的工具:gdiskparted以及其他一些工具也有其局限性(无论如何都比128分区高)

答案3

从您提供的图片中可以看出,GPT 最多支持 128 个分区。没有扩展分区的概念。

答案4

首先您应该记住,扩展分区仅在 MBR 磁盘上可用。在 GPT 分区上,所有分区都是主分区。 GPT 最多支持 128 个分区。

要使用磁盘管理创建扩展分区,您必须有一些未分配的空间。如果您已经有3个主分区,则第4个分区将被创建为扩展分区。

您应该记住一件事:MBR 最多仅支持 4 个主分区。如果你已经有4个主分区,你可以将主分区转换为扩展分区无数据丢失。

相关内容