KVM-QEMU, QCOW2, QEMU-IMG and Snapshots

介绍:

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






你可能感兴趣的:(KVM-QEMU, QCOW2, QEMU-IMG and Snapshots)