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设备直接分 ...
随机推荐
- 如何将编译出来的images拷贝到windows下面刷机
由于SPRD的刷机工具ResearchDownload运行在window环境下:这样,我们平时在开发环境下编译出来的镜像文件就不能直接用于刷机了. 这里涉及到一个双系统中文件共享的方法.由于企业信息安 ...
- redis数据类型:hashes
redis hash 是一个string类型的field和value的映射表. 它的添加.删除操作都是O(1)(平均),hash特别适合用于存储对象 将一个对象存储在hash类型总会占用更少的内存,并 ...
- 设n是奇数,证明:16|(n4+4n2+11)(整除原理1.1.1)
设n是奇数,证明:16|(n4+4n2+11) 解: 令n=2k+1,k∈z n4+4n2+11 =(2k+1)4+4(2k+1)2+11 =(4k2+4k+1)2+(2k+1)2+11 =16k4+ ...
- a标签中使用img后的高度多了几个像素
a元素下有一个匿名文本,这个文本外有一个匿名行级盒子,它有的默认vertical-align是baseline的,而且往往因为上文line-height的影响,使它有个line-height,从而使其 ...
- 1.建立exception包,编写TestException.java程序,主方法中有以下代码,确定其中可能出现的异常,进行捕获处理。
package d0923; public class TestException { public static void main(String[] args) { for(int i=0;i&l ...
- table可更改th大小的jQuery插件
(function ($) { $.fn.resizetable = function () { var tableObj = $(this); var inResizeRange = false; ...
- postgresql 修改属性
up vote2down votefavorite From this article, I tried to update or delete property of a JSONB column: ...
- jQuery(1)——了解jQuery
jQuery 终于开始了jQuery的学习了,好开心,虽然感觉JavaScript并没有学好,尴尬.木事,咋们慢慢来.fighting [jQuery简介] jQuery是继Prototype之后又一 ...
- H5加载优化
- 拦截asp.net mvc输出流做处理, 拦截HTML文本(asp.net MVC版)
以前的一个贴子写过一个webForm的拦截HTML输出流的版本,最近用到mvc时用同样的方式发生一些问题. 如下图 查了好久也不知道啥原因. 好吧, 我最后选择放弃. 想起以前自定义Response. ...