KVM

您所在的位置:网站首页 虚拟机快照文件恢复 KVM

KVM

2023-06-28 13:45| 来源: 网络整理| 查看: 265

备份与恢复(四) 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 [--name ] [--description ] [--print-xml] [--no-metadata] [--halt] [--disk-only] [--reuse-external] [--quiesce] [--atomic] [--live] [--memspec ] [[--diskspec] ]... DESCRIPTION 使用一组参数生成快照(磁盘和 RAM) OPTIONS [--domain] domain name, id or uuid --name 快照名称 --description 快照描述 --print-xml 输出 XML 文档而不是生成 XML --no-metadata 提取快照但不生成元数据 --halt 生成快照后停止域 --disk-only 捕获磁盘状态而不是 vm 状态 --reuse-external 重新使用任意现有外部文件 --quiesce 静默虚拟机的文件系统 --atomic 需要自动操作 --live 提取实时快照 --memspec 内存属性:[file=]name[,snapshot=type] [--diskspec] 磁盘属性: 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

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3