![没有限制是多少?我可以拥有多少个分区?](https://linux22.com/image/693/%E6%B2%A1%E6%9C%89%E9%99%90%E5%88%B6%E6%98%AF%E5%A4%9A%E5%B0%91%EF%BC%9F%E6%88%91%E5%8F%AF%E4%BB%A5%E6%8B%A5%E6%9C%89%E5%A4%9A%E5%B0%91%E4%B8%AA%E5%88%86%E5%8C%BA%EF%BC%9F.png)
我想知道在运行 Linux 的 x86_64 PC 上我可以创建多少Primary
个?Extended Partitions
更新 :
如果分区数量有限制,为什么要这样限制呢?
答案1
该限制是由于原始 BIOS 设计造成的。当时,人们并没有想到在单个磁盘上会安装四个以上不同的操作系统。操作系统实现者也对该标准存在误解,尤其是 Microsoft 和 Linux,它们错误地将文件系统与(主)分区映射,而不是像 BSD 和 Solaris 那样将自己的分区细分为片,而这正是最初的预期目标。
逻辑分区的最大数量不受标准限制,但可到达的逻辑分区数量取决于操作系统。 Windows 受到字母表中字母数量的限制,Linux 过去的 IDE 驱动程序有 63 个插槽(hda1 到 hda63),但现代版本标准化了 SD 驱动程序,默认支持 15 个插槽(sda1 到 sda15)。通过一些调整,可以克服这个限制,但可能会使工具感到困惑(请参阅 http://www.justlinux.com/forum/showthread.php?t=152404)
无论如何,这将成为 EFI/GPT 的历史。最近的 Linux 支持 GPT,默认情况下可以有 128 个分区。要充分利用大磁盘(2TB 及以上),您无论如何都需要 GPT。
答案2
Sen,响应@jlliagre,应该指出的是,某些操作系统将创建单个分区,但本质上是在该空间内创建子分区。
它类似于但不等于:
parted rm 1 /dev/sda
...
parted rm 7 /dev/sda
parted mkpart primary $start $end /dev/sda
parted mkpart primary $start1 $end1 /dev/sda1
然后您可以使用 kpartx 访问这些子分区:
kpartx -a /dev/sda1
子分区将显示为:
/dev/sda1p1
当然,这并不是 FreeBSD 和类似系统进行切片的确切方式,但本质上是一样的。
答案3
分区完全取决于磁盘类型格式。如果我们在 Linux 中使用 MBR 磁盘类型,那么我们总共可以创建 4 个分区,例如:
- 所有四个分区都只是主分区。
- 三个分区是主分区,其余 1 个分区是扩展分区。
如果我们考虑以上 2 个步骤,那么在扩展分区下,我们可以创建几乎 65536 个新逻辑分区并使用它们,但是我们可以使用的逻辑分区有一些限制,这取决于操作系统。
我们可以在扩展分区下创建多少个分区?
答:假设您将MBR中的最后一个分区创建为扩展分区,并在其下创建一个1GB的分区作为逻辑分区。
它们的结构如下:
[root@localhost ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x4bc89c19
Device Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 2099200 2293759 97280 83 Linux
/dev/sdb3 2293760 2488319 97280 83 Linux
/dev/sdb4 2488320 41943039 19727360 5 Extended < br/>
[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only until you decide to write them.
Be careful before using the write command.
Command (m for help): n
All primary partitions are in use
Adding logical partition 5
First sector (2490368-41943039, default 2490368):
Using default value 2490368
Last sector, +sectors or +size{K,M,G} (2490368-41943039, default 41943039): +1G
Partition 5 of type Linux and of size 1 GiB is set
Command (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x4bc89c19
Device Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 2099200 2293759 97280 83 Linux <
/dev/sdb3 2293760 2488319 97280 83 Linux
/dev/sdb4 2488320 41943039 19727360 5 Extended
/dev/sdb5 2490368 4587519 1048576 83 Linux
现在,在上面创建了1GB的逻辑分区后,我们就可以计算出扩展分区下的逻辑分区总数了。我们知道MBR支持1个扇区空间=512字节
/dev/sdb5
和起始扇区值之间的差异/dev/sdb4
如下:2490368-2488320=2048。 2048是差值,是扩展分区中的保留空间,用于存储其下逻辑分区的信息。如果我们将 2048 乘以 512 字节,则扩展分区中支持逻辑分区的总字节数即 2048*512=1048576 字节
在MBR中,总共64个字节的大小用于存储分区表中的分区信息。这意味着分区表中存储了每个分区信息,每个分区大小为16字节。每个分区可以使用16字节的空间,因此MBR中总共提供了4个分区,包括扩展分区。如果我们看到最后一个分区大小是扩展分区,那么它们使用 16 字节的空间。
这意味着如果我们将 1048576 字节除以 16,我们将得到扩展分区下的逻辑分区总数,即 1048576/16=65536(最大逻辑分区)。
其下最多可以使用 65536 个逻辑分区。但该分区的使用取决于操作系统。在Linux中,MBR在扩展分区下最多使用60个逻辑分区。
因此,我们可以在 MBR 下创建的分区总数为 3(主)、1(扩展)、60(逻辑)= 64
但只有主分区和逻辑分区用于提供 Linux 数据,而不是扩展分区,因此这意味着只有 63 个分区对于将数据输入分区很有用。
我们怎么能说 MBR 下最多只能创建 60 个分区,而不是更多呢?
只要创建尽可能多的逻辑分区,当您创建第 60 个逻辑分区时,系统会显示此消息
Command (m for help): n
All primary partitions are in use
Adding logical partition 60
First sector (23013477-41943039, default 23031808):
Using default value 23031808
Last sector, +sectors or +size{K,M,G} (23031808-24035327, default 24035327): +100
Partition 60 of type Linux and of size 50.5 KiB is set
Command (m for help): n
The maximum number of partitions has been created
答案4
4 个主分区或 3 个主分区和一个扩展分区。
扩展分区可以细分为多个逻辑分区。