Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十三)
今天我们实验libvirt提供的快照功能,快照可以用于系统恢复,防止安装了某些软件或中病毒等情况导致系统损毁的情况。
一、快照类型
1) 磁盘快照
内部的:快照驻留在原来的镜像文件内部
外部的:快照以一个新的外部独立文件的形式存在,在此之后,原镜像变成只读,所有改变记录到快照文件里
磁盘快照由virsh snapshot-create命令创建
2) 内存快照
可以将虚拟机的内存信息记录到一个文件
由 virsh save 命令创建
3) 系统检查点
1) 和2)的结合,类似休眠的功能。
二、快照命令
Libvirt提供的Snapshot相关的命令有以下一些:
Snapshot-create Snapshot-create-as Snapshot-current Snapshot-delete Snapshot-dumpxml Snapshot-edit Snapshot-info Snapshot-list Snapshot-parent Snapshot-revert |
1. Snapshot-create
Libvirt既支持在虚拟机关闭的情况下打快照,也支持在虚拟机运行的情况下打快照。今天重点实验在虚拟机运行的情况下打快照的情况。
启动虚拟机(虚拟机域名是XP_VM)后,在virsh命令行下打一个snapshot的命令如下:
Virsh # snapshot-create XP_VM |
这个命令执行的是对XP_VM这个虚拟机执行磁盘和内存的snapshot,时间比较长,一般要花费5-10分钟,不是太实用。一般做快照的目的是防止镜像损毁,更关注的是只对磁盘打快照,而且希望把快照放在一个单独的镜像文件里。这时候我们就要用到一种外部快照的概念,方法如下:
先禁用apparmor(否则做外部快照的时候会报Permission Denied),请参考链接:http://blog.csdn.net/hbsong75/article/details/9285753
其次定义一个snapshot-create 的XML文件:
<domainsnapshot> <name>snap1</name> <disk name='hda' snapshot='external'> <driver type='qcow2'/> </disk> <disk name='hdb' snapshot='no'/> </domainsnapshot> |
上述定义说明为虚拟机的C盘(hda)做一个名字为<imageName>.snap1的外部快照;而D盘不需要做快照。该XML保存为domainsnapshot.xml
第三,执行下面的命令:
Virsh# snapshot-create XP_VM /opt/vm/xpvm1/domainsnapshot.xml –disk-only |
只对磁盘做外部快照执行就非常快,几秒钟就完成。
第四,用snapshot-list命令检查快照列表:
Virsh# snapshot-list XP_VM |
操作结果参考下图:
另外,也可以到虚拟机镜像文件目录查看,可以发现xp_c.snap1, xp_c.snap2等也生成出来了,xp_c.snap2就是当前快照镜像,而原来的镜像xp_c.img成为了xp_c.snap1的母镜像,它成为只读了。而当前运行的C盘镜像已经是xp_c.snap2了(可以用 virsh dumpxml XP_VM 检查看看现在的虚拟机定义中的disk是怎么样的!)。
Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十三)的更多相关文章
- Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(八)
Libvirt 是用c写的一个管理虚拟机及其资源(如网络.存储和外设等)的工具库,它不仅支持KVM/QEMU,它还支持xen,Vmware,OpenVZ和VirtualBox等其他HyperVisor ...
- Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(三)
原则上来说,qemu, libvirt, libusb, usbredir, spice等都可以通过 apt-get install的方式从Ubuntu源在线安装.但是这样如果碰到一点问题,就比较难办 ...
- Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十五)
接下来我们试验虚拟机的网络配置功能,KVM虚拟机网络配置主要有两种方式:NAT方式和Bridge方式.今天我们主要理解和实验NAT方式的网络配置. NAT方式是kvm安装后的默认方式,它支持主机与虚拟 ...
- Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十六)
今天我们继续实验Bridge方式的网络配置. Bridge的逻辑原理图如下: 上图中的“br0”就充当了一个桥的作用,主机上的物理网口eth0等根据需要加入到这个桥里面,所有虚拟机要跟外界通信都通过这 ...
- Mac下搭建基于PlatformIO的嵌入式开发环境(STM32开发)
PlatformIO简介 PlatformIO是开源的物联网开发生态系统.提供跨平台的代码构建器.集成开发环境(IDE),兼容 Arduino,ESP8266和mbed等 支持在Windows.Lin ...
- 小白秒懂的Windows下搭建基于pytorch的深度学习环境
配置环境总体思路 1.依据python版本选择对应Anaconda版本: 2.依据显卡驱动版本选择对应的CUDA版本: 3.依据CUDA版本选择对应的cudnn和pytorch版本. 一.Anacon ...
- Windows 7下 搭建 基于 ssh 的sftp 服务器
Windows xp 下 搭建 基于 ssh 的sftp 服务器,服务器端可以用 freesshd,F-secure server等,filezilla server不可用,之前傻乎乎的用file ...
- ubuntu12.10下OpenFoam的编译
最近在ubuntu12.10下编译OpenFoam,遇到一些问题,小记一下. 首先到官网下载源码包(我这里下载的是OpenFOAM-2.3.0.tgz,ThirdParty-2.3.0.tgz). 1 ...
- [IDS]CentOS6.6下搭建基于snort+barnyard2+base的入侵检测系统,超详细!!!
最详细的CentOS6.6下搭建基于snort+barnyard2+base的入侵检测系统免责声明一.如果因为使用本文档照成损失(系统崩溃.数据丢失等),作者不承担任何责任.二.本文档只是个人使用本文 ...
随机推荐
- linux shell中的单引号与双引号的区别(看完就不会有引号的疑问了)(转)
tips: ============================= IFS - LINUX字段分隔符,内部字段分隔符 IFS(Internal Field Seperator)在Linux的she ...
- 14.8.3 Identifying the File Format in Use 确认使用的文件格式;
14.8.3 Identifying the File Format in Use 确认使用的文件格式: 如果 你启用一个不同的文件格式使用 innodb_file_format configurat ...
- iPhone App开发实战手册学习笔记(9)之设计IOS App的目标
1 前言 如果我们要做一个属于自己的App需要达到那些目标呢,今天就来介绍一下. 2 详述 2.1 关注用户及其需求 你的主要目标永远都是在设计方案之前先想好用户用例.有些开发人员喜欢编写用户故事来确 ...
- 【ASP.NET Web API教程】5.5 ASP.NET Web API中的HTTP Cookie
原文:[ASP.NET Web API教程]5.5 ASP.NET Web API中的HTTP Cookie 5.5 HTTP Cookies in ASP.NET Web API 5.5 ASP.N ...
- Please verify you invoked Maven from the correct directory
解决办法: 在cmd中,把当前路径转换到一个含有pom文件的 项目路径下 再使用 类似下面的deploy就行 mvn deploy:deploy-file -DgroupId=com.taobao.n ...
- 混淆器:java程序保护如何知识产权,特别提供一个java 开发的java 源代码级的混淆器
java程序保护如何知识产权,特别提供一个java 开发的java 源代码级的混淆器 下载地址:http://yunpan.cn/QXhEcGNYLgwTD 运行方式:java -jar Encryp ...
- 使用Curl进行抓取远程内容时url中文编码问题
PHP中对于URL进行编码,可以使用 urlencode() 或者 rawurlencode(),二者的区别是前者把空格编码为 '+',而后者把空格编码为 '%20',不过应该注意的是,在编码时应该只 ...
- ASP.NET常被忽视的一些细节
原文:ASP.NET常被忽视的一些细节 前段时间碰到一个问题:为什么在ASP.NET程序中定时器有时候会不工作? 这个问题看起来很奇怪,代码好像也没错,但就是结果与预期不一致. 其实这里是ASP.NE ...
- c#2解决c#1中的问题之用泛型实现参数化类型
为什么需要泛型 你手中还有c#1的代码吗?数一数其中的强制转换有多少,特别是那些大量使用集合的代码.几乎每次使用foreach都需要隐式的强制转换.使用那些为不同数据类型而设计的类型,就意味着强制转换 ...
- Java线程状态及Thread类中的主要方法
要想实现多线程,就必须在主线程中创建新的线程对象. 不论什么线程一般具有5种状态,即创建,就绪,执行,堵塞,终止. 创建状态: 在程序中用构造方法创建了一个线程对象后,新的线程对象便处于新建状态,此时 ...