虚拟磁盘挂载

1
2
# 查看磁盘基本信息
qemu-img info vm-104-disk-1.raw

RAW格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
对于未分区镜像文件直接使用loop:
mount -o loop image.img /mnt/image

已分区的镜像文件:
如果已知分区的起始位置
mount -o loop,offset=32256 image.img /mnt/image

或者使用losetup + kpartx
losetup /dev/loop0 image.img
kpartx -a /dev/loop0
mount /dev/mapper/loop0p1 /mnt/image

kpartx命令的作用,是让Linux内核读取一个设备上的分区表,然后生成代表相应分区的设备。
kpartx -l imagefile 可以查看一个映像文件中的分区,使用 kpartx -a imagefile 命令后,就可以通过 /dev/mapper/loop0pX (其中X是 分区号)来访问映像。


卸载:
umount /mnt
kpartx -d /dev/loop10
losetup -d /dev/loop10

qcow2格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
对于qcow2格式需要使用qemu-nbd这个工具
modprobe nbd max_part=63
qemu-nbd -c /dev/nbd0 image.img
mount /dev/nbd0p1 /mnt/image
如果是LVM格式的镜像:
vgscan
vgchange -ay
mount /dev/VolGroupName/LogVolName /mnt/image
最后使用结束需释放资源:
umount /mnt/image
vgchange -an VolGroupName
killall qemu-nbd
kpartx -d /dev/loop0
losetup -d /dev/loop0

RAW格式磁盘扩容

1
2
3
4
5
6
7
8
# KVM磁盘扩容相对比较容易,qemu-img命令可以通过resize选项对raw格式的虚拟磁盘镜像文件增或减小虚拟磁盘的容量,
# 但对qcow2的格式时只能增加容量,不支持缩减容量;如果需要缩减必须先将磁盘格式从qcow2转换为raw之后才可以缩减;

# 查看镜像大小信息
qemu-img info /var/lib/libvirt/images/ZenTao.img

# 增加镜像磁盘容量
qemu-img resize /var/lib/libvirt/images/ZenTao.img +100G