[待整理]KVM 快照创建,使用,删除
使用libvirt创建的虚拟机,默认格式为raw,要想使用快照功能,需要先将其转换格式。1:qemu-img snapshot -c base_sys_centos5.564bit.img CentOS5.5_64bit.img
在现有镜像基础上创建一个快照。
报如下错误:
emu-img: Could not create snapshot 'base_sys_centos5.564bit.img': -95 (Operation not supported)
2:怀疑是文件格式不对,查看一下。
qemu-img info CentOS5.5_64bit.img
image: CentOS5.5_64bit.img
file format: raw
virtual size: 20G (21474836480 bytes)
disk size: 3.4G
果然是raw格式
3:使用如下命令将raw格式的镜像转化为qcow2格式。
qemu-img convert -f raw -O qcow2 CentOS5.5_64bit.img CentOS5.5_64bit_basesys_qcow2.img
4:转换成功后,再次对镜像创建一个快照 (创建快照需关机状态)
qemu-img snapshot -c CentOS5.5_64bit_Qcow2_basesys.img CentOS5.5_64bit_Qcow2.img
OK,创建成功。
该步并不会创建一个新的镜像,可以使用如下命令来查看指定的镜像上是否存在快照,并在合适的时候,恢复快照。
qemu-img snapshot -l CentOS5.5_64bit_Qcow2.img
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
1 CentOS5.5_64bit_Qcow2_basesys.img 0 2011-07-21 23:17:38 00:00:00.000
恢复快照:( -a后面的快照镜像需要手动输入 , 命令执行后需重启生效,最好在关机状态下回滚快照)
qemu-img snapshot -a CentOS5.5_64bit_Qcow2_basesys.img CentOS5.5_64bit_Qcow2.img
其他操作:
'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
======================================================================
实例一使用qemu-img命令使用快照
kvm环境下qcow2的镜像支持快照
1 确认镜像的格式
# 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创建快照,创建快照并没有产生新的镜像,虚拟机镜像大小增加,快照应属于镜像。
#qemu-img snapshot -c snapshot01 test.qcow2
#qemu-img snapshot -c snapshot02 test.qcow2
快照名 镜像名
3 列出某个镜像的所有快照
#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 使用快照
#qemu-img snapshot -a snapshot01 test.qcow2
5 删除快照
#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
#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
开始使用配置文件来创建指定虚拟机的快照
snapshot02 //快照名
Snapshot of OS install and updates//描述
//虚拟机镜像的绝对路径
保存为snp.xml,开始创建
#virsh snapshot-create testsnp snp.xml//即以snp.xml作为快照的配置文件为虚拟机testsnp创建快照
Domain snapshot snapshot02 created from 'snp.xml'
3 查看虚拟机testsnp已有的快照
# 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命令来查看快照
# 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命令查询该虚拟机某个快照的详细配置
# virsh snapshot-dumpxml testsnp 1315385065
1315385065
Snapshot of OS install and updates
running //虚拟机状态虚拟机关机状态时创建的快照状态为shutoff(虚拟机运行时创建的快照,即使虚拟机状态为shutoff,快照状态依然为running)
1315385065 //虚拟机的创建时间 Readonly 由此可以看出没有给快照指定名称的话,默认以时间值来命名快照
afbe5fb7-5533-d154-09b6-33c869a05adf //此快照所属的虚拟机(uuid)
查看第二个snapshot
# virsh snapshot-dumpxml testsnp snapshot02
snapshot02
Snapshot of OS install and updates
running
1315385065 //当前快照把前一个快照作为parent
1315387958
afbe5fb7-5533-d154-09b6-33c869a05adf
5 查看最新的快照信息
# virsh snapshot-current testsnp
1315385065
Snapshot of OS install and updates
running
1315385065
afbe5fb7-5533-d154-09b6-33c869a05adf
6 使用快照,指定使用哪一个快照恢复虚拟机
# virsh snapshot-revert testsnp snapshot02
7 删除指定快照
# 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
============================================================
一、简介:
snapshot(快照)可以把虚拟机某个时间点的内存、磁盘文件等的状态保存为一个镜像文件。通过这个镜像文件,可以在以后的任何时间来恢复虚拟机在当时创建snapshot的状态,这个在使用虚拟机来做测试的时候很有用。
二、创建快照-KVM:
需注意在虚拟机运行时创建快照不会报错,但会出现一些莫名其妙的问题,像恢复快照失败、快照名为空等,所以在创建快照前要先关闭虚拟机。
2.1创建
//raw格式
kvm虚拟机的raw格式磁盘文件不支持快照功能,在创建快照前需要先转换为qcow或qcow2格式。
# qemu-img info disk.raw
image: disk.raw
file format: raw
virtual size: 100M (104857600 bytes)
disk size: 6.1M
# qemu-imgsnapshot -c s1 disk.raw //raw格式的转换报错
qemu-img: Could not create snapshot'snapshot01': -95 (Operation not supported)
//qcow2格式
# qemu-img info disk.qcow2
image:disk.qcow2
file format: qcow2
virtual size: 100M (104857600 bytes)
disk size: 4M
# qemu-imgsnapshot -c s1 disk.qcow2
# qemu-img infodisk01.qcow2 //可以看到刚新建的快照s1
image: disk.qcow2
file format: qcow2
virtual size: 100M (104857600 bytes)
disk size: 80M
cluster_size: 65536
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
1 s1 02012-05-10 15:20:40 00:00:00.000
# ls -lh
总用量 7G
-rw-r--r--. 1 qemu qemu 108M5月 10 15:03 disk.qcow2
-rw-r--r--. 1 qemu qemu 6.5G5月 10 15:03xp_4_test.img
创建快照后不会有新的镜像文件产生;disk.qcow2镜像文件创建时的大小为100M,这里显示的大小为108M,这是因为快照位于disk.qcow2镜像文件内而没有单独生成一个文件。
2.2列出镜像的所有快照
# qemu-imgsnapshot -l disk.qcow2
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
1 s1 02012-05-10 15:20:40 00:00:00.000
2 s2 02012-05-10 15:32:37 00:00:00.004
2.3快照恢复
恢复快照同样也需要在关闭虚拟机的情况下进行,下面的恢复会使虚拟机恢复到2012-05-10 15:20:40的状态,在此时间点后对磁盘disk.qcow2的操作将全部失效
# qemu-imgsnapshot -a s1 disk.qcow2
2.4 删除快照
# qemu-imgsnapshot -d s1 disk.qcow2
三、创建快照-convirture:
使用convirture来创建、恢复快照同样需要在关闭虚拟机的情况下进行,但不同的是convirture会将系统状态另外生成一个压缩的镜像文件。
3.1创建快照
//指定快照的保存路径和文件名
3.1恢复快照
//选择需要恢复的快照文件
==============================================================
kvm虚拟机快照
kvm默认的文件格式是raw,也就是使用文件来模拟实际的硬盘(当然也可以使用一块真实的硬盘或一个分区),不过raw格式只支持内存
快照(就是启动的时候加-snapshot,所有更改都写到内存),重启之后就没了。raw格式不支持磁盘快照,因此要使用qcow或qcow2文件格式。
1、要创建qcow2格式的虚拟机镜像文件
# qemu-img create -f qcow2 /virhost/kvm_node/node4.img 20G
参数-f指定格式,如果不指定默认的是raw。
# qemu-img info node4.img #查看镜像文件格式
image: node4.img
file format: qcow2
virtual size: 20G (21495808000 bytes)
disk size: 6.3G
cluster_size: 65536
2、把raw格式转换成qcow2格式:
# qemu-img convert -f raw -O qcow2 /virhost/kvm_node/node5.img /virhost/kvm_node/node5_qcow2.img
3、为虚拟机node4创建一个快照
# ls /root/ #/root/下无文件
# virsh snapshot-create-as node4 node4.snap1
# qemu-img info node4.img
image: node4.img
file format: qcow2
virtual size: 20G (21495808000 bytes)
disk size: 6.3G
cluster_size: 65536
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
1 node4.snap1 401M 2012-04-10 12:04:42 22:02:04.672
4、修改node4系统文件并通过snapshot文件恢复
# scp node5:/root/* . #从node5上复制文件
root@node5's password:
anaconda-ks.cfg 100% 1224 1.2KB/s 00:00
scp: /root/Desktop: not a regular file
install.log 100% 34KB33.7KB/s 00:00
install.log.syslog 100% 4232 4.1KB/s 00:00
nginx-0.7.65.tar.gz 100%590KB 590.3KB/s 00:00
pcre-8.02.tar.gz 100% 1218KB 1.2MB/s 00:00
php-5.2.13-fpm-0.5.13.diff.gz 100%197KB 196.6KB/s 00:00
php-5.2.13.tar.gz 0% 0 0.0KB/s --:-- ETAlphp-5.2.13.tar.gz 100% 11MB 11.2MB/s 00:01
scp: /root/webbench-1.5: not a regular file
webbench-1.5.tar.gz 100% 7675 7.5KB/s 00:00
# ls
anaconda-ks.cfginstall.log.syslog pcre-8.02.tar.gz php-5.2.13.tar.gz
install.log nginx-0.7.65.tar.gzphp-5.2.13-fpm-0.5.13.diff.gzwebbench-1.5.tar.gz
# virsh snapshot-create-as node4 node4.snap2 #为虚拟机node4当前状态创建快照
# virsh snapshot-list node4 #查看node4的快照
名称 Creation Time 状态
------------------------------------------------------------
node4.snap1 2012-04-11 00:47:06 +0800 paused
node4.snap2 2012-04-11 01:19:06 +0800 running
# virsh snapshot-revert node4 node4.snap1 #从快照文件node4.snap1恢复node4
# ls /root/ #/root/下无文件,恢复成功
# virsh snapshot-revert node4 node4.snap2#从快照文件node4.snap2恢复node4
# ls #恢复成功
anaconda-ks.cfginstall.log.syslog pcre-8.02.tar.gz php-5.2.13.tar.gz
install.log nginx-0.7.65.tar.gzphp-5.2.13-fpm-0.5.13.diff.gzwebbench-1.5.tar.gz
5、删除快照
# virsh snapshot-delete node4 node4.snap1
6、利用qemu-img创建镜像文件的snapshot
创建快照
qemu-img snapshot -c node4.snap1 /virhost/kvm_node/node4.img
#测试该命令创建快照大小总是为0,不知哪位大神能解决
查看快照
qemu-img snapshot -l /virhost/kvm_node/node4.img
把虚拟机恢复到某个快照的状态:
qemu-img snapshot -a snapshot-name /path/to/os.img
删除某个快照:
qemu-img snapshot -d snapshot-name /path/to/os.img
页:
[1]