ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

备份与恢复(四)

2019-07-22 20:56:26  阅读:302  来源: 互联网

标签:快照 x86 恢复 备份 KVM 64 centos6.5 root


备份与恢复(四)

8.备份与恢复

8.1 备份恢复概述

image.png-338.5kB

8.2 通过virt-manager管理快照

  • 创建快照
  • 恢复快照
  • 删除快照

8.2.1 创建快照

image.png-22.8kB

image.png-29.3kB

image.png-17.5kB

image.png-38kB

#查看运行的虚拟机列表
[root@KVM ~]# virsh list
 Id    名称                         状态
----------------------------------------------------
 2     centos6.5                      running
 4     centos6.5-2                    running

#查看指定名称的虚拟机的磁盘使用情况
[root@KVM ~]# virsh domblklist centos6.5
目标     源
------------------------------------------------
vda        /var/lib/libvirt/images/centos6.5.qcow2
hda        /ios/CentOS-6.5-x86_64-bin-DVD1.iso

#查看指定磁盘的快照情况
[root@KVM ~]# qemu-img snapshot -l /var/lib/libvirt/images/centos6.5.qcow2
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         snapshot1              216M 2019-01-16 13:39:57   02:04:44.485

8.2.2 恢复快照

image.png-25.1kB

image.png-42.7kB

image.png-27.7kB

8.2.3 删除快照

image.png-50.6kB

[root@KVM ~]# qemu-img snapshot -l /var/lib/libvirt/images/centos6.5.qcow2 
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         snapshot1              216M 2019-01-16 13:39:57   02:04:44.485
2         snapshot2              216M 2019-01-16 14:03:54   02:10:17.600
3         snapshot3              216M 2019-01-16 14:04:26   02:10:24.168
4         snapshot4              216M 2019-01-16 14:04:50   02:10:36.746

KVM的virt-manager做的快照其实就是检查点快照。虽然在我们看起来全都是全量的备份,但实际上并不是,这些快照之间后一个备份的只是前一个快照的增量。因此,他们之间是有关联关系的。我可以通过如下方法查看快照之间的树形关联关系

[root@KVM ~]# virsh snapshot-list centos6.5 --tree
snapshot1
  |
  +- snapshot2
      |
      +- snapshot3
          |
          +- snapshot4

image.png-58.9kB

8.3 通过virsh管理快照

#查看创建快照帮助
[root@KVM ~]# virsh help snapshot-create-as
  NAME
    snapshot-create-as - 使用一组参数生成快照

  SYNOPSIS
    snapshot-create-as <domain> [--name <string>] [--description <string>] [--print-xml] [--no-metadata] [--halt] [--disk-only] [--reuse-external] [--quiesce] [--atomic] [--live] [--memspec <string>] [[--diskspec] <string>]...

  DESCRIPTION
    使用一组参数生成快照(磁盘和 RAM)

  OPTIONS
    [--domain] <string>  domain name, id or uuid
    --name <string>  快照名称
    --description <string>  快照描述
    --print-xml      输出 XML 文档而不是生成 XML
    --no-metadata    提取快照但不生成元数据
    --halt           生成快照后停止域
    --disk-only      捕获磁盘状态而不是 vm 状态
    --reuse-external  重新使用任意现有外部文件
    --quiesce        静默虚拟机的文件系统
    --atomic         需要自动操作
    --live           提取实时快照
    --memspec <string>  内存属性:[file=]name[,snapshot=type]
    [--diskspec] <string>  磁盘属性: disk[,snapshot=type][,driver=type][,file=name]
#创建一个快照
[root@KVM ~]# virsh snapshot-create-as centos6.5 shot1
已生成域快照 shot1

[root@KVM ~]# virsh snapshot-list centos6.5
 名称               生成时间              状态
------------------------------------------------------------
 shot1                2019-01-16 14:10:57 +0800 running   #怎么到上边了
 snapshot1            2019-01-16 13:39:57 +0800 running
 snapshot2            2019-01-16 14:03:54 +0800 running
 snapshot3            2019-01-16 14:04:26 +0800 running

[root@KVM ~]# virsh snapshot-list --tree centos6.5    #以树格式显示快照
snapshot1
  |
  +- snapshot2
      |
      +- snapshot3
          |
          +- shot1          #得如此来查看快照上下级关系
#查看某个快照的详细信息
[root@KVM ~]# virsh snapshot-info centos6.5 --current
名称:       shot1
域:          centos6.5
当前:       是
状态:       running
位置:       内部
上级:       snapshot3
下级:       0
降序:       0
元数据:    是
#删除一个快照
[root@KVM ~]# virsh snapshot-list centos6.5
 名称               生成时间              状态
