pro*_*jix 6 linux partition lvm qemu block-device
假设您有一个 LVM 卷 /dev/vg0/mylv。您已将此作为虚拟磁盘呈现给虚拟化或模拟的来宾系统。在安装过程中,来宾系统将其视为 /dev/sda 并将其分区为 /dev/sda{1,2,5,6} 并完成安装。现在,您需要从主机系统内部访问这些文件系统,而无需运行来宾系统。fdisk 看到这些分区就好了:
# fdisk -l /dev/vg0/mylv
Device Boot Start End Blocks Id System
/dev/vg0/mylv1 2048 684031 340992 83 Linux
/dev/vg0/mylv2 686078 20969471 10141697 5 Extended
/dev/vg0/mylv5 686080 8290303 3802112 83 Linux
/dev/vg0/mylv6 8292352 11980799 1844224 83 Linux
Run Code Online (Sandbox Code Playgroud)
但是,/dev/vg0/mylv1 等设备实际上并不存在。我猜是因为它们在 LV 内,操作系统默认无法识别这种类型的嵌套。有什么方法可以刺激 Linux,以便 /dev/vg0/mylv1 或等效的出现,从而可以在主机系统中安装?
我知道 qemu-nbd 是可能的,并且在必要时会使用它。但是,如果可能的话,我希望有更直接的东西,而不是模拟网络块设备并附加它。
我相信您正在寻找的工具是kpartx.
一般程序是:
列出磁盘映像中的分区:
kpartx -l /dev/vg0/mylv
Run Code Online (Sandbox Code Playgroud)将分区添加到设备映射器:
kpartx -a /dev/vg0/mylv
Run Code Online (Sandbox Code Playgroud)挂载您感兴趣的分区:
mount -o ro /dev/mapper/loop0p5 /mnt
Run Code Online (Sandbox Code Playgroud)