命令记不住

登陆

KVM 客户机备份恢复

KVM保证数据冗余

1.KVM的完整克隆

1.kvm虚拟机克隆

[root@kvm01 opt]# virsh suspend centos7 
[root@kvm01 opt]# virt-clone --auto-clone -o centos7 -n web01 (完整克隆)

a:生成虚拟机磁盘文件

[root@kvm01 opt]# qemu-img create -f qcow2 -b 49-web03.qcow2 49-web04.qcow2

b:生成虚拟机的配置文件

  <name>49-web03</name>
  <uuid>8e505e25-5175-46ab-a9f6-feaa096daaa4</uuid>
  <source file='/opt/49-web03.qcow2'/>
  <mac address='52:54:00:4e:5b:89'/>

c:导入虚拟机并进行启动测试

2.KVM的链接克隆

a.基于源磁盘文件,创建链接磁盘文件

[root@kvm01 opt]# qemu-img create -f qcow2 -b  centos3-clone.qcow2 web02.qcow2
// 查看磁盘信息
[root@kvm01 opt]# qemu-img info web02.qcow2
image: web02.qcow2
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 196K
cluster_size: 65536
backing file: centos3-clone.qcow2
Format specific information:
    compat: 1.1
    lazy refcounts: false

b:手动生成虚拟机的配置文件

[root@kvm ]# virsh dumpxml web01 >web02.xml
// 修改xml

c:手动导入虚拟机并进行启动测试

1. [root@kvm ]# virsh define web02.xml

d:自动注册kvm虚拟机,自动生成配置文件方法

2.[root@kvm ]# virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1 --disk /opt/web02.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole

无论生产环境使用什么虚拟化平台,对虚拟机的备份都是非常重要的,不同的虚拟化平台对于虚拟机备份恢复支持是不一样的,比如VMware vSphere平台官方提供VDP备份工具,常用第三方veeam backup对其支持也非常好,对于KVM以及oVirt平台来说,备份工具相对比较薄弱,但是依旧需要对虚拟机进行备份。

3.生产环境常用虚拟机备份方式

生产环境中最常用的方式一般有两种:一是复制虚拟机镜像以及配置文件备份;二是还是使用快照进行备份。

1、 通过复制方式备份恢复虚拟机

第1步,使用命令“virsh list --all”查看虚拟机运行情况,选择虚拟机centos7-04进行备份恢复。

root@kvm-server:/# virsh list --all  
 Id    Name                           State
 43    centos7-04                     running
 46    centos7-03                     running
 68    win2012                        running
 71    win7-02                        running
 84    win2012-virtio                 running
 -     centos7                        shut off
 -     centos7-02                     shut off
 -     win7                           shut off
 -     win7-kvm                       shut off

第2步,使用命令“cp /vm-linux/centos7-04.qcow2 /vm-backup”复制虚拟机镜像文件,虚拟机处于运行状态也可以复制,推荐使用单独的目录存放虚拟机备份文件。

root@kvm-server:/vm-backup# cp /vm-linux/centos7-04.qcow2 /vm-backup
root@kvm-server:/vm-backup# ls
centos7-04.qcow2

第3步,通过复制文件方式不能忘记复制虚拟机配置文件,使用命令“cp /etc/libvirt/qemu/centos7-04.xml /vm-backup/”复制虚拟机配置文件。

root@kvm-server:/vm-backup# cp /etc/libvirt/qemu/centos7-04.xml /vm-backup/
root@kvm-server:/vm-backup# ls
centos7-04.qcow2  centos7-04.xml

第4步,模拟虚拟机centos7-04出现故障,已经不在运行列表。

root@kvm-server:/vm-backup# virsh list --all   
 Id    Name                           State
 46    centos7-03                     running
 68    win2012                        running
 71    win7-02                        running
 84    win2012-virtio                 running
 -     centos7                        shut off
 -     centos7-02                     shut off
 -     win7                           shut off
win7-kvm shut off

第5步,查看原虚拟机目录以及配置文件目录均无centos7-04相关信息。

root@kvm-server:/vm-backup# ls /vm-linux
centos7-02.qcow2  centos7-03.qcow2  centos7.raw
root@kvm-server:/vm-backup# ls /etc/libvirt/qemu/
centos7-02.xml  centos7.xml  win2012-virtio.xml  win7-02.xml   win7.xml
centos7-03.xml  networks     win2012.xml         win7-kvm.xml

第6步,通过复制或者移动方式还原备份文件到原目录。

root@kvm-server:/vm-backup# cp centos7-04.qcow2 /vm-linux
root@kvm-server:/vm-backup# ls /vm-linux               
centos7-02.qcow2  centos7-03.qcow2  centos7-04.qcow2  centos7.raw
root@kvm-server:/vm-backup# cp centos7-04.xml /etc/libvirt/qemu
root@kvm-server:/vm-backup# ls /etc/libvirt/qemu/      
centos7-02.xml  centos7-04.xml  networks            win2012.xml  win7-kvm.xml
centos7-03.xml  centos7.xml     win2012-virtio.xml  win7-02.xml  win7.xml

第7步,还原后需要重新注册虚拟机,使用命令“virsh define /etc/libvirt/qemu/centos7-04.xml”注册虚拟机。

root@kvm-server:/vm-backup# virsh define /etc/libvirt/qemu/centos7-04.xml 
Domain centos7-04 defined from /etc/libvirt/qemu/centos7-04.xml

