QCOW2格式是KVM-QEMU推出的一种镜格式,它不预先分配全部的磁盘空间,并且支持快照功能,并且你可以用以前的镜像作为基础,创建出基于它的新镜像,这样可以加快创建虚拟机的速度。
这篇文章将讲述一些qemu-img的高级功能。我们会先创建一个QCOW2镜像(base镜像),为它做快照(base.snap1),创建一个基于它的新镜像(base.demo),让新镜像摆脱base镜像.
qem-img命令:
写这篇文章的时候,Virt-Manager不支持qcow2的高级功能,唯一使用这些高级功能的办法就是执行shell 命令
在看这篇文章之前你可以先看下qemu-img的man手册,找到你想使用的功能。文章中我们只讨论下面这些命令。
qemu-img info <imagename>
查看镜像基本信息
qemu-img create -f qcow2 <镜像名字> <max-storage>
创建一个qcow2镜像。需要指定镜像容量.
qemu-img create -b <镜像1> -f qcow2 <镜像2>
创建一个基于镜像1的镜像2,镜像2的文件将基于镜像1,镜像2中的文件将基于镜像1中的. 在镜像2中所作的任何读写操作都不会影响到镜像1. 镜像1可以被其他镜像当做backing file. 但是要确保镜像1不要被修改
警告: 修改作为backing file的镜像会影响基于它的所有镜像
qemu-img snapshot -l <镜像名字>
查看镜像的所有快照
qemu-img snapshot -c <快照名字> <镜像名字>
为镜像创建快照,就像给它照了张像。
qemu-img snapshot -a <快照名字> <镜像名字>
恢复快照。
qemu-img snapshot -d <快照名字> <镜像名字>
从镜像中删除快照,删除快照并不会减小镜像的所占空间。 但这样删除后释放的空间会给镜像自身将来使用。
qemu-img convert -p -f qcow2 <源镜像> -O qcow2 <目标镜像>
镜像格式的转换, 当转换的源镜像和目标镜像格式都是qcow2的时候相当于复制源镜像的当前状态至目标镜像。 -p参数是显示转换进度。 转换出的目标镜像将不含任何原有镜像快照。 这样有助于帮助镜像摆脱backing file。
接下来我们将使用上面的命令来做实验。
创建一个1g大小的base镜像
qemu-img create -f qcow2 base.qcow2 1G
查看镜像信息
qemu-img info base.qcow2 image: base.qcow2 file format: qcow2 virtual size: 1.0G (1073741824 bytes) disk size: 136K cluster_size: 65536
创建快照snap1
qemu-img snapshot -c snap1 base.qcow2
查看镜像信息
qemu-img info base.qcow2 image: base.qcow2 file format: qcow2 virtual size: 1.0G (1073741824 bytes) disk size: 144K cluster_size: 65536 Snapshot list: ID TAG VM SIZE DATE VM CLOCK 1 snap1 0 2015-01-29 17:04:36 00:00:00.000
创建快照snap2并查看镜像信息
qemu-img snapshot -c snap2 base.qcow2
qemu-img info base.qcow2 image: base.qcow2 file format: qcow2 virtual size: 1.0G (1073741824 bytes) disk size: 156K cluster_size: 65536 Snapshot list: ID TAG VM SIZE DATE VM CLOCK 1 snap1 0 2015-01-29 17:04:36 00:00:00.000 2 snap2 0 2015-01-29 17:07:03 00:00:00.000
删除快照snap1并查询镜像信息
qemu-img snapshot -d snap1 base.qcow2
qemu-img info base.qcow2 image: base.qcow2 file format: qcow2 virtual size: 1.0G (1073741824 bytes) disk size: 156K cluster_size: 65536 Snapshot list: ID TAG VM SIZE DATE VM CLOCK 2 snap2 0 2015-01-29 17:07:03 00:00:00.000
恢复快照snap2
qemu-img snapshot -a snap2 base.qcow2
创建基于base.qcow2的镜像test1.qcow2
qemu-img create -b base.qcow2 -f qcow2 test1.qcow2 Formatting 'test1.qcow2', fmt=qcow2 size=1073741824 backing_file='base.qcow2' encryption=off cluster_size=65536
查看新建镜像的信息(注意最后一行)
qemu-img info test1.qcow2 image: test1.qcow2 file format: qcow2 virtual size: 1.0G (1073741824 bytes) disk size: 196K cluster_size: 65536 backing file: base.qcow2
创建一个test-merge.qcow2 让 test1.qcow2 并摆脱backing file
qemu-img convert -p -f qcow2 test1.qcow2 -O qcow2 test1-merge.qcow2 (100.00/100%)
查看镜像信息(注意最后没有了backing file)
qemu-img info test1-merge.qcow2 image: test1-merge.qcow2 file format: qcow2 virtual size: 1.0G (1073741824 bytes) disk size: 136K cluster_size: 65536
更改backing file 操作如下
#qemu-img info test1.qcow2 image: test1.qcow2 file format: qcow2 virtual size: 1.0G (1073741824 bytes) disk size: 196K cluster_size: 65536 backing file: /opt/test/base.qcow2 Format specific information: compat: 1.1 lazy refcounts: false # qemu-img rebase test1.qcow2 -b base2.qcow2 # qemu-img info test1.qcow2 image: test1.qcow2 file format: qcow2 virtual size: 1.0G (1073741824 bytes) disk size: 196K cluster_size: 65536 backing file: base2.qcow2 Format specific information: compat: 1.1 lazy refcounts: false
最后 更多的高级功能请参考qemu-img的man手册。
原文:http://www.azertech.net/content/kvm-qemu-qcow2-qemu-img-and-snapshots