# qemu-img info /opt/vms/centos63-119.22.img
image: /opt/vms/centos63-119.22.img
file format: qcow2
virtual size: 40G (42949672960 bytes)
disk size: 136K
cluster_size: 65536
2). 如果不是qcow2需要关机转换磁盘格式,如果是请跳过
# cp centos63-119.22.img centos63-119.22.raw
# qemu-img convert -f raw -O qcow2 centos63-119.22.raw centos63-119.22.img
3). 启动vm, 建立快照,以后可以恢复
# virsh start centos63-119.22
# virsh snapshot-create centos63-119.22
4). 快照位置
快照配置文件在/var/lib/libvirt/qemu/snapshot/虚拟机实例名称/下
5). 恢复快照,可以建立一些测试文件,准备恢复
先将虚拟机关闭,查看快照名称,然后恢复快照
# ls /var/lib/libvirt/qemu/snapshot/centos63-119.22
1410341560.xml
# virsh snapshot-revert centos63-119.22 1410341560
6). 删除快照
# qemu-img info centos63-119.22
1 1410341560 228M 2014-04-08 10:26:40 00:21:38.053
# virsh snapshot-delete centos63-119.2 1410341560
实例一 使用qemu-img命令使用快照
kvm环境下qcow2的镜像支持快照
1 确认镜像的格式
[root@nc1 boss]# qemu-img info test.qcow2
image: test.qcow2
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 1.6G
cluster_size: 65536
2 为镜像test.qcow2创建快照,创建快照并没有产生新的镜像,虚拟机镜像大小增加,快照应属于镜像。
[root@nc1 boss]#qemu-img snapshot -c snapshot01 test.qcow2
[root@nc1 boss]#qemu-img snapshot -c snapshot02 test.qcow2
快照名 镜像名
3 列出某个镜像的所有快照
[root@nc1 boss]#qemu-img snapshot -l test.qcow2
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
1 snapshot01 0 2011-09-07 15:39:25 00:00:00.000
2 snapshot02 0 2011-09-07 15:39:29 00:00:00.000
4 使用快照
[root@nc1 boss]#qemu-img snapshot -a snapshot01 test.qcow2
5 删除快照
[root@nc1 boss]#qemu-img snapshot -d snapshot01 test.qcow2
附:
'snapshot' is the name of the snapshot to create, apply or delete
'-a' applies a snapshot (revert disk to saved state)
'-c' creates a snapshot
'-d' deletes a snapshot
'-l' lists all snapshots in the given image
实例二 利用libvirt使用快照
1 同样先确认镜像的格式为qcow2
[root@nc1 boss]#qemu-img info test.qcow2
image: test.qcow2
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 1.1G
cluster_size: 65536
2 创建并启动以test.qcow2作为镜像的虚拟机,假设虚拟机名称为testsnp,如果虚拟机没有启动,也可创建快照,但是意义不大,快照size为0
开始使用配置文件来创建指定虚拟机的快照
保存为snp.xml,开始创建
[root@nc1 boss]#virsh snapshot-create testsnp snp.xml //即以snp.xml作为快照的配置文件为虚拟机testsnp创建快照
Domain snapshot snapshot02 created from 'snp.xml'
3 查看虚拟机testsnp已有的快照
[root@nc1 boss]# virsh snapshot-list testsnp
Name Creation Time State
---------------------------------------------------
1315385065 2011-09-07 16:44:25 +0800 running //1315385065创建时间比snapshot02早
snapshot02 2011-09-07 17:32:38 +0800 running
同样地,也可以通过qemu-img命令来查看快照
[root@nc1 boss]# qemu-img info test.qcow2
image: test.qcow2
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 1.2G
cluster_size: 65536
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
1 1315385065 149M 2011-09-07 16:44:25 00:00:48.575
2 snapshot02 149M 2011-09-07 17:32:38 00:48:01.341
4 可以通过snapshot-dumpxml命令查询该虚拟机某个快照的详细配置
[root@nc1 boss]# virsh snapshot-dumpxml testsnp 1315385065
查看第二个snapshot
[root@nc1 boss]# virsh snapshot-dumpxml testsnp snapshot02
5 查看最新的快照信息
[root@nc1 boss]# virsh snapshot-current testsnp
6 使用快照,指定使用哪一个快照恢复虚拟机
[root@nc1 boss]# virsh snapshot-revert testsnp snapshot02
7 删除指定快照
[root@nc1 boss]# virsh snapshot-delete testsnp snapshot02
Domain snapshot snapshot02 deleted
附:
Snapshot (help keyword 'snapshot')
snapshot-create Create a snapshot from XML
snapshot-create-as Create a snapshot from a set of args
snapshot-current Get the current snapshot
snapshot-delete Delete a domain snapshot
snapshot-dumpxml Dump XML for a domain snapshot
snapshot-list List snapshots for a domain
snapshot-revert Revert a domain to a snapshot
因为要做有关KVM虚拟机的实验,所以需要虚拟机生成快照。查询相关资料,说KVM可以使用两种方法生成虚拟机的快照。
方法一、使用qemu-img snapshot命令进行生成快照
方法二、使用virsh snapshot-create-as命令进行生成快照
其实经过我的测试,发现使用qemu-img snapshot命令生成快照后,即使恢复快照也是没有用的。虚拟机还是当前的状态,而不是快照之前的状态。不知道为什么,而且还不稳定,经常报错。
注意要使用KVM的快照功能,虚拟机的硬盘一定要是qcow2格式,否则无法使用快照功能。
不过在介绍之前,我们还是把第一种方法使用qemu-img snapshot命令生成快照的相关命令介绍下。
其实我们是可以直接通过命令的帮助查询到有关qemu-img snapshot使用方法的。
本次实验我们已虚拟机centos为例,已centos虚拟机安装ftp命令前后做快照。
我们先来创建一个快照,使用如下命令:
qemu-img snapshot -c centos_install_ftp /vhostdisk/centos.img 创建快照
qemu-img snapshot -l /vhostdisk/centos.img 查询快照
qemu-img snapshot -d centos_install_ftp /vhostdisk/centos.img 删除快照
注意,其中centos_install_ftp为快照名称,/vhostdisk/centos.img为原虚拟机。
刚刚在使用qemu-img snapshot进行相关测试发现,居然把我的虚拟机给搞坏了。唉,真是坑爹啊,怪不得网络上的资料显示使用这个有问题呢。强烈建议,还是使用第二种方法吧。
以上是qemu-img snapshot创建KVM快照的方法,现在我们来介绍使用virsh snapshot-create-as来生成虚拟机快照的方法。
Centos虚拟机未安装ftp命令,创建快照如下:
snapshot-create-as centos centos_install_ftp
为虚拟机centos创建快照,快照名称为centos_install_ftp
snapshot-list centos查看虚拟机centos所有的快照
snapshot-info centos centos_uninstall_ftp
查看虚拟机centos快照centos_uninstall_ftp详细信息
snapshot-create-as centos centos_install_ftp