本文介绍快照相关概念及命令。当要做snapshot时,可以通过qemu的monitor terminal 或是QMP(Qemu Monitor Protocol)向QEMU发送命令,命令执行的结果是将原始的镜像(original image)变成备份镜像(backup image),同时,生成一个snapshot(又称为活动镜像, active image),与原始镜像相比,所有新的变化都将记录在活动镜像里,另外,还将原始镜像(即备份镜像)以只读限挂载的权。
1、 离线外置snapshot
磁盘的快照被保存在一个文件中,创建时间点以后的数据被记录到一个新的文件中,可以在运行和关闭状态创建.
(1)创建镜像文件
- 命令:# qemu-img create -f qcow2 centos.qcow2 5G
(2)使用创建的镜像启动虚拟机,并安装CentOS操作系统
(3)安装完虚拟机后,关闭虚拟机
(4)创建snapshot文件
-
命令:# qemu-img create -f qcow2 -b centos.qcow2 snapshot.qcow2
-
说明:-b指定的是原始镜像,快照创建完后,当前目录会生成一个 snapshot.qcow2文件 可以通过qemu-img info查看快照信息,快照的后端文件(backing file)指向的是centos.qcow2文件
(5)使用新的快照文件(snapshot.qcow2)启动虚拟机,并进行相关操作。之后的操作都将作用在snapshot.qcow2文件上
(6)当在新的虚拟机上进行的测试不理想,可以直接将快照文件删除,直接从原始镜像启动虚拟机,回到之前的状态
(7)如果想将快照里的相关操作合并到原始镜像中,可以通过下面命令
-
命令:# qemu-img commit -f qcow2 snapshot.qcow2
-
说明:此命令执行完后,会将snapshot.qcow2和其对应的后端文件进行合并,合并完后snapshot.qcow2文件依然留存。
2、 离线内置snapshot
内置snapshot指的是生成快照的相关信息保存在原始镜像中,而非创建新的快照文件。内置快照利用qcow2文件本身的特性进行实现的。
(1)创建镜像文件
- 命令:# qemu-img create -f qcow2 centos.qcow2 5G
(2)使用创建的镜像启动虚拟机,并安装CentOS操作系统
(3)安装完虚拟机后,关闭虚拟机
(4)给镜像打快照标签
-
命令:# qemu-img snapshot -c tag1 centos.qcow2
-
说明:tag1指的是快照标签名称
-
打完标签后,可以通过qemu-img snapshot -l 命令查看快照信息
(5)采用镜像文件centos.qcow2启动虚拟机,进行操作(创建一个test文件)
(6)使用快照标签tag1
-
命令:# qemu-img snapshot -a 1 centos.qcow2
-
说明:“1”对应的是tag1的ID
(7)重新启动虚拟机,发现系统已回滚到打快照标签的状态(test文件不存在)
(8)删除快照
- 命令:# qemu-img snapshot -d 1 centos.qcow2
3、 在线snapshot
在QEMU内部有一个Guest Agent Daemon(qemu-guest-agent),用来接收QEMU monitor发来的命令,并执行对应的处理函数。在线快照可以通过QEMU Monitor发来的命令进行。
(1)创建镜像文件
- 命令:# qemu-img create -f qcow2 centos.qcow2 5G
(2)使用创建的镜像启动虚拟机,并安装CentOS操作系统
(3)安装完虚拟机后,确保虚拟机运行
(4)查看block信息
-
命令:(qemu)info block
-
说明:可以看出centos.qcow2对应的设备名为ide0-hd0
(5)进行内置快照
-
命令:(qemu)savevm s1
-
说明:创建一个内置快照,名为s1
-
命令:(qemu)info snapshot
-
说明:查看内置快照信息
-
命令:(qemu)loadvm s1
-
说明:回到s1时刻状态
-
命令:(qemu)delvm s1
-
说明:删除内置快照s1
(6)进行外置快照
-
命令:(qemu) snapshot_blkdev
-
说明:为设备blockX创建一个快照文件,创建完以后,可以通过info block查看信息。新的信息中file参数已经变为snapshot文件,并新增了backing_file参数,其值指向原始镜像文件。
-
命令:(qemu)commit
-
说明:通过commit命令可以将snapshot合并(merge)到源镜像文件里。但是之后继续操作修改的还是snapshot文件,可以继续合并。
4、 Block Copy
Block Copy指的是虚拟机存储迁移。迁移时,采用Snapshot+Block stream完成存储迁移。首先通过对虚拟机进行在线外部快照,然后通过BlockStream技术合并快照,完成存储热迁移。BlockStream可以将backing file合并至active,与前面提及到的BlockCommit正好相反,可以通过下面命令完成。
-
命令:block_stream <设备名>
-
说明:可使用info block查看设备信息,发现backing_file文件已经没有,存储已经完全Copy到目的文件了。
参考文献
http://wiki.qemu.org/Features/Snapshots
由 udpwork.com 聚合
|
评论: 0
|
要! 要! 即刻! Now!