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>
kvm的live-snapshot的更多相关文章
- kvm
硬件,os,内核模块,用户空间工具,命令行具体参数,日志 [root@localhost ~]# yum install pciutils [root@localhost ~]# lscpu;lspc ...
- [原创]KVM虚拟化实践记录
一.KVM简介KVM是开源软件,全称是kernel-based virtual machine(基于内核的虚拟机),是一个开源的系统虚拟化模块,基于硬件的完全虚拟化,不过需要硬件支持(如Intel V ...
- KVM 介绍(7):使用 libvirt 做 QEMU/KVM 快照和 Nova 实例的快照 (Nova Instances Snapshot Libvirt)
学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...
- [原] KVM虚拟机网络闪断分析
背景 公司云平台的机器时常会发生网络闪断,通常在10s-100s之间. 异常情况 VM出现问题时,表现出来的情况是外部监控系统无法访问,猜测可能是由于系统假死,OVS链路问题等等.但是在出现网络问题的 ...
- linux中kvm的安装及快照管理
一.kvm的安装及状态查看 1.安装软件 yum -y install kvm virt-manager libvirt2.启动libvirtd 报错,升级device-mapper-libs yum ...
- kvm 使用入门详解
kvm 是虚拟化技术的一个典型实现,功能非常强大,使用很方便.kvm 本身主要实现对 CPU 的虚拟化,内存和IO的虚拟化使用了开源软件 qemu,qemu 是纯软件层面的虚拟化,其实就是个模拟器.k ...
- KVM 虚拟化 初体验
KVM 是 Kernel-based Virtual Machine 的简称,是 Linux 下 x86 硬件平台上的全功能虚拟化解决方案: 使用 KVM ,可允许运行多个虚拟机,包括 Linux 和 ...
- 理解 QEMU/KVM 和 Ceph(2):QEMU 的 RBD 块驱动(block driver)
本系列文章会总结 QEMU/KVM 和 Ceph 之间的整合: (1)QEMU-KVM 和 Ceph RBD 的 缓存机制总结 (2)QEMU 的 RBD 块驱动(block driver) (3)存 ...
- KVM 介绍(8):使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机 [Nova Libvirt QEMU/KVM Live Migration]
学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...
- KVM 介绍(6):Nova 通过 libvirt 管理 QEMU/KVM 虚机 [Nova Libvirt QEMU/KVM Domain]
学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...
随机推荐
- javacript没有多维数组只能模拟?
为什么说javacript没有多维数组只能模拟?但是我看到是可以实现多维数组的啊!这是为什么呢?下面我们来实验下. <!DOCTYPE html> <html lang=" ...
- C#第九天
1.绝对路径和相对路径绝对路径:通过给定的这个路径直接能在我的电脑中找到这个文件. 相对路径:文件相对于应用程序的路径. 结论:我们在开发中应该去尽量的使用相对路径. 2.装箱.拆箱 装箱:就是将值类 ...
- 关于 HIVE Beeline 问题
1 启动 hiveserver2 服务,启动 beeline -u jdbc:hive2:// 正常 ,启动 beeline -u jdbc:hive2://127.0.0.1:10000 包如下错 ...
- angularjs上传图片插件使用
一. angurlajs 相关 远程 jar 包 https://code.angularjs.org/angular-1.0.1.min.js 二. 正文 1. html 部分 <!-- 需要 ...
- linux的pvtrace环境配置
1.查看当前ubuntu版本号 froid@ubuntu:~/Desktop$ lsb_release -aNo LSB modules are available.Distributor ID: ...
- MFC中MessageBeep与sndPlaySound播放声音函数使用
MessageBeep(0x00000000L); //用来播放系统默认音频文件,如0x00000000L为系统提示音,具体音频对应规则,请参照MSDN. sndPlaySound函数用来播放指 ...
- 第三十四节,pickle数据类型转换二进制字节码模块
在使用pickle模块时需要先 import pickle 引入模块 pickle.dumps()模块函数 功能:将python各种类型的数据转换成计算机识别的二进制字节码[有参] 使用方法:pick ...
- Linux中ls命令详解
ls命令是linux下最常用的命令之一,ls跟dos下的dir命令是一样的都是用来列出目录下的文件,下面我们就来一起看看ls的用法 英文全名:List即列表的意思,当我们学习某种东西的时候要做到知其所 ...
- 1305: Substring
#include <iostream>#include<string.h>#include<stdio.h> using namespace std; #defin ...
- nefu 519 昨日重现
昨日重现 Problem : 519 Time Limit : 1000ms Memory Limit : 65536K description 兴安黑熊在高中学习数学时,曾经知道这样一个公式:f(n ...