zoukankan      html  css  js  c++  java
  • kvm的live-snapshot

    目前项目中已经存在的快照是针对卷的快照,并且需要关机。所以目前的需求有两个: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>
  • 相关阅读:
    python-数据结构代码 双端队列
    python-数据结构代码 队列
    python-数据结构代码 栈
    给原有界面添加一个停止训练功能
    day_002 while循环、格式化输出(%s)、运算符、
    py_day01 变量、数据类型(int、str、bool)、if
    STL中的unique()和lower_bound ,upper_bound
    c++容器中map的应用
    结构体的sort排序
    最大子段和
  • 原文地址:https://www.cnblogs.com/babybluevino/p/3655358.html
Copyright © 2011-2022 走看看