如何使环回块设备上的逻辑卷可用?

如何使环回块设备上的逻辑卷可用?

我有一个文件hdd.img是硬盘的原始图像。硬盘有一个 BIOS/DOS 分区表,其第二个分区被设置为用作 LVM 创建逻辑卷的单个物理卷。

我的目标是访问由这些逻辑卷表示的分区/文件系统。

hdd.img我通过以下命令设置环回块设备映射:

$ sudo losetup --partscan -f hdd.img

这导致我在环回设备上看到该映像中包含的两个分区(它是loop17

$ lsblk | grep 'loop17'
loop17                7:17   0  30G  0 loop
├─loop17p1          259:4    0   1G  0 loop
└─loop17p2          259:5    0  29G  0 loop

现在的问题是。如何通知系统扫描 /dev/loop17p2 来查找我真正想要访问的逻辑卷

更新

安装软件包kpartx并执行以下操作:

$ sudo losetup -f hdd.img
$ sudo kpartx -a /dev/loop17

确实生成了到 上包含的卷的 lvm 映射/dev/loop17p2。虽然这解决了我的迫切需求,但仍然很高兴知道为什么在已经创建了包含逻辑卷的块设备vgscan后不起作用?losetup --partscan -f hdd.img/dev/loop17p2

答案1

使用lvscanvgscan是扫描卷组...

答案2

该命令vgscan有一个命令行选项--cache,必须用于将扫描结果放入缓存中,从而允许后续vgchange -ay <vg>调用来生成映射

简而言之这项工作:

$ sudo losetup --partscan -f hdd.img
$ sudo vgscan --scan
$ sudo vgchange -ay <vg>

vg是卷组(vgscan)已报告的卷组之一。

然而这会不是工作:

$ sudo losetup --partscan -f hdd.img
$ sudo vgscan
$ sudo vgchange -ay <vg>

因为第二个命令不会将其扫描结果放入--cache.奇怪的是,我对这面--cache旗帜的看法是认为它意味着使用缓存的值而不是执行实际扫描。

相关内容