提示
X
本案例来自tskb,请前往tskb修改源内容:立即前往
'>

步骤11、虚拟机备份原理

|

问题描述

虚拟机备份原理

解决方案

旧版备份:
      基于Qcow2的快照功能实现,Qcow2是一种虚拟镜像格式,和raw、vdi、vmdk等类似,
Qcow2的特点是:
1、更小的文件大小,即使是不支持holes的文件系统也可以;
2、Copy-on-write的支持;
3、快照的支持,可以维护多个快照;
4、基于zlib的压缩;
5、AES加密;

Qcow2的一个快照可以理解为一个磁盘数据状态保存,用户可以随时恢复到进行快照时的磁盘的状态(包含数据)。在备份时我们会对磁盘进行一个快照,然后用相应的数据同步工具将该快照的数据同步到备份位置,就进行了数据备份。

实际情况中,对于第一次备份,由于备份位置没有该镜像的数据,所以需要将该次原位置的备份快照数据全部同步到备份位置,这种需要全部同步磁盘数据的备份方式,我们称之为全量备份;对于后续备份,由于在备份位置已经存在部分需要备份的数据,所以这部分数据就不需要备份,如何找出这部分数据,就是通过对比这个备份快照和备份位置某次备份快照之间数据差异。


对于快照在Qcow2中的实际存储,可以简单的理解为有快照L1、L2表和对应的Cluster组成,可以类比文件系统的Inode表和数据块。虚拟磁盘物理地址可以映射成L1、L2的对应项(两级索引),再通过L1、L2表的对应项找到真正记录数据的Cluster,现在简单举例描述,例子中的快照单级索引Cluster,每个Cluster为64MB,磁盘虚拟大小为640MB。


快照一索引表中记录是Cluster的位置编号,对应磁盘来说就是:0-64M对应快照索引节点1,实际的Cluster编号为1,依次类推,574MB-640MB对应Cluster编号为10。当生成快照1后,后续的磁盘修改会进行写时拷贝,我们假设每次修改大小为1MB,修改了磁盘35MB、100MB以及630M位置的数据,修改后进行磁盘快照。


获取快照差异时,只需要对比快照1和快照2索引表中记录的Cluster位置是否相同就可以了,不相同说明修改过,需要备份,所以同一图中对比如下:


所以需要备份的数据是0-64M,64M-128M,574MB-640MB,共192M数据。
备份位置数据示意图:


旧版本备份缺点:为了使每次备份的数据量尽量少,需要在原镜像数据上维护快照,快照的存在会引起几个问题:
(1)在镜像上进行写操作时对与存在数据的位置会进行copy-on-write,导致写性能很低;
(2)由于copy-on-write,后续的读会乱序,也会影响性能。总的来说是存在快照时(备份中和备份后),镜像的读写性能会受到影响。
(3)虚拟机在运行过程中进行磁盘快照,需要将虚拟机暂停,会存在一定时间的卡顿;
(4)由于我们的主要存储场景是vs存储,但vs存储不支持空洞,导致快照删除后,空间无法立即释放,虚拟机镜像会越来越大,占用大量存储空间,同时备份位置备份删除时也存在同样的问题。

新版本备份:
       通过bitmap记录数据变化,如自上次备份后,镜像上哪些数据进行了变化(类似与备份时对比快照,获取差异数据)。但是在记录过程中不会进行写时拷贝,只会进行相应的置位操作,代价很小,所以备份后磁盘的读写性能几乎一致,没有下降。同时每次备份后用于bitmap的空间可以在进行一些转换后,重复利用,所以也没有了备份导致的原镜像空间变大的问题。

新版本备份原理流程:


Bitmap表中一项对应一个Cluster的磁盘数据大小,记录对应位置是否被修改过,0表示未修改过,1表示修改过,每次备份后需要将bitmap中的数据进行清理,第一次备份后bitmap简单示意图如下:


对于备份在Qcow2中的实际存储,可以简单的理解为有快照L1、L2表和对应的Cluster组成,可以类比文件系统的Inode表和数据块。虚拟磁盘物理地址可以映射成L1、L2的对应项(两级索引),再通过L1、L2表的对应项找到真正记录数据的Cluster,现在简单举例描述,例子中的bitmap单级索引Cluster,每个Cluster为64MB,磁盘虚拟大小为640MB。索引表中记录是Cluster的位置编号,对应磁盘来说就是:0-64M对应bitmap索引节点1,实际的Cluster编号为1,依次类推,574MB-640MB对应Cluster编号为10。

假设每次修改大小为1MB,修改了磁盘35MB、100MB以及630M位置的数据,数据修改后bitmap数据如下:


那第二次需要备份的数据就是bitmap表中第1,2,10项对应的磁盘的数据备份,所备份的数据是0-64M,64M-128M,574MB-640MB,共192M数据。

备份位置数据存储时使用Qcow2 backing_file机制,通过增量盘的方式来存在数据,当备份删除时,进行相应的数据合并操作,然后删除镜像,就可以释放存储空间了。其备份位置示意图:


新版本备份优点:
(1)备份记录过程中不会进行写时拷贝,只会进行相应的置位操作,代价很小,所以备份后磁盘的读写性能几乎一致,没有性能下降
(2)所有备份数据单独生成一个备份镜像,删除备份后可释放空间
(3)虚拟机在运行过程中不会进行磁盘快照,没有了卡顿的问题
备份主机选取:
自动备份时,会选择报表服务可以正常返回结果的节点。存储最多运行四个备份任务,报表服务返回的列表前四个节点固定,所以优先这个四个节点执行备份。

我要分享
文档编号: 239691
作者: admin
更新时间: 2023-01-05 17:29
适用版本: