一种用于备份系统的海量数据高速缓存器的构造方法 一、技术领域
本发明提出了一种用于备份系统的海量数据高速缓存器的构造方法,属于数据备份领域。
二、背景技术
传统的备份系统在备份海量数据时,通常面临着本地数据带宽大于备份线路数据带宽的突出矛盾。为了缓解这一矛盾,传统的备份系统使用了光纤通道技术(Fiber Channel)及存储局域网(Storage Area Network)等远程存储技术来提高备份线路的带宽。这些技术都高度依赖于价格十分昂贵的高速专线,使得备份系统的建设成本十分惊人,而且,这种方法对于备份线路带宽的提高十分有限,往往无法赶上本地数据带宽的增长幅度。因此,传统方法不能从根本上解决上述矛盾。
中国专利公开号为CN1445672的申请案可以实现异构网络的数据镜像,但当本地服务器产生海量数据变化时,将会导致严重的性能问题。
针对上述的缺陷,本发明提出了一种用于备份系统的海量数据高速缓存器的构造方法,可用于本地数据带宽大于备份线路数据带宽的备份系统中,尤其是基于Internet的数据备份系统。该方法通过在本地服务器部署海量数据高速缓存器来存储服务器的变化数据,解决了本地数据带宽大于备份线路带宽的突出矛盾。
该方法突破了传统备份系统依赖高速专线的技术难题,降低了备份系统对备份线路带宽以及稳定性的要求,极大地减低了备份系统的建设成本和使用成本,尤其是使得部署基于Internet的数据备份系统成为可能,具有广阔的应用前景。
三、发明内容
在详细阐述本发明之前,先做如下定义:
定义1:备份对象T,用来表示本地服务器上需要备份的对象。
定义2:海量数据高速缓存器S,用来存储备份对象产生的变化数据,包含以下两个部分:
1)海量数据高速缓存器描述符,包括五个部分:海量数据高速缓存器容量fsize、备份记录大小rsize、备份记录数num、当前读指针rpos、当前写指针wpos;
2)备份记录,包括四个部分:备份对象名target、备份数据在备份对象上的位置offset、备份数据data、验证摘要值h。
定义3:定义验证摘要值的计算公式,h=H(target+offset+data),其中h表示验证摘要值,+表示字符串的连接运算,target表示发生数据变化的备份对象的名称,offset表示备份数据在备份对象上的位置,data表示备份数据的具体内容,H为散列函数,可以是MD5、SHA-1等。
定义4:海量数据高速缓存器读指针的计算公式,rpos′=(rpos+1)%(fsize/rsize),其中rpos′表示读操作后的海量数据高速缓存器当前的读指针的位置,rpos表示读操作前的海量数据高速缓存器的读指针的位置。
定义5:海量数据高速缓存器写指针的计算公式,wpos′=(wpos+1)%(fsize/rsize),其中wpos′表示写操作后的海量数据高速缓存器当前的写指针的位置,wpos表示写操作前的海量数据高速缓存器的写指针的位置。
本发明提出了一种用于数据备份系统的海量数据高速缓存器的构造方法,该方法通过在本地服务器上建立海量数据高速缓存器S,对服务器的变化数据进行缓存,解决了本地数据带宽大于备份线路带宽的突出矛盾。
海量数据高速缓存器S的组织格式包括海量数据高速缓存器描述符和备份记录两个部分。在对海量数据高速缓存器S进行初始化时,首先需要在本地服务器的磁盘上建立一个固定大小的容器文件,然后在其头部填入海量数据高速缓存器描述符的内容,包括海量数据高速缓存器容量、备份记录大小、备份记录数、当前读指针、当前写指针等内容。
当备份对象T发生数据变化时,首先通过定义3的公式计算出变化数据(需备份的数据)的摘要值,然后将备份对象名,备份数据,备份数据在备份对象上的位置以及计算出的摘要值封装成备份记录R,再根据海量数据高速缓存器写指针wpos将R写入到海量缓存器S中,并更新海量数据高速缓存器写指针wpos(使其指向下一个写入位置)和备份记录数num。当需要读取备份记录R时,首先根据海量数据高速缓存器读指针rpos来读取R,然后将R发送到远程,待发送完成后,更新海量数据高速缓存器读指针rpos(使其指向下一个读位置)和备份记录数num。
具体地,本发明提出的用于数据备份系统的海量数据高速缓存器地构造方法包括以下步骤:
1)对海量数据高速缓存器进行初始化的步骤;
2)对海量数据高速缓存器进行写入的步骤;
3)对海量数据高速缓存器进行读取的步骤。
四、附图说明
图1是海量数据高速缓存器的组织格式。
图2是对海量数据高速缓存器进行初始化的步骤。
图3是对海量数据高速缓存器进行写入的步骤。
图4是对海量数据高速缓存器进行读取的步骤。
五、具体实施方式
以下结合附图详细说明本发明的具体方法。
图1是海量数据高速缓存器的组织格式。
海量数据高速缓存器组织格式如下:
1)海量数据高速缓存器容量fsize
整数,表示海量数据高速缓存器S的大小。
2)备份记录大小rsize
整数,表示存储在海量数据高速缓存器S中的备份记录的大小。
3)备份记录数num
整数,表示海量数据高速缓存器S中目前已经存储的备份记录数。
4)当前读指针rpos
整数,表示海量数据高速缓存器S中当前可以读取备份记录的位置。
5)当前写指针wpos
整数,表示海量数据高速缓存器S中当前可以写入备份记录的位置。
6)备份记录R
为4元组数据结构,格式如下:
①备份对象名target
字符串,表示备份记录中保存的数据所属的备份对象的名称。
②备份数据在备份对象上的位置offset
整数,表示备份对象的变化数据在备份对象上的位置。
③备份数据data
二进制串,表示备份对象产生的变化数据的具体内容。
④验证摘要值h
整数,表示根据定义3计算出的摘要值。
通过在本地服务器上部署海量数据高速缓存器,备份系统能够存储高速存储本地的变化数据。S越大,可以存储的变化数据越多,那么备份系统容忍通信线路的带宽限制、速度变化、传输故障等不利因素的能力越强。
图2是对海量数据高速缓存器进行初始化的步骤。
在对海量数据高速缓存器进行初始化时,首先在本地服务器上创建一个固定长度的容器文件,然后往其头部填入海量数据高速缓存器描述符的内容。其具体步骤如下:
1)创建容器文件:在本地服务器上新建一个容器文件F,用于实现海量数据高速缓存器;
2)初始化海量数据高速缓存器描述符:初始化海量数据高速缓存器描述符I,并将I的内容写入文件F的头部,具体步骤如下:
①设置海量数据高速缓存器容量:海量数据高速缓存器容量fsize为容器文件F的大小减去海量数据高速缓存器描述符I的大小;
②设置备份记录大小:备份记录大小为备份记录各元组长度之和;
③设置备份记录数:设置海量数据高速缓存器的备份记录数num为0;
④设置当前读指针:设置海量数据高速缓存器的当前读指针rpos为0;
⑤设置当前写指针:设置海量数据高速缓存器的当前写指针wpos为0;
⑥保存海量数据高速缓存器描述符初始值:将海量数据高速缓存器描述符I的初始值写入到容器文件F的头部。
图3是对海量数据高速缓存器进行写入的步骤。
当备份对象T发生数据变化时,首先生成相应的备份记录R,然后根据海量数据高速缓存器的当前写指针wpos将备份记录R写入到海量数据高速缓存器S中,具体步骤如下:
1)验证摘要值计算:利用发生数据变化的备份对象名target,备份数据在备份对象上的位置offset,备份数据data,根据定义3计算验证摘要值h;
2)备份记录封装:将备份对象名target,备份数据data,备份数据在备份对象上的位置offset,验证摘要值h,封装成一个备份记录R;
3)写入海量数据高速缓存器:根据海量数据高速缓存器的当前写指针wpos,将备份记录R写入到海量数据高速缓存器S中,具体步骤如下:
①检测是否有空闲空间:如果海量数据高速缓存器S已满,即num==fsize/rsize为真,则踏步等待一个时间间隔,再继续判断,如果海量数据高速缓存器S有足够的空闲空间,则下一步;
②获取当前写指针:从海量数据高速缓存器描述符I中读出海量数据高速缓存器的当前写指针wpos;
③计算写入偏移量:写入偏移量ws的计算公式为:ws=wpos×rsize+size(I),其中,size(I)为海量数据高速缓存器描述符I的大小;
④写入数据:根据写入偏移量ws,将R写入到S中;
4)更新海量数据高速缓存器描述符:计算新的海量数据高速缓存器的当前写指针和备份记录数,更新当前海量数据高速缓存器写指针和备份记录数,具体步骤如下:
①计算新的当前写指针的位置:根据定义5,计算出新的海量数据高速缓存器的当前写指针的位置;
②计算新的备份记录数:备份记录数递增1,即num=num+1;
③更新当前写指针和备份记录数:将新的当前写指针、备份记录数写入海量数据高速缓存器S的描述符中。
图4是对海量数据高速缓存器进行读取的步骤。
当读取海量数据高速缓存器S中的备份记录R时,首先根据海量数据高速缓存器的当前读指针rpos来读取备份记录R,在完成备份记录错误检测之后,通过网络发送备份记录R到远程,随后更新海量数据高速缓存器描述符,具体步骤如下:
1)读取备份记录:根据海量数据高速缓存器的当前读指针rpos来读取备份记录R,具体步骤如下:
①判断海量数据高速缓存器是否为空:如果S不为空,即num>0,则下一步,如果S为空,则踏步等待一个时间间隔,继续判断;
②获取当前读指针:从海量数据高速缓存器描述符I中读出海量数据高速缓存器的当前读指针rpos;
③计算读取偏移量:读取偏移量rs的计算公式为:rs=rpos×rsize+size(I),其中,size(I)为海量数据高速缓存器描述符I的大小;
④读取备份记录:根据读取偏移量rs,从海量数据高速缓存器S中读取备份记录R;
2)备份记录错误检测:根据定义3计算备份记录R的验证摘要值h′,并与备份记录R中保存的验证摘要值h比较来进行错误检测,其具体步骤如下:
①计算验证摘要值:利用R的target,offset,data,根据定义3计算验证摘要值h′;
②判断备份记录是否正确:如果h′==h,则备份记录R是正确的,如果h′≠h,则说明备份记录R出现错误,则报错;
3)网络发送:通过网络将备份记录发送到远程;
4)更新海量数据高速缓存器描述符:计算新的海量数据高速缓存器的当前读指针和备份记录数,更新当前海量数据高速缓存器读指针和备份记录数,具体步骤如下:
①计算新的当前读指针位置:根据定义4,计算出新的海量数据高速缓存器的当前读指针位置;
②计算新的备份记录数:备份记录数递减1,即num=num-1;
③更新当前读指针和备份记录数:将新的当前读指针、备份记录数写入海量数据高速缓存器S的描述符中。