------------------------------------------------------------
 shot1                2019-01-16 14:10:57 +0800 running
 snapshot1            2019-01-16 13:39:57 +0800 running
 snapshot2            2019-01-16 14:03:54 +0800 running
 snapshot3            2019-01-16 14:04:26 +0800 running

[root@KVM ~]# virsh snapshot-delete centos6.5 snapshot2
已删除域快照 snapshot2

[root@KVM ~]# virsh snapshot-list centos6.5
 名称               生成时间              状态
------------------------------------------------------------
 shot1                2019-01-16 14:10:57 +0800 running
 snapshot1            2019-01-16 13:39:57 +0800 running
 snapshot3            2019-01-16 14:04:26 +0800 running
 
[root@KVM ~]# virsh snapshot-list --tree centos6.5
snapshot1
  |
  +- snapshot3
      |
      +- shot1
#恢复一个快照
#我们执行先删除虚拟机里的部分文件在测试恢复
[root@KVM ~]# virsh snapshot-revert centos6.5 shot1  #恢复快照shot1

8.4 KVM备份与恢复

image.png-257.1kB

基于虚拟磁盘文件的KVM备份

创建临时外部磁盘快照
virsh snapshot-create-as --domain crm guest-statel --diskspec vda,file=/

8.4.1 通过云yum仓库升级qemu-kvm-ev

因为系统自带的qemu-kvm版本太旧1.5.3版本很多不支持,所以我们需要升级qemu-kvm企业版

[root@KVM ~]# mkdir -p /export/images/   #创建存放外部磁盘快照目录

[root@KVM ~]# virsh snapshot-create-as --domain centos6.5 guest-statel --diskspec vda,file=/export/images/centos6.5-overlay1.qcow2 --disk-only --atomic
错误:不支持的操作:这个 QEMU 二进制文件不支持即时磁盘快照

[root@KVM ~]# rpm -qa | grep libvirt
libvirt-python-4.5.0-1.el7.x86_64
libvirt-daemon-4.5.0-10.el7_6.3.x86_64
libvirt-daemon-driver-lxc-4.5.0-10.el7_6.3.x86_64
libvirt-daemon-driver-storage-iscsi-4.5.0-10.el7_6.3.x86_64
libvirt-gobject-1.0.0-1.el7.x86_64
libvirt-daemon-driver-interface-4.5.0-10.el7_6.3.x86_64
libvirt-daemon-driver-qemu-4.5.0-10.el7_6.3.x86_64
libvirt-daemon-driver-storage-4.5.0-10.el7_6.3.x86_64
libvirt-client-4.5.0-10.el7_6.3.x86_64
libvirt-glib-1.0.0-1.el7.x86_64
libvirt-daemon-driver-nwfilter-4.5.0-10.el7_6.3.x86_64
libvirt-daemon-config-nwfilter-4.5.0-10.el7_6.3.x86_64
libvirt-daemon-driver-storage-disk-4.5.0-10.el7_6.3.x86_64
libvirt-daemon-driver-storage-scsi-4.5.0-10.el7_6.3.x86_64
libvirt-libs-4.5.0-10.el7_6.3.x86_64
libvirt-daemon-driver-secret-4.5.0-10.el7_6.3.x86_64
libvirt-daemon-config-network-4.5.0-10.el7_6.3.x86_64
libvirt-daemon-driver-storage-rbd-4.5.0-10.el7_6.3.x86_64
libvirt-daemon-driver-storage-mpath-4.5.0-10.el7_6.3.x86_64
libvirt-daemon-kvm-4.5.0-10.el7_6.3.x86_64
libvirt-4.5.0-10.el7_6.3.x86_64
libvirt-daemon-driver-nodedev-4.5.0-10.el7_6.3.x86_64
libvirt-daemon-driver-storage-core-4.5.0-10.el7_6.3.x86_64
libvirt-daemon-driver-storage-gluster-4.5.0-10.el7_6.3.x86_64
libvirt-bash-completion-4.5.0-10.el7_6.3.x86_64
libvirt-daemon-driver-network-4.5.0-10.el7_6.3.x86_64
libvirt-daemon-driver-storage-logical-4.5.0-10.el7_6.3.x86_64
libvirt-gconfig-1.0.0-1.el7.x86_64

