使用libvirtAPI打快照原理
参考:
https://blog.51cto.com/3646344/2096347
https://blog.51cto.com/3646344/2096351(磁盘外部快照)
API接口:
http://www.cnblogs.com/sammyliu/p/4558638.html
qemu-guest-agent冻结文件系统保证数据的一致性:
https://blog.csdn.net/zouyee/article/details/49103077
公司项目虚拟机打快照流程:

关机状态下打快照:
在给虚拟机打快照的时候,如果是给关闭状态下的虚拟机打快照,如果是从磁盘启动的虚拟机快照就调用qemu命令打快照,如果是从云硬盘启动的快照,需要创建云硬盘快照,用ceph打快照。最后如果虚拟机挂载有云硬盘,则尝试对所有的云硬盘创建快照,如果有一块创建失败则整个任务失败。
开机状态下打快照:
在给虚拟机打快照的时候,如果是给开机状态下的虚拟机打快照,如果是从磁盘启动的快照就直接打快照,先判断该虚拟机有没有内存,如果有内存我们需要用qemu-ga对虚拟机文件系统进行短暂的冻结,agent冻结文件系统时会进行flush操作,保证了数据的一致性,然后再用libvirt命令打快照,如果没有内存就用qemu打快照。如果是从云硬盘启动的快照,需要创建云硬盘快照。最后如果虚拟机挂载有云硬盘,则尝试对所有的云硬盘创建快照,如果有一块创建失败则整个任务失败。
对从磁盘启动的虚拟机用qemu(冷快照,内部快照)和libvirt(热快照,外部快照)工具打快照,从云硬盘启动的虚拟机用ceph打快照
qemu-kvm1.5.3版本不支持在虚拟机开机的情况下创建外部快照,只有在虚拟机关闭的情况下创建外部快照,创建快照的时间在1s以内,并且创建出来的快照文件大小递增且在10M以上
qemu2.5版本中支持在虚拟机开机的情况下创建外部快照,在创建第一个外部快照时用时在10~20S,往后创建外部快照时均为1s以内;并且创建的快照大小为第一个快照较大,往后的快照大小均不足1M。
回滚虚拟机流程:

使用libvirtAPI打快照原理的更多相关文章
- qcow2快照原理
关键术语:cluster 一个Qcow2 img文件由固定大小的单元组成,该单元称为cluster,默认大小为65536bytes/64Ksector 数据块读写的最小单元,大小为512字节host ...
- 基于LVM(逻辑卷管理)的快照原理
一.为甚么不管多大的逻辑卷进行备份,快照都会在几秒之内完成? 快照在拍摄的一瞬间,系统会记录那个时间点逻辑卷的状态.数据等,此时拍下的快照相当于一张白纸.如图所示 快照做好后,随着时间的推移,源卷里的 ...
- mysql备份时的快照原理
实际上实验的结果表明,这里的 the first such read指的是:对同一个表或者不同表进行的第一次select语句建立了该事务中一致性读的snapshot. 其它update, delete ...
- Redis快照原理详解
本文对Redis快照的实现过程进行介绍,了解Redis快照实现过程对Redis管理很有帮助. Redis默认会将快照文件存储在Redis当前进程的工作目录中的dump.rdb文件中,可以通过配置dir ...
- lvm之创建/扩容/缩容/快照及关闭的全部流程操作记录
基本介绍Linux用户安装Linux 操作系统时遇到的一个最常见的难以决定的问题就是如何正确地给评估各分区大小,以分配合适的硬盘空间.随着 Linux的逻辑盘卷管理功能的出现,这些问题都迎刃而解, l ...
- hadoop之快照
在hadoop第前几个版本中是没有快照功能的,2.x中是有这个特性的 Hadoop 2.x HDFS新特性 HDFS快照 HDFS快照 在2.x终于实现了快照 设置一个目录为可快照 ...
- sqlserver 关于快照
数据库快照:是数据库某一时间点的视图,快照涉及最初目的是为了报表服务,快照还可以和镜像结合来达到读写分离的目的 数据库快照:是sqlserver数据库的只读静态视图快照的作用:1 提供了一个静态的视图 ...
- Redis的两种持久化方式-快照持久化和AOF持久化
Redis为了内部数据的安全考虑,会把本身的数据以文件形式保存到硬盘中一份,在服务器重启之后会自动把硬盘的数据恢复到内存(redis)的里边,数据保存到硬盘的过程就称为"持久化"效 ...
- LVM常规操作记录梳理(扩容/缩容/快照等)
基本介绍Linux用户安装Linux 操作系统时遇到的一个最常见的难以决定的问题就是如何正确地给评估各分区大小,以分配合适的硬盘空间.随着 Linux的逻辑盘卷管理功能的出现,这些问题都迎刃而解, l ...
随机推荐
- 二十四. Python基础(24)--封装
二十四. Python基础(24)--封装 ● 知识结构 ● 类属性和__slots__属性 class Student(object): grade = 3 # 也可以写在__slots ...
- php 安装redis
https://www.cnblogs.com/yuuje/p/8243234.html
- mongodb安装建议
1)软件包的选择 确保使用最新的稳定版本.目前我们线上使用的版本是2.4.6.MongoDB软件包下载页面http://www.mongodb.org/downloads. 确保线上环境总是使用64位 ...
- java中一些对象(po,vo,dao,pojo)等的解释
一.PO:persistant object 持久对象,可以看成是与数据库中的表相映射的java对象.最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合.PO中应该不包含任何对 ...
- Qt中的Q_D宏和d指针
_ZTS7QObject 一.Q_D的在文件中的提法 Q_D的设置意在方便地获取私有类指针,文件为qglobal.h.下面的##是宏定义的连字符.假设类名是A,那么A##Private翻译过来就是AP ...
- nodejs -- http模块. request() 方法 , get方法.
1. request方法: 提交评论到慕课网: var http = require('http'); var querystring = require('querystring'); var po ...
- python day28--json,pickle,hashlib,logging
一.json格式的限制 1.json格式的key必须是字符串数据类型,如果是数字dumps后会被转为字符串. # dic = {1:2,3:4} # str_dic = json.dumps(dic) ...
- WEBBASE篇: 第七篇, JavaScript知识1
JavaScript 1 一.JavaScript 概述什么是JavaScript: JavaScript 简称 JS,是一种专门运行于JS解释器/引擎中的解释型脚本语言JS发展史: 1.1992年N ...
- MP和OMP算法
转载:有点无耻哈,全部复制别人的.写的不错 作者:scucj 文章链接:MP算法和OMP算法及其思想 主要介绍MP(Matching Pursuits)算法和OMP(Orthogonal Matchi ...
- Python全栈之路----类型转换
显式转换 int(x [,base]) ⇒ 将x转换为一个十进制的整数 long(x [,base]) ⇒ 将x转换为一个十进制的长整数 float(x) ⇒ 将x转换为一个浮点数 str(objec ...