第8步,使用命令“virsh list --all”查看虚拟机运行情况,虚拟机centos7-04已重新注册,但处于关闭状态。

root@kvm-server:/vm-backup# virsh list --all
 Id    Name                           State
 46    centos7-03                     running
 68    win2012                        running
 71    win7-02                        running
 84    win2012-virtio                 running
 -     centos7                        shut off
 -     centos7-02                     shut off
 -     centos7-04                     shut off
 -     win7                           shut off
 -     win7-kvm                       shut off

第9步,使用命令“virsh start centos7-04”启动虚拟机。

root@kvm-server:/vm-linux# virsh start centos7-04
Domain centos7-04 started

第10步,使用命令“virsh console centos7-04”连接到虚拟机控制台,虚拟机已经启动成功,恢复正常运行。

root@kvm-server:/vm-backup# virsh console centos7-04
Connected to domain centos7-04
Escape character is ^]
CentOS Linux 7 (Core)
Kernel 3.10.0-693.el7.x86_64 on an x86_64
kvm-centos login: root
Password: 
Last login: Tue Nov 13 00:07:25 on ttyS0

第11步,使用命令“virsh list --all”查看虚拟机运行情况,虚拟机centos7-04处于运行状态。

root@kvm-server:/vm-backup# virsh list --all  
 Id    Name                           State
 46    centos7-03                     running
 68    win2012                        running
 71    win7-02                        running
 84    win2012-virtio                 running
 85    centos7-04                     running
 -     centos7                        shut off
 -     centos7-02                     shut off
 -     win7                           shut off
 -     win7-kvm                       shut off

至此,通过复制文件方式备份恢复虚拟机完成,这样的方式基本操作起来比较麻烦,适用于小规模环境使用,虚拟机处于运行状态下复制文件推荐在虚拟机访问量小的时候进行.
可以通过创建脚本的方式实现自动备份。

4.通过快照备份恢复虚拟机

生产环境中强烈推荐使用virsh snapshot-create命令创建快照。
qemu-img snapshot 命令创建快照,但在实际使用中,这个命令创建的快照字节都是0,也就是说什么也没保存下来。

第1步,使用命令“”查看虚拟机centos7-03是否创建快照。

root@kvm-server:/vm-backup# virsh snapshot-list centos7-03
 Name                 Creation Time             State

第2步,使用命令“virsh snapshot-create centos7-03”创建快照。

root@kvm-server:/vm-backup# virsh snapshot-create centos7-03
Domain snapshot 1544863104 created

第3步,使用命令“virsh snapshot-list centos7-03”查看虚拟机快照情况,注意Name是快照唯一的编号。

root@kvm-server:/vm-backup# virsh snapshot-list centos7-03  
 Name                 Creation Time             State
 1544863104           2018-12-15 08:38:24 +0000 running

第4步,使用命令“virsh snapshot-create centos7-03”再次创建快照。

root@kvm-server:/vm-backup# virsh snapshot-create centos7-03  
Domain snapshot 1544863205 created

第5步,使用命令“virsh snapshot-list centos7-03”查看虚拟机快照情况,注意虚拟机目前已经有2个不同时间段的快照,可以理解为2个备份。

root@kvm-server:/vm-backup# virsh snapshot-list centos7-03  
 Name                 Creation Time             State
 1544863104           2018-12-15 08:38:24 +0000 running
 1544863205           2018-12-15 08:40:05 +0000 running

第6步,如果虚拟机出现或者是应用程序出现故障,可以根据时间还原到故障前的状态,使用使命“virsh snapshot-revert centos7-03 1544863104”恢复虚拟机到其他状态,特别注意恢复后当前的数据就还原到快照时的状态,谨慎操作。

root@kvm-server:/vm-backup# virsh snapshot-revert centos7-03 1544863104

第7步,使用命令“virsh console centos7-03”查看恢复快照后的虚拟机运行状态,一定要确认虚拟机运行是否存在问题。

root@kvm-server:/vm-backup# virsh console centos7-03
Connected to domain centos7-03
Escape character is ^]
CentOS Linux 7 (Core)
Kernel 3.10.0-693.el7.x86_64 on an x86_64

kvm-centos login: root
Password: 
Last login: Sat Dec 15 16:37:39 on ttyS0

第8步,反复强调,过多的虚拟机快照可能会影响虚拟机的运行速度或者是导致虚拟机故障,定期删除虚拟机快照是必需的,使用命令“virsh snapshot-delete centos7-03 1544863104”即可删除对应的快照。

root@kvm-server:/vm-backup# virsh snapshot-delete centos7-03 1544863104 
Domain snapshot 1544863104 deleted

第9步,使用命令“virsh snapshot-list centos7-03”查看虚拟机快照情况,虚拟机目前只保留1个快照,相当于1个备份。

root@kvm-server:/vm-backup# virsh snapshot-list centos7-03        
 Name                 Creation Time             State
 1544863205           2018-12-15 08:40:05 +0000 running

至此,使用虚拟机快照备份恢复操作完成,与复制文件相比,快照方式简单明了,在KVM虚拟化备份工具不太多的情况下,生产环境的确在大量使用.
过多的虚拟机快照可能会影响虚拟机的运行速度或者是导致虚拟机故障,定期删除虚拟机快照是必需的。

推荐阅读