KVM快照

KVM快照就是将虚拟机在某一个时间点上的磁盘内容(全部/或部分)、内存和设备状态保存一下,以备将来恢复之用。

一、内存状态快照:只是保持内存和虚机使用的其它资源的状态。如果虚机状态快照在做和恢复之间磁盘没有被修改,那么虚机将保持一个持续的状态;如果被修改了,那么很可能导致数据corruption。
virsh save命令,对运行中的vm01运行 “virsh save” 命令。命令执行完成后,vm01变成 “shut off” 状态。

[root@localhost ~]# virsh save --help
  NAME
    save - save a domain state to a file

  SYNOPSIS
    save <domain> <file> [--bypass-cache] [--xml <string>] [--running] [--paused] [--verbose]

  DESCRIPTION
    Save the RAM state of a running domain.

  OPTIONS
    [--domain] <string>  domain name, id or uuid
    [--file] <string>  where to save the data
    --bypass-cache   avoid file system cache when saving
    --xml <string>   filename containing updated XML for the target
    --running        set domain to be running on restore
    --paused         set domain to be paused on restore
    --verbose        display the progress of save

使用save命令进行内存快照的制作,把当前的内存数据保存到一个文件。

[root@localhost ~]# mkdir /kvm/backup
mkdir: cannot create directory ‘/kvm/backup’: No such file or directory
[root@localhost ~]# mkdir -p /kvm/backup
[root@localhost ~]# virsh list
 Id    Name                           State
----------------------------------------------------
 2     vm01                           running

[root@localhost ~]# virsh save vm01 /kvm/backup/vm01-save --bypass-cache --running

Domain vm01 saved to /kvm/backup/vm01-save

再次开启vm01,在vm01中安装一个gedit软件包,并在根目录下创建一个测试文件。
在这里插入图片描述
重新制定一个快照,并查看。

[root@localhost ~]# virsh save vm01 /kvm/backup/vm01-save2 --bypass-cache --running --verbose
Save: [100 %]
Domain vm01 saved to /kvm/backup/vm01-save2

[root@localhost ~]# ll -h /kvm/backup/
total 1.2G
-rw-------. 1 root root 404M Apr 28 15:12 vm01-save
-rw-------. 1 root root 765M Apr 28 15:30 vm01-save2

vm01关机后,使用virsh restore来恢复。
首先使用vm01-save来恢复,发现关机的过程中有报错
在这里插入图片描述
再使用vm01-save2来恢复,一切正常。
在这里插入图片描述
再次打开vm01,将之前安装的gedit和ceshi文件都删除,关机后再使用vm01-save恢复,则一切正常。
恢复前删除gedit和ceshi文件。
在这里插入图片描述
恢复后:
在这里插入图片描述
内存快照操作比较简单,但是它对还原点的要求很高,如果有磁盘文件和之前还原点的存在不一致,就会出现错误。所以不推荐使用。

二、磁盘快照:磁盘的内容在某个时间点上被保存,然后可以被恢复。
磁盘快照有两种:

1、内部快照 - 使用单个的 qcow2 的文件来保存快照和快照之后的改动。这种快照是 libvirt 的默认行为,现在的支持很完善(创建、回滚和删除),但是只能针对 qcow2 格式的磁盘镜像文件,而且其过程较慢等。
2、外部快照 - 快照是一个只读文件,快照之后的修改是另一个 qcow2 文件中。外置快照可以针对各种格式的磁盘镜像文件。外置快照的结果是形成一个 qcow2 文件链:original <- snap1 <- snap2 <- snap3。

快照链就是多个快照组成的关系链,这些快照按照创建时间排列成链,像下面这样,本文章要解释的就是怎么创建这条链,链中快照的相互关系,缩短链,以及如何利用这条链回滚我们的虚拟机到某个状态

base-image<–guest1<–snap1<–snap2<–snap3<–snap4<–当前(active)

如上,base-image是制作好的一个qcow2格式的磁盘镜像文件,它包含有完整的OS以及引导程序,现在以这个base-image为模板创建多个虚拟机,简单点方法,每创建一个虚拟机我们就把这个镜像完整复制一份,但这种做法效率底下,满足不了生产需要,这是就用到了qcow2镜像的特性copy-on-write

qcow2(qemu copy-on-write)格式镜像支持快照,具有创建一个base-image,以及在base-image(backing file)基础上创建多个copy-on-write overlays镜像的能力,
解释下backing file和overlay, 上面那条链中,我们为base-image创建一个guest1,那么此时base-image就是guest1的backing file,guest1就是base-image的overlay,同理,为guest1虚拟机创建了一个快照snap1,此时guest1就是snap1的backing file,snap1是guest1的overlay,backing files和overlays十分有用,可以快速的创建瘦装备实例,特别是在开发测试过程中可以快速回滚到之前某个状态。

磁盘内部快照:使用virsh snapshot-create-as命令。

[root@localhost ~]# virsh snapshot-create-as --help
  NAME
    snapshot-create-as - Create a snapshot from a set of args

  SYNOPSIS
    snapshot-create-as <domain> [--name <string>] [--description <string>] [--print-xml] [
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值