网络备份系统的离线同步与恢复方法
来源:万方数据 更新时间:2012-05-09

 
本文设计并实现了一种网络备份系统的离线同步与恢复方法。采用离线同步与恢复的方式,减少了系统对网络的依赖。克服了当本地服务器用户数据量太大时,跨络备份系统,需要大量的时闽采完成本地服务器和逶程备份服务器间盼同步欧及对海量缓存要求过大的缺点。实验证明,谈方法舆有较高的同步与恢复效率和稳定的速度。
1 引言

    在有些信息化程度高的行业(如金融、电信、民航等),一旦发生重大安全问题或未知灾难,将直接影响到各项工作。如果发生数据损坏或者丢失,势必将造成难以估量的损失,而备份数据是保证数据安全的有效方法。

    网络备份系统(Network Backup System,NBS)所面临的主要问题之一是本地带宽和网络备份线路带宽不匹配。网络备份系统,通常在本地服务器上开辟一个海量缓存来解决这个问题。

    假设本地初始数据大小为D(M),网络平均传输速度为m(M/s)。用户产生数据的平均速度为a(M/s)。则本地服务器与备份服务器数据达到同步状态所需时间为T,由于考虑到用户业务的静默期,设a


    由式(1)可知,当本地数据量过大或者网络传输速度较慢时,在网络备份系统中,本地服务器与备份服务器同步需要较长的时间。在本地数据D完全备份到备份服务器的过程中,产生的数据将放在海量缓存中,这就要求本地服务器有较大的缓存。这将会影响本地服务器的性能和备份系统的性能指标RPO和RTO。

    本文在网络备份系统的基础上,提出了一个离线的数据同步与恢复子系统。系统在同步、恢复时,采用离线的方式进行,提高了备份系统同步恢复的效率,降低了对本地服务器的影响。

