Mount qcow2 image
1.Mount a qcow2 image
qemu-nbd - QEMU Disk Network Block Device Server: Export QEMU disk image using NBD protocol
qemu-nbd -c /dev/nbd0 imageName
执行后,会出现/dev/nbd0p1、/dev/nbd0p2、/dev/nbd0p3,分别对应vm中的不同分区
vm_156e3:/dsx01/instances/instance-00000064 # l /dev/nbd* brw-rw---- 1 root disk 43, 0 Oct 15 15:57 /dev/nbd0 brw-rw---- 1 root disk 43, 1 Oct 15 15:57 /dev/nbd0p1 brw-rw---- 1 root disk 43, 2 Oct 15 15:57 /dev/nbd0p2 brw-rw---- 1 root disk 43, 3 Oct 15 15:57 /dev/nbd0p3
可以直接mount虚拟机的某个分区: mount /dev/nbd0p1 /mnt,可以自行修改。
修改结束后,先umount /mnt,然后执行qemu-nbd -d /dev/nbd0
此时/dev/nbd0p1、/dev/nbd0p2、/dev/nbd0p3会消失。
注意: 如果image中带有LVM,在qemu-nbd之后必须执行vgscan和vgchange -ay命令,
让LVM的分区暴露成可以mount的设备,umount之后,先vgchange -an,然后再qemu-nbd -d
2.Mount a raw image
kpartx命令的作用:读device中的分区表,将扫描出的分区映射到device上。
losetup -f 找一个空闲的设备
losetup /dev/loop2 cirros-0.3.4-x86_64-disk.raw --关联image
查看一下/dev/loop0中是否有分区
vm_156e3:~/xiexianbin_cn # kpartx -av /dev/loop0 add map loop0p1 (253:7): 0 64260 linear /dev/loop0 16065
如果其中有分区的话,那么会有新设备: /dev/mapper/loop0p1
可以mount该分区:
mount /dev/mapper/loop0p1 /mnt
mount后就可以进行操作
如果image中使用了LVM,则需要执行vgscan和vgchange -ay
结束先umount /mnt,然后kpartx -d /dev/loop0,然后losetup -d /dev/loop0