访问 LVM 卷上的分区

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 是可能的,并且在必要时会使用它。但是,如果可能的话,我希望有更直接的东西,而不是模拟网络块设备并附加它。

Mic*_*ton 8

我相信您正在寻找的工具是kpartx.

一般程序是:

  1. 列出磁盘映像中的分区:

    kpartx -l /dev/vg0/mylv
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将分区添加到设备映射器:

    kpartx -a /dev/vg0/mylv
    
    Run Code Online (Sandbox Code Playgroud)
  3. 挂载您感兴趣的分区:

    mount -o ro /dev/mapper/loop0p5 /mnt
    
    Run Code Online (Sandbox Code Playgroud)