parted
我在环回磁盘上摆弄命令,并尝试使用 gpt 部分表创建一些分区,但Error: Unable to satisfy all constraints on the partition.
在尝试创建逻辑分区时不断出现问题
$ sudo parted /dev/loop0
(parted) mktable gpt
(parted) mkpart primary 1MiB 201MiB
(parted) mkpart extended 201MiB -0MiB
(parted) unit MiB print
Model: Loopback device (loop)
Disk /dev/loop0: 102400MiB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 1.00MiB 201MiB 200MiB primary
2 201MiB 102400MiB 102199MiB extended
(parted) mkpart logical 202MiB 1024MiB
Error: Unable to satisfy all constraints on the partition.
不过,使用 msdos 部分表重新创建相同的分区不会出现此类错误。那么知道出了什么问题吗?
% sudo parted /dev/loop0
GNU Parted 2.3
Using /dev/loop0
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mktable msdos
(parted) mkpart primary 1MiB 201MiB
(parted) mkpart extended 201MiB -0MiB
(parted) mkpart logical 202MiB 1024MiB
(parted) unit MiB print
Model: Loopback device (loop)
Disk /dev/loop0: 102400MiB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1.00MiB 201MiB 200MiB primary
2 201MiB 102400MiB 102199MiB extended lba
5 202MiB 1024MiB 822MiB logical
答案1
扩展分区和逻辑分区仅对 msdos 分区表有意义。它的唯一目的是允许您拥有 4 个以上的分区。对于 GPT,只有“主”分区,其数量通常限制为 128(但是,理论上磁盘标签格式没有暗示上限)。请注意,在 GPT 上,任何分区都不能重叠(与 msdos 相比,显然,扩展分区预计与所有包含的逻辑分区重叠)。
关于 GPT 的下一件事是分区可以有名称,但这里出现了混乱:mkpart 命令具有不同的语义,具体取决于您使用的是 GPT 还是 msdos 分区表。
对于 msdos 分区表,mkpart 的第二个参数是分区类型(主/逻辑/扩展),而对于 GPT,第二个参数是分区名称。在你的情况下,它是“主要”。 '扩展' 分别。 “合乎逻辑”。因此,parted 创建了两个 GPT 分区,第一个名为“主”,第二个名为“扩展”。您尝试创建的第三个分区(“逻辑”分区)将与“扩展”分区重叠,因此parted 拒绝执行此操作。
简而言之,扩展分区和逻辑分区在 GPT 上没有意义。只需创建任意数量的“普通”分区并给它们指定适当的名称即可。