参考:

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打快照原理的更多相关文章

  1. qcow2快照原理

    关键术语:cluster 一个Qcow2 img文件由固定大小的单元组成,该单元称为cluster,默认大小为65536bytes/64Ksector 数据块读写的最小单元,大小为512字节host ...

  2. 基于LVM(逻辑卷管理)的快照原理

    一.为甚么不管多大的逻辑卷进行备份,快照都会在几秒之内完成? 快照在拍摄的一瞬间,系统会记录那个时间点逻辑卷的状态.数据等,此时拍下的快照相当于一张白纸.如图所示 快照做好后,随着时间的推移,源卷里的 ...

  3. mysql备份时的快照原理

    实际上实验的结果表明,这里的 the first such read指的是:对同一个表或者不同表进行的第一次select语句建立了该事务中一致性读的snapshot. 其它update, delete ...

  4. Redis快照原理详解

    本文对Redis快照的实现过程进行介绍,了解Redis快照实现过程对Redis管理很有帮助. Redis默认会将快照文件存储在Redis当前进程的工作目录中的dump.rdb文件中,可以通过配置dir ...

  5. lvm之创建/扩容/缩容/快照及关闭的全部流程操作记录

    基本介绍Linux用户安装Linux 操作系统时遇到的一个最常见的难以决定的问题就是如何正确地给评估各分区大小,以分配合适的硬盘空间.随着 Linux的逻辑盘卷管理功能的出现,这些问题都迎刃而解, l ...

  6. hadoop之快照

    在hadoop第前几个版本中是没有快照功能的,2.x中是有这个特性的 Hadoop 2.x HDFS新特性   HDFS快照 HDFS快照     在2.x终于实现了快照     设置一个目录为可快照 ...

  7. sqlserver 关于快照

    数据库快照:是数据库某一时间点的视图,快照涉及最初目的是为了报表服务,快照还可以和镜像结合来达到读写分离的目的 数据库快照:是sqlserver数据库的只读静态视图快照的作用:1 提供了一个静态的视图 ...

  8. Redis的两种持久化方式-快照持久化和AOF持久化

    Redis为了内部数据的安全考虑,会把本身的数据以文件形式保存到硬盘中一份,在服务器重启之后会自动把硬盘的数据恢复到内存(redis)的里边,数据保存到硬盘的过程就称为"持久化"效 ...

  9. LVM常规操作记录梳理(扩容/缩容/快照等)

    基本介绍Linux用户安装Linux 操作系统时遇到的一个最常见的难以决定的问题就是如何正确地给评估各分区大小,以分配合适的硬盘空间.随着 Linux的逻辑盘卷管理功能的出现,这些问题都迎刃而解, l ...

随机推荐

  1. go 语言如何跨平台编译

    以evio源码的分析来说明: 我们看到在有些文件的头部有这样一个标识:文件链接:https://github.com/tidwall/evio/blob/master/evio_unix.go // ...

  2. python day19--面向对象,接口,封装

    #1.接口类,对象类.规范类中方法的统一. # 第一版:三个类,每个类中有相同的方法 # class Alipay: # def __init__(self,money): # self.money= ...

  3. 判断手机是安卓还是ios

    let ORZ = function() { if(!(this instanceof ORZ)) { return new ORZ; }}ORZ.prototype = { // 判断用户手机是An ...

  4. 设计一款相册APP,代替系统自带的相册功能,列举主要功能

    分析:先分析原生相册的不足,用户需求痛点,然后描述下界面设计,并说明为什么用户要使用你的产品.       iOS系统手机,自带的相机有基础的拍照,基础的美颜效果.除了本地存储,还有icloud可以存 ...

  5. ubuntu pip install MySQL-python mysql_config not found

    在安装 mysql-python时,会出现: sh: mysql_config: not found Traceback (most recent call last):   File "s ...

  6. indexOf()定义和用法

    indexOf()定义和用法 indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置. 语法 stringObject.indexOf(searchvalue,fromindex) ...

  7. 关于c风格的字符串的基本函数

    1.两个字符串的比较 //如果两个字符串相等 strcmp(s1,s2)=; //如果s1>s2 strcmp(s1,s2)>; //如果s1<s2 strcmp(s1,s2)< ...

  8. 查看Linux磁盘空间

    df -hl 查看磁盘剩余空间 df -h 查看每个根路径的分区大小 du -sh [目录名] 返回该目录的大小 du -sm [文件夹] 返回该文件夹总M数 du -h [目录名] 查看指定文件夹下 ...

  9. python:用wordcloud生成一个文本的词云

    今天学习了wordcloud库,对<三国演义>生成了词云图片,非常漂亮.就想多尝试几个,结果发现一系列问题.最常出现的一个错误就是"UnicodeDecodeError : .. ...

  10. django 增加自定义权限的一个博客,讲的很详细

    来自  https://www.cnblogs.com/huangxm/p/5770735.html