一、简介:

snapshot(快照)可以把虚拟机某个时间点的内存、磁盘文件等的状态保存为一个镜像文件。通过这个镜像文件,可以在以后的任何时间来恢复虚拟机在当时创建snapshot的状态,这个在使用虚拟机来做测试的时候很有用。

二、创建快照-KVM:

需注意在虚拟机运行时创建快照不会报错,但会出现一些莫名其妙的问题,像恢复快照失败、快照名为空等,所以在创建快照前要先关闭虚拟机。

2.1创建

//raw格式

kvm虚拟机的raw格式磁盘文件不支持快照功能,在创建快照前需要先转换为qcow或qcow2格式。

[root@kvmserver xp_4_test]# qemu-img info disk.raw

image: disk.raw

file format: raw

virtual size: 100M (104857600 bytes)

disk size: 6.1M

[root@kvmserver xp_4_test]# qemu-img snapshot -c s1 disk.raw //raw格式的转换报错

qemu-img: Could not create snapshot'snapshot01': -95 (Operationnot supported)

//qcow2格式

[root@kvmserver xp_4_test]# qemu-img info disk.qcow2

image:disk.qcow2

file format: qcow2

virtual size: 100M (104857600 bytes)

disk size: 4M

[root@kvmserver xp_4_test]# qemu-img snapshot -c s1 disk.qcow2

[root@kvmserver xp_4_test]# qemu-img info disk01.qcow2//可以看到刚新建的快照s1

image: disk.qcow2

file format: qcow2

virtual size: 100M (104857600 bytes)

disk size: 80M

cluster_size: 65536

Snapshot list:

ID       TAG                VMSIZE               DATE      VM CLOCK

       s1                       02012-05-10 15:20:40  00:00:00.000

[root@kvmserver xp_4_test]# ls -lh 

总用量 7G

-rw-r--r--. 1 qemu qemu 108M  5月 10 15:03disk.qcow2

-rw-r--r--. 1 qemu qemu 6.5G  5月 1015:03xp_4_test.img

创建快照后不会有新的镜像文件产生;disk.qcow2镜像文件创建时的大小为100M,这里显示的大小为108M,这是因为快照位于disk.qcow2镜像文件内而没有单独生成一个文件。

 

2.2列出镜像的所有快照

[root@kvmserver xp_4_test]# qemu-img snapshot  -l  disk.qcow2

Snapshot list:

ID       TAG                VMSIZE               DATE      VM CLOCK

       s1                       02012-05-10 15:20:40  00:00:00.000

       s2                       02012-05-10 15:32:37  00:00:00.004 

2.3快照恢复

恢复快照同样也需要在关闭虚拟机的情况下进行,下面的恢复会使虚拟机恢复到2012-05-1015:20:40的状态,在此时间点后对磁盘disk.qcow2的操作将全部失效

[root@kvmserver xp_4_test]# qemu-imgsnapshot -a s1 disk.qcow2

2.4 删除快照

[root@kvmserver xp_4_test]# qemu-img snapshot -d s1 disk.qcow2


三、利用libvirt使用快照
1 同样先确认镜像的格式为qcow2
  [root@nc1 boss]#qemu-img info test.qcow2
  image: test.qcow2
  file format: qcow2
  virtual size: 10G (10737418240 bytes)
  disk size: 1.1G
  cluster_size: 65536
 
2 创建并启动以test.qcow2作为镜像的虚拟机,假设虚拟机名称为testsnp,如果虚拟机没有启动,也可创建快照,但是意义不大,快照size为0
  开始使用配置文件来创建指定虚拟机的快照
  <domainsnapshot>
    <name>snapshot02</name> //快照名
    <description>Snapshot of OS install and updates</description>//描述
    <disks>
      <disk name='/home/guodd/boss/test.qcow2'>           //虚拟机镜像的绝对路径
      </disk>
      <disk name='vdb' snapshot='no'/>
    </disks>
  </domainsnapshot>
  保存为snp.xml,开始创建
  [root@nc1 boss]#virsh snapshot-create testsnp snp.xml  //即以snp.xml作为快照的配置文件为虚拟机testsnp创建快照
   Domain snapshot snapshot02 created from 'snp.xml'
  
3 查看虚拟机testsnp已有的快照
  [root@nc1 boss]# virsh snapshot-list testsnp
  Name                 Creation Time             State
  ---------------------------------------------------
  1315385065           2011-09-07 16:44:25 +0800 running        //1315385065创建时间比snapshot02早
  snapshot02           2011-09-07 17:32:38 +0800 running
  同样地,也可以通过qemu-img命令来查看快照
  [root@nc1 boss]# qemu-img info test.qcow2
   image: test.qcow2
   file format: qcow2
   virtual size: 10G (10737418240 bytes)
   disk size: 1.2G
   cluster_size: 65536
   Snapshot list:
   ID        TAG                 VM SIZE                DATE       VM CLOCK
   1         1315385065             149M 2011-09-07 16:44:25   00:00:48.575
   2         snapshot02             149M 2011-09-07 17:32:38   00:48:01.341

4 可以通过snapshot-dumpxml命令查询该虚拟机某个快照的详细配置
[root@nc1 boss]# virsh snapshot-dumpxml testsnp 1315385065
 <domainsnapshot>
  <name>1315385065</name>
  <description>Snapshot of OS install and updates</description>
  <state>running</state>     //虚拟机状态  虚拟机关机状态时创建的快照状态为shutoff(虚拟机运行时创建的快照,即使虚拟机状态为shutoff,快照状态依然为running)
  <creationTime>1315385065</creationTime>   //虚拟机的创建时间 Readonly 由此可以看出没有给快照指定名称的话,默认以时间值来命名快照
  <domain>
    <uuid>afbe5fb7-5533-d154-09b6-33c869a05adf</uuid> //此快照所属的虚拟机(uuid)
  </domain>
</domainsnapshot>
 查看第二个snapshot
 [root@nc1 boss]# virsh snapshot-dumpxml testsnp snapshot02
 <domainsnapshot>
   <name>snapshot02</name>
   <description>Snapshot of OS install and updates</description>
   <state>running</state>
   <parent>
     <name>1315385065</name>        //当前快照把前一个快照作为parent
   </parent>
   <creationTime>1315387958</creationTime>
   <domain>
     <uuid>afbe5fb7-5533-d154-09b6-33c869a05adf</uuid>
   </domain>
 </domainsnapshot>

5 查看最新的快照信息
  [root@nc1 boss]# virsh snapshot-current testsnp
  <domainsnapshot>
    <name>1315385065</name>
    <description>Snapshot of OS install and updates</description>
    <state>running</state>
    <creationTime>1315385065</creationTime>  
    <domain>
      <uuid>afbe5fb7-5533-d154-09b6-33c869a05adf</uuid>
    </domain>
   </domainsnapshot>

6 使用快照,指定使用哪一个快照恢复虚拟机
 [root@nc1 boss]# virsh snapshot-revert testsnp snapshot02

7 删除指定快照
  [root@nc1 boss]# virsh snapshot-delete testsnp snapshot02
  Domain snapshot snapshot02 deleted

附:
Snapshot (help keyword 'snapshot')
    snapshot-create                Create a snapshot from XML
    snapshot-create-as             Create a snapshot from a set of args
    snapshot-current               Get the current snapshot
    snapshot-delete                Delete a domain snapshot
    snapshot-dumpxml               Dump XML for a domain snapshot
    snapshot-list                  List snapshots for a domain

    snapshot-revert                Revert a domain to a snapshot


http://www.ibm.com/developerworks/tivoli/library/t-snaptsm1/index.html#row

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