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

操作结果参考下图:

Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十三)

另外,也可以到虚拟机镜像文件目录查看,可以发现xp_c.snap1, xp_c.snap2等也生成出来了,xp_c.snap2就是当前快照镜像,而原来的镜像xp_c.img成为了xp_c.snap1的母镜像,它成为只读了。而当前运行的C盘镜像已经是xp_c.snap2了(可以用 virsh dumpxml XP_VM 检查看看现在的虚拟机定义中的disk是怎么样的!)。

上一篇:svn无法更新解决方案


下一篇:Nodejs最好的ORM - TypeORM