[root@KVM ~]# rpm -qa | grep kvm
qemu-kvm-1.5.3-160.el7.x86_64                   #版本太低
libvirt-daemon-kvm-4.5.0-10.el7_6.3.x86_64
qemu-kvm-common-1.5.3-160.el7.x86_64            #版本太低
#下载阿里云源
[root@KVM ~]# which wget
/usr/bin/wget
[root@KVM ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#以下省略若干。。。

#将本地yum源扔进备份目录
[root@KVM ~]# cd /etc/yum.repos.d/
[root@KVM yum.repos.d]# ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo
[root@KVM yum.repos.d]# mkdir bak
[root@KVM yum.repos.d]# mv C* bak/
[root@KVM yum.repos.d]# mv bak/*Base* .
[root@KVM yum.repos.d]# ls
bak  CentOS-Base.repo
#生成centos-release-qemu-ev企业版kvm的yum源文件
[root@KVM yum.repos.d]# yum -y install centos-release-qemu-ev
[root@KVM yum.repos.d]# rpm -qa centos-release-qemu-ev
centos-release-qemu-ev-1.0-3.el7.centos.noarch

[root@KVM yum.repos.d]# ls
bak  CentOS-Base.repo  CentOS-QEMU-EV.repo
[root@KVM yum.repos.d]# cat CentOS-QEMU-EV.repo
# CentOS-QEMU-EV.repo
#
# Please see http://wiki.centos.org/SpecialInterestGroup/Virtualization for more
# information

[centos-qemu-ev]
name=CentOS-$releasever - QEMU EV
baseurl=http://mirror.centos.org/centos/$releasever/virt/$basearch/kvm-common/    #源配置文件本行需要修改
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Virtualization

[centos-qemu-ev-test]
name=CentOS-$releasever - QEMU EV Testing
baseurl=http://buildlogs.centos.org/centos/$releasever/virt/$basearch/kvm-common/
gpgcheck=0
enabled=0
#安装和升级企业版qemu-kvm-ev
[root@KVM yum.repos.d]# yum -y install qemu-kvm-ev
[root@KVM yum.repos.d]# rpm -qa qemu-kvm-ev
qemu-kvm-ev-2.12.0-18.el7_6.1.1.x86_64

#重启KVM宿主机
[root@KVM yum.repos.d]# reboot

8.4.2 通过本地定制化yum源,升级qemu-kvm-ev

#查看本地定制化rpm包,通过createrepo命令设定
[root@KVM ~]# ls /root/rpm/
ipxe-roms-qemu-20170123-1.git4e85b27.el7_4.1.noarch.rpm  repodata
lz4-1.7.5-2.el7.x86_64.rpm                               seabios-bin-1.11.0-2.el7.noarch.rpm
qemu-img-ev-2.10.0-21.el7_5.3.1.x86_64.rpm               seavgabios-bin-1.11.0-2.el7.noarch.rpm
qemu-kvm-common-ev-2.10.0-21.el7_5.3.1.x86_64.rpm        spice-server-0.14.0-2.el7_5.3.x86_64.rpm
qemu-kvm-ev-2.10.0-21.el7_5.3.1.x86_64.rpm

#定制好以后,直接进行yum安装即可
[root@KVM ~]# yum -y install qemu-kvm-ev

#重启KVM宿主机
[root@KVM ~]# reboot

qemu-kvm-ev升级完毕,我们继续做外部磁盘快照

[root@KVM ~]# virsh snapshot-create-as --domain centos6.5 guest-statel --diskspec vda,file=/export/images/centos6.5-overlay1.qcow2 --disk-only --atomic
已生成域快照 guest-statel

[root@KVM ~]# ls /export/images/
centos6.5-overlay1.qcow2

8.4.3 查看外部磁盘快照

[root@KVM ~]# virsh snapshot-list centos6.5
 名称               生成时间              状态
------------------------------------------------------------
 guest-statel         2019-01-16 23:05:39 +0800 shutoff
 shot1                2019-01-16 14:10:57 +0800 running
 snapshot1            2019-01-16 13:39:57 +0800 running
 snapshot3            2019-01-16 14:04:26 +0800 running

[root@KVM ~]# virsh snapshot-list --tree centos6.5
snapshot1                   #外部磁盘快照
  |
  +- snapshot3              #虚拟机快照
      |
      +- guest-statel       #虚拟机快照
      +- shot1              #虚拟机快照
#查看虚拟机磁盘信息
[root@KVM ~]# virsh domblklist centos6.5
目标     源
------------------------------------------------
vda        /export/images/centos6.5-overlay1.qcow2     #磁盘的指向变成了我们创建的新的磁盘文件
hda        /ios/CentOS-6.5-x86_64-bin-DVD1.iso

#查看新磁盘文件的xml配置信息
[root@KVM ~]# qemu-img info /export/images/centos6.5-overlay1.qcow2
image: /export/images/centos6.5-overlay1.qcow2
file format: qcow2
virtual size: 8.0G (8589934592 bytes)
disk size: 196K
cluster_size: 65536
backing file: /var/lib/libvirt/images/centos6.5.qcow2    #原始磁盘文件成了备份文件
backing file format: qcow2
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false

当我们借助外部磁盘快照进行虚拟机的磁盘热备份的时候,实际上是生成了一个指向原始磁盘的软连接的磁盘差异(增量)快照文件。而虚拟机的磁盘改为指向了新生成的软连接磁盘文件。这样子的话,原始磁盘文件就不再处于被占用状态了。我们就可以对其进行各种冷备份了。

8.4.4 对原始虚拟磁盘文件进行冷备份
#查看原始磁盘文件
[root@KVM ~]# qemu-img info /var/lib/libvirt/images/centos6.5.qcow2
image: /var/lib/libvirt/images/centos6.5.qcow2
file format: qcow2
virtual size: 8.0G (8589934592 bytes)
disk size: 8.6G
cluster_size: 65536
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         snapshot1              216M 2019-01-16 13:39:57   02:04:44.485
3         snapshot3              216M 2019-01-16 14:04:26   02:10:24.168
4         shot1                  216M 2019-01-16 14:10:57   02:16:31.850
Format specific information:
    compat: 1.1
    lazy refcounts: true
    refcount bits: 16
    corrupt: false

我们并未在其中发现任何和新磁盘文件相关的指向性信息。因此原始磁盘文件并未被占用。我们可以进行冷备份

#进行虚拟磁盘文件的冷备份
[root@KVM ~]# cd /tmp/

[root@KVM tmp]# tar -zcvf 2019-01-16-centos6.5.tar.gz /var/lib/libvirt/images/centos6.5.qcow2 

[root@KVM tmp]# du -sh 2019-01-16-centos6.5.tar.gz
1.0G    2019-01-16-centos6.5.tar.gz

8.4.5 外部磁盘快照文件的数据回写

先在centos6.5虚拟机中创建几个文件,然后查看切换虚拟磁盘文件后,创建的文件是否消失

#查看虚拟机的虚拟磁盘信息
[root@KVM tmp]# virsh domblklist centos6.5
目标     源
------------------------------------------------
vda        /export/images/centos6.5-overlay1.qcow2
hda        /ios/CentOS-6.5-x86_64-bin-DVD1.iso

#外部磁盘快照的回写
[root@KVM tmp]# virsh blockcommit centos6.5 vda --active --verbose --pivot
Block commit: [100 %]
成功进行数据挖掘

[root@KVM tmp]# virsh domblklist centos6.5
目标     源
------------------------------------------------
vda        /var/lib/libvirt/images/centos6.5.qcow2
hda        /ios/CentOS-6.5-x86_64-bin-DVD1.iso
#清除外部磁盘快照
[root@KVM tmp]# virsh snapshot-list centos6.5
 名称               生成时间              状态
------------------------------------------------------------
 guest-statel         2019-01-16 23:05:39 +0800 disk-snapshot   #已经没用了
 shot1                2019-01-16 14:10:57 +0800 running
 snapshot1            2019-01-16 13:39:57 +0800 running
 snapshot3            2019-01-16 14:04:26 +0800 running

#virsh不支持删除外部磁盘快照
[root@KVM tmp]# virsh snapshot-delete centos6.5 guest-statel
错误:删除快照失败:guest-statel
错误:不支持的配置:尚不支持 1 外部磁盘快照删除

#因此清除元数据信息即可
[root@KVM tmp]# virsh snapshot-delete centos6.5 guest-statel --metadata
已删除域快照 guest-statel

[root@KVM tmp]# virsh snapshot-list centos6.5
 名称               生成时间              状态
------------------------------------------------------------
 shot1                2019-01-16 14:10:57 +0800 running
 snapshot1            2019-01-16 13:39:57 +0800 running
 snapshot3            2019-01-16 14:04:26 +0800 running

此时,我们查看虚拟机里刚刚创建的文件是否丢失。测试结果显示,我们发现并未丢失任何文件。

标签:快照,x86,恢复,备份,KVM,64,centos6.5,root
来源: https://www.cnblogs.com/ywb123/p/11228260.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有