• 使用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

    回滚虚拟机流程:

  • 相关阅读:
    MindMup 是一个开源的、在线的、简单的思维导图工具
    那些年我们用过的Python代码
    我心目中要求不高的理想团队
    与雨林再辩科学、宗教和道
    MySQL(一) 数据表数据库的基本操作
    hibernate(六) cascade(级联)和inverse关系详解
    java虚拟机内存区域的划分以及作用详解
    MySQL(二) 数据库数据类型详解
    MySQL(三) 数据库表的查询操作【重要】
    MySQL(四) 数据表的插入、更新、删除数据
  • 原文地址:https://www.cnblogs.com/girl1314/p/10555643.html
Copyright © 2020-2023  润新知