目前项目中已经存在的快照是针对卷的快照,并且需要关机。所以目前的需求有两个:1.不关机快照;2.针对虚拟机的快照,而不是针对券的快照。

由需求所以针对libvirt做了一些实验,纪录如下:

环境:
物理机环境:
OS:centos 6.4 x64
Libvirt:libvirt 0.10.2

实验1:
虚拟机只有系统盘,没有数据盘,做快照之前运行top程序,快照回滚之前创建一些文件,且停止top的运行。回滚成功到达快照的状态(即top运行,没有创建文件)

做快照之前虚拟机镜像:

image: vino.img
file format: qcow2
virtual size: 40G (42949672960 bytes)
disk size: 1.1G
cluster_size: 65536

做一次快照之后虚拟机镜像:

image: vino.img
file format: qcow2
virtual size: 40G (42949672960 bytes)
disk size: 1.3G
cluster_size: 65536
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
1 vino-snapshot1 187M 2014-03-03 16:30:46 00:04:24.828

得出结论:
1.第一次快照比较慢,大概需要1分30s的时间,这时候虚拟机处于挂起的状态,一个快照大概占用200M空间。
2.删除第一次快照之后,虚拟机的硬盘空间没有减少,所以如果连续做10个快照,就需要耗费将近2G空间。好消息是,删除第一次快照之后,再做一个快照,只需要5s。
3.第一次快照不删除,做第二次快照还是需要1分多钟。所以慢的原因应该是往母镜像写数据的原因。
4.回滚快照很快,大概需要10s左右。
5.回滚快照,当下的配置和做快照的时候的配置可以不一样的,比如:cpu个数一样(内存大小,外挂数据盘,没尝试,但是应该也必须一样)。比如拿cpu来说,在cpu为1的时候做了快照,如果修改配置cpu为2,回滚之后cpu变回1,且重启后还是1。[回滚的时候需要增加 --froce参数]
6.在做一次快照之后,可以删除快照,并不影响虚拟机的状态。
7.如果有多个快照的情况下。比如base---->A.snapshot---->B.snapshot。你回滚到B.snapshot的时候,你去删除A.snapshot是没问题的,给人的感觉就是每个快照都是独立的。。(还有待进一步的验证)
8.有快照的虚拟机可以destory,但是不能undefine,如果undefine需要先删除快照。
9.开机状态下做完快照,之后关闭虚拟机。然后回滚,虚拟机恢复到开机状态。

实验2:
虚拟机既有有系统盘,又有数据盘。

实验方法是在top命令运行的时候做快照。然后针对数据盘添加一些文件,之后回滚。虚拟机回滚到top命令运行的状态,且查看数据盘里没有数据。

结论是:
该快照是针对虚拟机的快照。
做完快照之后,数据盘也能回滚到快照前的状态,所以,满足针对于虚拟机的快照。

实验配置文件所用命令:
  <domainsnapshot>
<name>snapshot01</name> //快照名
<description>Snapshot of OS install and updates</description>//描述
<disks>
//什么都不填是对所以的硬盘做快照
</disks>
</domainsnapshot>
virsh snapshot-create XXXX xxx.xml
virsh snapshot-revert --force XXXX xxxx

实验3:
在代码中实现快照的创建和回滚

调用Domain类中的snapshotCreateXML(String xmlDesc)方法和revertToSnapshot(DomainSnapshot snapshot)方法

运行结果:
在从以创建的快照回滚时出现

revert requires force: Target controller type ide does not match source usb

结论:
目前libvirt在revertToSnapshot(DomainSnapshot snapshot)方法中不能支持对 --force参数的支持,在运行状态下回滚快照则需要这个参数

实验4:
在虚拟机运行状态下对系统盘做外部快照

运行结果:

error: Operation not supported: live disk snapshot not supported with this QEMU binary

结论:
目前实验室服务器中的qemu-kvm版本不支持虚拟机运行状态下做外部快照,最新的版本也不支持外部快照的回滚,只能将快照与母镜像合并来实现

实验配置文件所用命令:
  <domainsnapshot>
<name>snap1</name>
<disk name='vda' snapshot='external'>
<driver type='qcow2'/>
</disk>
</domainsnapshot>

最新文章

  1. Nim教程【十一】
  2. 团队开发——冲刺1.b
  3. 【linux】VMware12.0安装
  4. Inside TSQL Querying - Chapter 1. Logical Query Processing
  5. Flatty Shadow在线为Icon图标生成长阴影效果。
  6. org.apache.hadoop.fs-BufferedFSInputStream
  7. jqgrid使用sql row_number进行分页
  8. UPUPW PHP环境集成包
  9. Go语言搭建自己的博客
  10. Spring Boot与缓存
  11. springboo+nginx测试反向代理02
  12. Mac系统下Mysql存储数据报错 ER_TRUNCATED_WRONG_VALUE_FOR_FIELD: Incorrect string value
  13. 【Linux】-- 在linux上安装mysql及基本操作
  14. 去freessl.org申请免费ssl服务器证书
  15. JavaScript大厦之JS运算符
  16. git 完全讲解 无废话,包含在myeclipse中使用,包括解决冲突
  17. vue2.0 vs vue
  18. 移动端适配js
  19. java批量读取多个文件并存入数据库
  20. Linux学习3-Linux系统安装CentOS6.5

热门文章

  1. [css3动画]渐隐渐现
  2. redis3--key的操作
  3. [WPF] 浏览百度地图并获取经纬度地址信息
  4. tmux commands
  5. Apriori算法-数组-C语言
  6. 第六百二十六天 how cna I 坚持
  7. Python中pip安装问题解决
  8. Codeforces Round #350 (Div. 2)_D2 - Magic Powder - 2
  9. how to stop a thread
  10. Google 分布式关系型数据库 F1