2 网络备份系统的总体架构

    2.1网络备份系统体系结构

    如图1所示,网络备份系统从物理上分为本地数据中心和远程数据中心。

    本地数据中心由多个本地服务器构成。本地服务器是部署日常应用程序的服务器,备份数据由该服务器产生。管理主机用于配置管理用户任务,建立起本地服务器和远程服务器之间的映射关系。远程数据中心由多个备份服务器组成,用于存储本地

    服务器产生的数据。


 

    图1 网络备份系统体系结构图

    2.2网络备份系统功能模块

    如图2所示,系统分为数据监控模块、海量缓存模块、网络发送模块、远程存储模块、离线备份与恢复模块。

    图2网络备份系统功能模块图

    数据监控模块,主要用于监控本地磁盘的写操作,将写入到监控分区的数据,发送到海量缓存中。海量缓存模块主要是用于暂时缓存写入监控分区的数据。网络发送模块用于发送海量缓存中的数据,通过Internet发送到备份服务器备份模块,远程存储模块用于重放从网络上接收到的数据,存储在指定好的逻辑卷上。

    离线备份与恢复模块主要用于解决备份、恢复数据量过大或者网络传输速度过慢时,采用Internet完成同步恢复需要大量时间的问题。利用本地磁盘读写速度的优势,对任务进行离线的同步与恢复。对于海量数据的任务来说。这种离线的方式将会大量减少同步与恢复时间。

    在进行离线同步的过程中,所有对本地监控磁盘写入的数据将数据监控模块抓取并被放在海量缓存中。在完成任务的离线同步后,采用差异同步的方式,也就是只同步本地服务器和备份服务器上差异的数据,来完成本地服务器和备份服务器的同步。由于此时的差异数据全部放在海量缓存中,此时,只要将海量缓存中的数据通过Internet发送到备份服务器。这样就实现了本地服务器和备份服务器的完全同步。

 3 离线同步与恢复模块

    3.1同步恢复模块框架

    离线同步与恢复模块是网络备份系统的一个子系统,其体系结构如图3的所示。

    该子系统包括本地导入、导出模块和远程导入、导出模块。其中本地服务器导出的备份文件和备份服务器导出的备份文件的数据格式相同。

    备份文件是按照特定的格式从本地服务器/远程服务器导出的一个数据文件,是进行离线同步与恢复的数据源。


 

    图3离线同步恢复框架图

    3.2同步恢复模块的结构

    离线同步与恢复模块主要包括导入和导出两个子模块,导入、导出模块的结构如图4所示。包括磁盘读写模块、内存缓存模块、备份文件读写模块。


 

    图4导入、导出功能模块图

    磁盘读写模块用于打开所要读写的磁盘分区,获取所要读写磁盘分区的句柄。并读取磁盘分区上的数据块到内存缓存之中。

    缓存模块就是在内存中开辟的一个存储块,用于暂时存取从磁盘分区读入的数据。当缓存满时,也就是内存中数据大小达到一个数据块的长度时,由备份文件读写模块将相关数据写入到备份文件中。这样可以减少调用系统调用read和write次数,提高读写的效率。

    当内存缓存满的时,备份文件读写模块将数据写入到备份文件中。在写入之前先计算出数据的偏移量offset和md5值。之后按照3.4节中指定的格式将数据写入到备份文件中。

    3.3同步恢复模块的工作原理

    本地服务器有大量的数据时,若用在线的方式进行同步,必将花费相当多的时间。此时利用本地导出模块将本地服务器监控分区的数据进行导出,将导出的备份文件存储在移动设备中,快速地运送到远程数据中心,利用备份服务器的离线导入功能实现数据的导入操作。这样本地服务器和备份服务器就实现了快速的同步。当需要进行灾难恢复的时间,先对远程数据中心备份服务器逻辑分区上的数据进行离线的导出,将导出的备份文件快速运送至本地数据中心,再利用本地服务器的导人功能进行导入,实现数据的离线恢复。

    由于导入、导出是离线进行,本地磁盘的读写速度远大于网络的传输速度,对于海量数据的备份任务量来说,离线同步、恢复的方式可以大大降低同步恢复的时间。

    3.4备份记录的存储格式

    备份文件由若千备份记录组成。数据导出模块将监控分区中的数据按照一定的大小封装成备份记录,存储到备份文件中。备份记录封装格式为:

    Record
    其中,offset指明了数据监控分区中数据的偏移量,datalen指定了备份记录的长度,data表示要保存的备份记录的数据部分,是一个指定大小的从监控分区上读取的一个数据块,md5保存了备份记录中data的散列值,通过验证数据导出前后md5值,可以检测数据导入导出是否一致。

    3.5系统的差错控制

    通过如下公式计算数据的散列值,以检验导入、导出数据的正确性:

    md5=MD 5(data)(2)

    其中,MDS是加密算法,data表示的是备份记录中从磁盘上读取的数据块,m d5表示备份记录中data的散列值。

    在将备份记录写入到备份文件之前,根据式(2)计算备份记录中数据的md5值。并将该值一并写人备份文件中。当进行数据导入操作时,在将从备份文件中读取的存放在内存中的备份记录写入到磁分区之前,根据式(2)计算备份记录中数据部分的散列值,同备份记录头部的md5值进行比对,若结果一致,说明数据是一致的。然后将备份记录根据其偏移量写入到磁盘中,实现对磁盘数据的导入操作。通过md5值校验,可以保证在导入、导出过程中每一个数据块的一致性。

    由于对数据磁盘进行的全盘数据导入、导出操作,在数据导出时,顺序读取监控分区的每一个数据块,并在备份文件中保存其偏移量offset。在数据导人时,顺序读取备份文件中的每一个备份记录,根据它的偏移量将数据恢复到磁盘中。这样可以保证数据导入、导出顺序的正确性。

 3 .6导出操作的流程

    当进行导出操作时,首先初始化相关的任务信息,建立导出备份文件datafile。从磁盘读取一个指定大小的数据块data到缓存cash中,然后计算数据块的散列值m d5,之后将备份记录写入到行前建立的备份文件中,直到offset等于磁盘大小disksize。

    3.7导入操作的流程

    当进行导入操作时,首先进行任务的初始化。之后从备份文件datafile中读取一条备份记录record到缓存之中,计算record中数据块部分的散列值md5,并和记录头部和md5进行比对,若一致,表明数据没有发生变化,则根据record中头部的offset等信息将备份记录中的数据块写人到磁盘中去,直到文件偏移等于数据文件大小datesize。若md5比对不一致,则说明数据在传输过程中出现了错误,停止任务导入操作。导入操作伪码如下:


   

4 实验分析

    为了测试离线备份与恢复方法导入、导出的效率和正确性,笔者设计了如下的实验,分别测试了本地服务器和备份服务器数据导入、导出功能。

    实验环境为局域网,带宽为100Mbps,本地服务器和远程服务器配置如下:


 

    表1实验服务器配置

    分别对本地服务器和备份服务器1G, 2G, 3G和4G的分区来进行导入、导出的测试。测试结果如下:


 

    表2本地服务器导出/导出实验数据


 

    表3备份服务器导出/导出实验数据

    由实验可知,不管是本地服务器还是备份服务器,导入、导出都有较高的效率。本地服务器导出速度大致是18MB/s,本地服务器的导入速度大致是10.OMB/s,而备份服务器的导出和导出速度都大致是15MB/s。这相对于Internet而言,速度是相当快的。并且,当导入、导出的数据量增加时,系统导入、导出所用的时间基本上是线性增长的。这说明系统导入、导出速度的稳定性。实验证明:该系统在基于Internet的网络备份系统中是可行的。

5结束语

    本文设计了一种基于网络备份系统的数据同步与恢复方法。利用本文提出的离线同步与恢复方法进行灾备任务的离线初始化,可大大提高网络备份系统的运行效率。在离线同步完成后,再对任务进行差异同步,从而实现本地服务器和备份服务器的完成同步。