KVM 快照管理

1. 快照分类

2. 创建快照的方式

    2.1 内置快照

        2.1.1 使用 qemu-img 命令:关机状态下

        2.1.2 使用 virsh 命令(qemu-monitor-command,QEMU 监控器命令):运行状态下

        2.1.3 使用 virsh  命令(snapshot-create-as):运行状态下

    2.2 外置快照

        2.1.1 使用 qemu-img 命令(-o backing_file):关机状态下

        2.1.2 使用 virsh 命令(snapshot-create-as):运行状态下


注意要使用 KVM 的快照功能,虚拟机的硬盘一定要是 qcow2 格式,否则无法使用快照功能。

1. 快照分类
  • 磁盘快照

        对磁盘数据进行快照。主要用于虚拟机备份等场合。

    • 按快照信息保存方式,可以分为:

      • 内置快照

        • 内置磁盘快照(Internal disk snapshot):

                                快照点的磁盘状态、数据和快照和 base 磁盘数据放在一个 qcow2 文件中。
                                虚拟机运行状态和关闭状态都可以创建。

          • Libvirt 使用 'qemu-img' 命令创建关机状态的磁盘快照。

          • Libvirt 使用 'savevm' 命令创建运行状态的磁盘快照。

        • 内置系统还原点(Internal system checkpoint):

                                内存状态、设备状态和磁盘状态,可以为运行中的虚拟机创建。

                                所有信息都存储在同一个qcow2文件中,只有在运行状态才能创建内置系统还原点。

          • Libvirt 使用'savevm' 命令来创建这种快照

      • 外置快照

        • 外置磁盘快照(External disk snapshot):

                                磁盘的快照被保存在一个文件中,创建时间点以后的数据被记录到一个新的 qcow2 文件中。

                                同样可以在运行和关闭状态创建。

          • Libvirt 使用 'transaction' 命令来为运行状态创建这种快照。.

          • Libvirt 使用 'qemu-img' 命令(-o backing_file 指定后端映像)为关闭状态创建这种快照。

        • 外置系统还原点(External system checkpoint):

                                虚拟机的磁盘状态将被保存到一个文件中,内存和设备的状态将被保存到另外一个新的文件中。

    • 按虚拟机状态可以分为:

      • 关机态快照

                        数据可以保证一致性。

      • 运行态快照

                        数据无法保证一致性,类似与系统 crash 后的磁盘数据,使用时可能需要 fsck 等操作。

    • 按磁盘数量可以分为

      • 单盘

                        单盘快照不涉及原子性

      • 多盘

                        涉及原子性,主要依赖于 qemu 的 transaction 实现。主要分两个方面:

        • 1、是所有盘快照点相同;

        • 2、所有盘要么都快照成功,要么都快照失败。

  • 内存快照(VM state)

        对虚拟机的 内存/设备 信息进行保存。该机制同时用于休眠恢复,迁移等场景。

        主要使用 virsh save(qemu migrate to file)实现。

        只能对运行态的虚拟机进行。

  • 检查点快照

        同时保存虚拟机的磁盘快照和内存快照。用于将虚拟机恢复到某个时间点。可以保证数据的一致性。

2. 创建快照的方式

KVM 可以使用两种方法生成虚拟机的快照:

  • 方法一:使用 qemu-img snapshot 命令进行生成快照

  • 方法二:使用 virsh snapshot 相关命令进行生成快照(推荐)

2.1 内置快照
2.1.1 使用 qemu-img 命令:关机状态下

使用 qemu-img 创建快照、还原快照时,一定要在关机状态下,否则会搞崩虚拟机。

s1.png

[root@Mallux kvm-machine]# virsh list
 Id    Name                           State
----------------------------------------------------
 1     ubuntu                         running
 4     DBHost                         running
 
[root@Mallux kvm-machine]# qemu-img snapshot -c k1-snap Koan.img            ### 创建快照

[root@Mallux kvm-machine]# qemu-img snapshot -l Koan.img                    ### 列出快照
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         k1-snap                   0 2015-12-13 13:48:09   00:00:00.000

[root@Mallux kvm-machine]# qemu-img snapshot -a k1-snap Koan.img            ### 还原快照
2.1.2 使用 virsh 命令(qemu-monitor-command,QEMU 监控器命令):运行状态下

使用 virsh qemu-monitor-command 命令时,虚拟机需要处理于运行状态。

s2.png

[root@Mallux kvm-machine]# virsh start Koan
Domain Koan started
 
[root@Mallux kvm-machine]# virsh qemu-monitor-command Koan --hmp 'savevm k2-snap'   ### 创建快照
[root@Mallux kvm-machine]# qemu-img snapshot -l Koan.img
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         k1-snap                   0 2015-12-13 13:48:09   00:00:00.000
2         k2-snap                220M 2015-12-13 13:59:31   00:00:56.494
 
[root@Mallux kvm-machine]# virsh qemu-monitor-command Koan --hmp 'loadvm k2-snap'   ### 恢复快照
2.1.3 使用 virsh  命令(snapshot-create-as):运行状态下

