如何让Linux读取分区中的分区表?

如何让Linux读取分区中的分区表?

例如,我有一个(GPT 分区的)磁盘/dev/sda

/dev/sda8是该磁盘上的一个分区。我使用该cfdisk实用程序在/dev/sda8.我希望这些分区可以通过类似/dev/sda8p1.但Linux并没有自动识别它们。

如何让 Linux 识别分区中的分区,并在可能的情况下实现自动化?

答案1

我不知道会像磁盘一样自动扫描分区,而且实际上甚至无法手动扫描:

partx --add - /dev/sda8
partx: /dev/sda8: error adding partitions 1-2

但是,您可以使用循环设备将分区映射回设备 - 并且可以像扫描磁盘一样扫描该设备。/dev/sda8包含两个分区的设备示例:

losetup --show --find --partscan /dev/sda8
/dev/loop0

ls -1 /dev/loop0*    # Arg is #1, not lowercase "L"
/dev/loop0
/dev/loop0p1
/dev/loop0p2

完成后记得删除循环设备

losetup -d /dev/loop0

答案2

对于这样的嵌套分区结构没有自动识别,因为这样的嵌套不是我所知道的任何分区表规范的一部分。

kpartx可用于为此类分区内分区创建基于设备映射器的设备节点,使用与partx.由此产生的分区设备将类似于/dev/mapper/sda8p1.

像这样的嵌套分区结构例如,将分区映射为虚拟机的虚拟磁盘。kpartx如果虚拟机存在阻止其启动的问题,则通过主机访问此类虚拟磁盘的分区可能是一种有用的故障排除工具。

但您必须意识到它的局限性:在虚拟机运行时尝试从主机系统访问虚拟机的分区会导致文件系统损坏,因为主机和虚拟机中的文件系统级缓存无法相互通信,并且因此不可能知道一个人的写操作使另一个人缓存的某些数据无效。

相关内容