设为首页 收藏本站
查看: 1289|回复: 0

[经验分享] [待整理]KVM 快照创建,使用,删除

[复制链接]

尚未签到

发表于 2015-4-10 14:25:09 | 显示全部楼层 |阅读模式
  使用libvirt创建的虚拟机,默认格式为raw,要想使用快照功能,需要先将其转换格式。
  1:qemu-img snapshot -c base_sys_centos5.564bit.img CentOS5.5_64bit.img
  在现有镜像基础上创建一个快照。
  报如下错误:
  emu-img: Could not create snapshot 'base_sys_centos5.564bit.img': -95 (Operation not supported)
  2:怀疑是文件格式不对,查看一下。
  qemu-img info CentOS5.5_64bit.img
  image: CentOS5.5_64bit.img
  file format: raw
  virtual size: 20G (21474836480 bytes)
  disk size: 3.4G
  果然是raw格式
  3:使用如下命令将raw格式的镜像转化为qcow2格式。
  qemu-img convert -f raw -O qcow2 CentOS5.5_64bit.img CentOS5.5_64bit_basesys_qcow2.img
  4:转换成功后,再次对镜像创建一个快照 (创建快照需关机状态)
  qemu-img snapshot -c CentOS5.5_64bit_Qcow2_basesys.img CentOS5.5_64bit_Qcow2.img
  OK,创建成功。
  该步并不会创建一个新的镜像,可以使用如下命令来查看指定的镜像上是否存在快照,并在合适的时候,恢复快照。
  qemu-img snapshot -l CentOS5.5_64bit_Qcow2.img
  Snapshot list:
  ID TAG VM SIZE DATE VM CLOCK
  1 CentOS5.5_64bit_Qcow2_basesys.img 0 2011-07-21 23:17:38 00:00:00.000
  恢复快照:( -a后面的快照镜像需要手动输入 , 命令执行后需重启生效,最好在关机状态下回滚快照)
  qemu-img snapshot -a CentOS5.5_64bit_Qcow2_basesys.img CentOS5.5_64bit_Qcow2.img
  其他操作:
  '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

DSC0000.jpg   ======================================================================
  
  