快照目录:/var/lib/libvirt/qemu/snapshot/

s3.png

[root@Mallux kvm-machine]# virsh snapshot-list Koan                   ### 查看快照
 Name                 Creation Time             State
------------------------------------------------------------
 
[root@Mallux kvm-machine]# virsh snapshot-create-as Koan k3-snap      ### 创建快照
[root@Mallux kvm-machine]# virsh snapshot-list Koan
 Name                 Creation Time             State
------------------------------------------------------------
 k3-snap              2015-12-13 14:30:29 +0800 running
 
[root@Mallux kvm-machine]# qemu-img snapshot -l Koan.img
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         k1-snap                   0 2015-12-13 13:48:09   00:00:00.000
2         k2-snap                220M 2015-12-13 13:59:31   00:00:56.494
3         k3-snap                220M 2015-12-13 14:10:54   00:02:47.322
 
[root@Mallux kvm-machine]# virsh snapshot-revert Koan k3-snap         ### 还原快照
 
[root@Mallux kvm-machine]# virsh doblklist
Target     Source
------------------------------------------------
vda        /home/kvm-machine/Koan.img                                 ### 内置快照,使用同一映像
2.2 外置快照
2.1.1 使用 qemu-img 命令(-o backing_file):关机状态下
### 指定 backing_file 后端硬像时,将采用 Copy on write(写时复制机制),改变的部分以单独的文件来存储。

[root@Mallux ~]# qemu-img create -f qcow2 /home/kvm-machine/node1.img \
-o backing_file=/home/kvm-machine/CentOS.img,size=30G

[root@Mallux ~]# virt-install -n "node1" --vcpus 1 -r 512 \
--connect qemu:///system \
--disk path=/home/kvm-machine/node1.img,bus=virtio \
--network network=default,model=virtio \
--graphics vnc,listen=0.0.0.0 \
--noautoconsole \
--import

2.1.2 使用 virsh 命令(snapshot-create-as):运行状态下

[root@Mallux kvm-machine]# virsh snapshot-create-as Koan k4-snap "k4-snap description" \
--disk-only --diskspec vda,snapshot=external,file=/home/kvm-machine/k4-snap-of-Koan.img \
--atomic
error: Operation not supported: live disk snapshot not supported with this QEMU binary

[root@Mallux kvm-machine]# qemu-kvm -version
QEMU PC emulator version 0.12.1 (qemu-kvm-0.12.1.2-2.448.el6_6.4), Copyright (c) 2003-2008 Fabrice Bellard

### 测试不通过,网上说问题可能出现在内核版本和 libvirt 的版本有依赖或兼容性问题,以及 qemu 的版本的关系。

END

原创文章,作者:影·随行,如若转载,请注明出处:http://www.178linux.com/11256

(0)
影·随行影·随行
上一篇 2016-02-14 09:54
下一篇 2016-02-14 09:56

相关推荐

  • Ansible初识

    Ansible概念 ansible是自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。说…

    2017-07-08
  • Sed简介

    Sed简介    一、简介   sed全称是:Stream EDitor。sed命令的功能同awk类似,差别在于,sed简单,对列处理的功能要差一些,awk的功能复杂,对列处理的功能比较强大。  sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern s…

    Linux干货 2015-05-11
  • CentOS Linux解决Device eth0 does not seem to be present

    CentOS Linux解决Device eth0 does not seem to be present 今天早上打开xshell链接虚拟机,突然链接不上。然后进入虚拟机执行 ifconfig 或者 ip addr list 命令发现eth0 不见。然后执行重启网卡命令发现  解决办法:   首先,打开/etc/udev/rules.d/70-p…

    Linux干货 2016-08-02
  • Linux用户权限管理和信息查找

    这里给大家介绍一下基本的一些用户管理的命令。       基于这些命令演示一下例题如下:      复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@localhost&nbs…

    Linux干货 2016-11-20
  • 文本处理工具

    首先介绍一下wc 这个工具,一看到这个词,我不禁捧腹大笑,这不是我们经常要去的地方吗?其实我们都错了,厕所的正确翻译为toilet,为什么叫wc 呢?这中间还有个故事,在这里就大概说一下吧。 很早以前,厕所Toilet里都有水箱watercloset, 人们一提到water closet就想到了toilet,因此watercloset就成了toil…

    2017-07-29
  • 文本处理三剑客之vim

    由于Linux中的配置文件都是以文本方式存在的,所以在Linux的系统中使用文本编辑器来配置系统是一件很重要的事情。而vim由于程序简单、编辑速度快且能够检查编程中的语法错误,所以已成为最常用也最重要的文本处理工具。下面我们就来介绍一下。 一、vim的模式 Vim在使用过程中,基本上分为三种模式:命令模式、编辑模式与扩展命令模式。在三种模式下,我们可以执行的…

    Linux干货 2016-08-12

评论列表(1条)

  • stanley
    stanley 2016-02-14 09:56

    漂亮,已置顶