kvm快照创建

1630阅读 0评论2018-07-02 chengxuyonghu
分类:系统运维

1). 查看磁盘格式
# qemu-img info /opt/vms/centos63-119.22.img      
image: /opt/vms/centos63-119.22.img     
file format: qcow2     
virtual size: 40G (42949672960 bytes)     
disk size: 136K     
cluster_size: 65536  
   
2). 如果不是qcow2需要关机转换磁盘格式,如果是请跳过
# cp centos63-119.22.img centos63-119.22.raw     
# qemu-img convert -f raw -O qcow2 centos63-119.22.raw  centos63-119.22.img 


3). 启动vm, 建立快照,以后可以恢复
# virsh start centos63-119.22     
# virsh snapshot-create centos63-119.22 
    
4). 快照位置
快照配置文件在/var/lib/libvirt/qemu/snapshot/虚拟机实例名称/下


5). 恢复快照,可以建立一些测试文件,准备恢复
先将虚拟机关闭,查看快照名称,然后恢复快照

# ls /var/lib/libvirt/qemu/snapshot/centos63-119.22  
  
1410341560.xml     

# virsh snapshot-revert centos63-119.22 1410341560


6). 删除快照
# qemu-img info   centos63-119.22     
    1         1410341560             228M 2014-04-08 10:26:40   00:21:38.053  
  
# virsh snapshot-delete centos63-119.2 1410341560



实例一  使用qemu-img命令使用快照 

kvm环境下qcow2的镜像支持快照

1 确认镜像的格式
  [root@nc1 boss]# qemu-img info test.qcow2  
  image: test.qcow2
  file format: qcow2
  virtual size: 10G (10737418240 bytes)
  disk size: 1.6G
  cluster_size: 65536

2 为镜像test.qcow2创建快照,创建快照并没有产生新的镜像,虚拟机镜像大小增加,快照应属于镜像。

  [root@nc1 boss]#qemu-img snapshot -c snapshot01 test.qcow2  

  [root@nc1 boss]#qemu-img snapshot -c snapshot02 test.qcow2

                                        快照名      镜像名


3 列出某个镜像的所有快照
  [root@nc1 boss]#qemu-img snapshot -l test.qcow2  
  Snapshot list:
  ID        TAG                 VM SIZE                DATE       VM CLOCK
  1         snapshot01                0 2011-09-07 15:39:25   00:00:00.000
  2         snapshot02                0 2011-09-07 15:39:29   00:00:00.000


4 使用快照
  [root@nc1 boss]#qemu-img snapshot -a snapshot01 test.qcow2 


5 删除快照
  [root@nc1 boss]#qemu-img snapshot -d snapshot01 test.qcow2


附:
  'snapshot' is the name of the snapshot to create, apply or delete
  '-a' applies a snapshot (revert disk to saved state)
  '-c' creates a snapshot
  '-d' deletes a snapshot
  '-l' lists all snapshots in the given image


实例二 利用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

  开始使用配置文件来创建指定虚拟机的快照

 
    snapshot02 //快照名 
    Snapshot of OS install and updates//描述
   
                //虚拟机镜像的绝对路径
     

     
   

 


  保存为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

 
  1315385065
  Snapshot of OS install and updates
  running     //虚拟机状态  虚拟机关机状态时创建的快照状态为shutoff(虚拟机运行时创建的快照,即使虚拟机状态为shutoff,快照状态依然为running)
  1315385065   //虚拟机的创建时间 Readonly 由此可以看出没有给快照指定名称的话,默认以时间值来命名快照
 
    afbe5fb7-5533-d154-09b6-33c869a05adf //此快照所属的虚拟机(uuid)
 



 查看第二个snapshot

 [root@nc1 boss]# virsh snapshot-dumpxml testsnp snapshot02
 
   snapshot02
   Snapshot of OS install and updates
   running
    
     1315385065        //当前快照把前一个快照作为parent
   

   1315387958
   
     afbe5fb7-5533-d154-09b6-33c869a05adf
   

 



5 查看最新的快照信息
  [root@nc1 boss]# virsh snapshot-current testsnp
 
    1315385065
    Snapshot of OS install and updates
    running
    1315385065   
   
      afbe5fb7-5533-d154-09b6-33c869a05adf
   

   



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  



因为要做有关KVM虚拟机的实验,所以需要虚拟机生成快照。查询相关资料,说KVM可以使用两种方法生成虚拟机的快照。


方法一、使用qemu-img snapshot命令进行生成快照


方法二、使用virsh snapshot-create-as命令进行生成快照


其实经过我的测试,发现使用qemu-img snapshot命令生成快照后,即使恢复快照也是没有用的。虚拟机还是当前的状态,而不是快照之前的状态。不知道为什么,而且还不稳定,经常报错。


注意要使用KVM的快照功能,虚拟机的硬盘一定要是qcow2格式,否则无法使用快照功能。



不过在介绍之前,我们还是把第一种方法使用qemu-img snapshot命令生成快照的相关命令介绍下。


其实我们是可以直接通过命令的帮助查询到有关qemu-img snapshot使用方法的。


本次实验我们已虚拟机centos为例,已centos虚拟机安装ftp命令前后做快照。



我们先来创建一个快照,使用如下命令:

qemu-img snapshot -c centos_install_ftp /vhostdisk/centos.img  创建快照

qemu-img snapshot -l /vhostdisk/centos.img     查询快照

qemu-img snapshot -d centos_install_ftp /vhostdisk/centos.img   删除快照



注意,其中centos_install_ftp为快照名称,/vhostdisk/centos.img为原虚拟机。


刚刚在使用qemu-img snapshot进行相关测试发现,居然把我的虚拟机给搞坏了。唉,真是坑爹啊,怪不得网络上的资料显示使用这个有问题呢。强烈建议,还是使用第二种方法吧。


以上是qemu-img snapshot创建KVM快照的方法,现在我们来介绍使用virsh snapshot-create-as来生成虚拟机快照的方法。


Centos虚拟机未安装ftp命令,创建快照如下:


snapshot-create-as centos centos_install_ftp


为虚拟机centos创建快照,快照名称为centos_install_ftp


snapshot-list centos查看虚拟机centos所有的快照


snapshot-info centos centos_uninstall_ftp


查看虚拟机centos快照centos_uninstall_ftp详细信息


snapshot-create-as centos centos_install_ftp


上一篇:ZooKeeper的安装与部署2
下一篇:使用Nginx反向代理和proxy_cache缓存搭建CDN服务器加快Web访问速度