实例一  使用qemu-img命令使用快照
kvm环境下qcow2的镜像支持快照
1 确认镜像的格式
   [iyunv@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创建快照,创建快照并没有产生新的镜像,虚拟机镜像大小增加,快照应属于镜像。
   [iyunv@nc1 boss]#qemu-img snapshot -c snapshot01 test.qcow2  
   [iyunv@nc1 boss]#qemu-img snapshot -c snapshot02 test.qcow2
                                         快照名      镜像名
  3 列出某个镜像的所有快照
   [iyunv@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 使用快照
   [iyunv@nc1 boss]#qemu-img snapshot -a snapshot01 test.qcow2  
  5 删除快照
   [iyunv@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
   [iyunv@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,开始创建
   [iyunv@nc1 boss]#virsh snapshot-create testsnp snp.xml  //即以snp.xml作为快照的配置文件为虚拟机testsnp创建快照
    Domain snapshot snapshot02 created from 'snp.xml'
   
3 查看虚拟机testsnp已有的快照
   [iyunv@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命令来查看快照
   [iyunv@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命令查询该虚拟机某个快照的详细配置
[iyunv@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
  [iyunv@nc1 boss]# virsh snapshot-dumpxml testsnp snapshot02
  
    snapshot02
    Snapshot of OS install and updates
    running
     
      1315385065        //当前快照把前一个快照作为parent
   
    1315387958
   
      afbe5fb7-5533-d154-09b6-33c869a05adf
   
  
  5 查看最新的快照信息
   [iyunv@nc1 boss]# virsh snapshot-current testsnp
   
     1315385065
     Snapshot of OS install and updates
     running
     1315385065   
     
       afbe5fb7-5533-d154-09b6-33c869a05adf
     
   
  6 使用快照,指定使用哪一个快照恢复虚拟机
  [iyunv@nc1 boss]# virsh snapshot-revert testsnp snapshot02
  7 删除指定快照
   [iyunv@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  
  ============================================================
  

  一、简介:
  snapshot(快照)可以把虚拟机某个时间点的内存、磁盘文件等的状态保存为一个镜像文件。通过这个镜像文件,可以在以后的任何时间来恢复虚拟机在当时创建snapshot的状态,这个在使用虚拟机来做测试的时候很有用。
  二、创建快照-KVM
  需注意在虚拟机运行时创建快照不会报错,但会出现一些莫名其妙的问题,像恢复快照失败、快照名为空等,所以在创建快照前要先关闭虚拟机。
  2.1创建
  //raw格式
  kvm虚拟机的raw格式磁盘文件不支持快照功能,在创建快照前需要先转换为qcow或qcow2格式。
  [iyunv@kvmserver xp_4_test]# qemu-img info disk.raw
  image: disk.raw
  file format: raw
  virtual size: 100M (104857600 bytes)
  disk size: 6.1M
  [iyunv@kvmserver xp_4_test]# qemu-imgsnapshot -c s1 disk.raw //raw格式的转换报错
  qemu-img: Could not create snapshot'snapshot01': -95 (Operation not supported)
  //qcow2格式
  [iyunv@kvmserver xp_4_test]# qemu-img info disk.qcow2
  image:disk.qcow2
  file format: qcow2
  virtual size: 100M (104857600 bytes)
  disk size: 4M
  [iyunv@kvmserver xp_4_test]# qemu-imgsnapshot -c s1 disk.qcow2
  [iyunv@kvmserver xp_4_test]# qemu-img infodisk01.qcow2 //可以看到刚新建的快照s1
  image: disk.qcow2
  file format: qcow2
  virtual size: 100M (104857600 bytes)
  disk size: 80M
  cluster_size: 65536
  Snapshot list:
  ID       TAG                 VM SIZE                DATE       VM CLOCK
  1        s1                        02012-05-10 15:20:40   00:00:00.000
  [iyunv@kvmserver xp_4_test]# ls -lh
  总用量 7G
  -rw-r--r--. 1 qemu qemu 108M  5月 10 15:03 disk.qcow2
  -rw-r--r--. 1 qemu qemu 6.5G  5月 10 15:03xp_4_test.img
  创建快照后不会有新的镜像文件产生;disk.qcow2镜像文件创建时的大小为100M,这里显示的大小为108M,这是因为快照位于disk.qcow2镜像文件内而没有单独生成一个文件。
  
  2.2列出镜像的所有快照
  [iyunv@kvmserver xp_4_test]# qemu-imgsnapshot -l disk.qcow2
  Snapshot list:
  ID       TAG                 VM SIZE                DATE       VM CLOCK
  1        s1                        02012-05-10 15:20:40   00:00:00.000
  2        s2                        02012-05-10 15:32:37   00:00:00.004
  2.3快照恢复
  恢复快照同样也需要在关闭虚拟机的情况下进行,下面的恢复会使虚拟机恢复到2012-05-10 15:20:40的状态,在此时间点后对磁盘disk.qcow2的操作将全部失效
  [iyunv@kvmserver xp_4_test]# qemu-imgsnapshot -a s1 disk.qcow2
  2.4 删除快照
  [iyunv@kvmserver xp_4_test]# qemu-imgsnapshot -d s1 disk.qcow2
  
  三、创建快照-convirture
  使用convirture来创建、恢复快照同样需要在关闭虚拟机的情况下进行,但不同的是convirture会将系统状态另外生成一个压缩的镜像文件。
  3.1创建快照
   DSC0001.jpg
//指定快照的保存路径和文件名

  3.1恢复快照
  

  //选择需要恢复的快照文件
  
  ==============================================================
  


kvm虚拟机快照
kvm默认的文件格式是raw,也就是使用文件来模拟实际的硬盘(当然也可以使用一块真实的硬盘或一个分区),不过raw格式只支持内存
快照(就是启动的时候加-snapshot,所有更改都写到内存),重启之后就没了。raw格式不支持磁盘快照,因此要使用qcow或qcow2文件格式。

1、要创建qcow2格式的虚拟机镜像文件
[iyunv@target kvm_node]# qemu-img create -f qcow2 /virhost/kvm_node/node4.img 20G
参数-f指定格式,如果不指定默认的是raw。

[iyunv@target kvm_node]# qemu-img info node4.img   #查看镜像文件格式
image: node4.img
file format: qcow2
virtual size: 20G (21495808000 bytes)
disk size: 6.3G
cluster_size: 65536

2、把raw格式转换成qcow2格式:
[iyunv@target kvm_node]# qemu-img convert -f raw -O qcow2 /virhost/kvm_node/node5.img /virhost/kvm_node/node5_qcow2.img

3、为虚拟机node4创建一个快照
[iyunv@node4 ~]# ls /root/          #/root/下无文件
[iyunv@target kvm_node]# virsh snapshot-create-as node4 node4.snap1
[iyunv@target kvm_node]# qemu-img info node4.img
image: node4.img
file format: qcow2
virtual size: 20G (21495808000 bytes)
disk size: 6.3G
cluster_size: 65536
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         node4.snap1            401M 2012-04-10 12:04:42   22:02:04.672

4、修改node4系统文件并通过snapshot文件恢复
[iyunv@node4 ~]# scp node5:/root/* .   #从node5上复制文件
root@node5's password:
anaconda-ks.cfg                                                                          100% 1224     1.2KB/s   00:00   
scp: /root/Desktop: not a regular file
install.log                                                                              100%   34KB  33.7KB/s   00:00   
install.log.syslog                                                                       100% 4232     4.1KB/s   00:00   
nginx-0.7.65.tar.gz                                                                      100%  590KB 590.3KB/s   00:00   
pcre-8.02.tar.gz                                                                         100% 1218KB   1.2MB/s   00:00   
php-5.2.13-fpm-0.5.13.diff.gz                                                            100%  197KB 196.6KB/s   00:00   
php-5.2.13.tar.gz                                                                              0%    0     0.0KB/s   --:-- ETAlphp-5.2.13.tar.gz                                                                          100%   11MB   11.2MB/s    00:01   
scp: /root/webbench-1.5: not a regular file
webbench-1.5.tar.gz                                                                      100% 7675     7.5KB/s   00:00   
[iyunv@node4 ~]# ls
anaconda-ks.cfg  install.log.syslog   pcre-8.02.tar.gz               php-5.2.13.tar.gz
install.log      nginx-0.7.65.tar.gz  php-5.2.13-fpm-0.5.13.diff.gz  webbench-1.5.tar.gz

[iyunv@target kvm_node]# virsh snapshot-create-as node4 node4.snap2     #为虚拟机node4当前状态创建快照
[iyunv@target kvm_node]# virsh snapshot-list node4                      #查看node4的快照
名称               Creation Time             状态
------------------------------------------------------------
node4.snap1          2012-04-11 00:47:06 +0800 paused
node4.snap2          2012-04-11 01:19:06 +0800 running

[iyunv@target kvm_node]# virsh snapshot-revert node4 node4.snap1    #从快照文件node4.snap1恢复node4
[iyunv@node4 ~]# ls /root/          #/root/下无文件,恢复成功

[iyunv@target kvm_node]# virsh snapshot-revert node4 node4.snap2  #从快照文件node4.snap2恢复node4
[iyunv@node4 ~]# ls                                               #恢复成功
anaconda-ks.cfg  install.log.syslog   pcre-8.02.tar.gz               php-5.2.13.tar.gz
install.log      nginx-0.7.65.tar.gz  php-5.2.13-fpm-0.5.13.diff.gz  webbench-1.5.tar.gz

5、删除快照
[iyunv@target kvm_node]# virsh snapshot-delete node4 node4.snap1


6、利用qemu-img创建镜像文件的snapshot
创建快照
qemu-img snapshot -c node4.snap1 /virhost/kvm_node/node4.img
#测试该命令创建快照大小总是为0,不知哪位大神能解决

查看快照
qemu-img snapshot -l /virhost/kvm_node/node4.img

把虚拟机恢复到某个快照的状态:
qemu-img snapshot -a snapshot-name /path/to/os.img

删除某个快照:
qemu-img snapshot -d snapshot-name /path/to/os.img

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-55713-1-1.html 上篇帖子: QEMU KVM Libvirt手册(6) – Network Block Device 下篇帖子: [zz]kvm环境使用libvirt创建虚拟机
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表