Proxmox 中恢复 .raw 文件并挂载为 LVM 分区

背景

PVE 迁移时将 VM 磁盘导出为了 .raw 格式的文件,后续需要将 .raw 文件重新导入进新的 VM 作为磁盘。

由于此前的 VM 是采用了 LVM 分区的 Debian, 所以相比直接挂载 .raw 文件需要一些额外操作。

具体操作步骤:

  1. 准备一个能正常启动的 Debian VM。在宿主机上操作将 .raw 文件导入 VM。
    $ qm importdisk 102 debian-disk.raw local-lvm --format raw
    
  2. 在 web-ui 中将未使用磁盘挂载成磁盘。此处我选择的格式是virtio
  3. 启动 VM 并建立 ssh 连接。由于原磁盘用的是 LVM 分区,直接挂载会报如下错误。需要挂载的是 logical volume
    mount: unknown filesystem type 'LVM2_member'
    
  4. 首先检查可用的 Volume Group.此处我需要挂载的是 debian-vg

    $ sudo pvs
    PV         VG             Fmt  Attr PSize   PFree
    /dev/vda5  debian-wan1-vg lvm2 a--   <7.52g    0 
    /dev/vdd3  debian-vg      lvm2 a--    2.00g    0 
    /dev/vdd4  debian-vg      lvm2 a--   <2.00g    0 
    /dev/vdd5  debian-vg      lvm2 a--  <26.76g    0
    
  5. 激活需要挂载的 Volume Group.

    $ vgchange -ay debian-vg
    # 取消激活: vgchange -an your_volume_group
    
  6. 查看目标 Volume Group 中可用的 Logical Volume 的路径。

    $ sudo lvdisplay
    --- Logical volume ---
    LV Path                /dev/debian-vg/root
    LV Name                root
    VG Name                debian-vg
    LV UUID                MUiJkV-4Ocs-eRmG-p4z3-JHm4-F0bG-elraS1
    LV Write Access        read/write
    LV Creation host, time debian, 2020-07-03 23:01:13 +0800
    LV Status              available
    # open                 1
    LV Size                <30.26 GiB
    Current LE             7746
    Segments               4
    Allocation             inherit
    Read ahead sectors     auto
    - currently set to     256
    Block device           253:2
    
  7. 挂载目标 Logical Volume 即可看到原磁盘中的文件。
    $ mkdir /mnt/old_disk
    $ mount /dev/debian-vg/root /mnt/old_disk
    $ ls /mnt/old_disk
    
    Credit: https://www.xmodulo.com/mount-lvm-partition-linux.html