有没有办法允许嵌套分区表?

有没有办法允许嵌套分区表?

我想做一些类似的事情

sudo fdisk /dev/sdb # create 2 partitions
sudo fdisk /dev/sdb1 # create 2 more

并最终得到类似的东西

[daffy@daffydesk ~]$ lsblk /dev/sdb
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sdb           8:16   0  27.8G  0 disk 
└─sdb1        8:17   0  13.9G  0 part
  └─sdb1p1      8:17   0   6.9G  0 part
  └─sdb1p2      8:17   0   7.0G  0 part
└─sdb2        8:17   0  13.9G  0 part

这在理论上可能吗?

答案1

不,这是不可能的,因为操作系统不是这样解释分区和分区表的。这是因为这种方法根本不是很好,而且它也打破了关于分区结构的假设。

如果你只是想要更多的分区(按任意创建顺序)比 1983(!)MBR 方案允许的要多,您只需使用 GPT(只有 20 年,不到 40 年历史),它由现代固件本机支持(至少从 2010 年开始)。如果有更好的、到处受支持的替代方案,那么改变过时的方案是没有意义的²。

如果您确实想要划分块设备内的空间,设备映射器和 LVM 就是为此而设计的工具。因此,对于该用例,将 MBR 分区表放入 MBR 分区也是没有意义的。

这实际上有用的一种情况是,如果您想要获取一个分区并将其用作虚拟机的完整驱动器的映像。然后,您只需使用您提到的环回设备方法即可。 lsblk 是否将事物显示为分层并不重要,这只是一个显示事物。然而,实际上,人们也不会这样做。他们只使用驻留在普通文件系统(典型桌面使用)或块存储上的映像文件,通过 LVM 或网络存储(CEPH,...)进入。


1 在正确的 MBR 分区上的固定位置有一个卷引导记录,这会与您将 MBR 分区表放在那里发生冲突。然而,现代操作系统并不关心 VBR……但它们也不支持回溯 37 年前为 2MB 大小的硬盘设计的分区方案。

² 还有一点有趣的是,完全为特定硬件设计的东西(1983 年的 IBM PC)仍然是通用的分区方案全部平台,无论是具有 TB 磁盘的 x86_64 还是具有 4MB 闪存的 MIPS 路由器。

相关内容