一种连续数据保护系统的快速恢复方法

文档序号:6341565阅读:177来源:国知局

专利名称::一种连续数据保护系统的快速恢复方法
技术领域
:本发明属于数据保护容灾备份
技术领域
,涉及一种块级连续数据保护系统的快速恢复方法。
背景技术
:在处理信息数据时,为保护重要的数据信息,通常采用数据备份技术,以便在数据不可用时能从备份介质中恢复数据。但是在恢复数据时,两次备份之间的数据将会丢失。对于一些关键的信息系统,所能容忍的数据丢失量,即恢复点目标(RPO,RecoveryPointObject)要尽可能的低,这就需要应用连续数据保护(CDP,ContinuousDataProtection)技术。CDP技术是将更改过的所有数据按时间顺序保存下来,在系统每次写操作时,都会生成带有时间戳的数据块版本,从而在恢复数据时能够获取任意一个时间点的数据状态。其中,块级CDP是将一个磁盘,即逻辑单元(LUN,LogicalUnit)划分为固定大小的数据块,并以数据块为单位记录数据变化,其特点是与应用的耦合比较低,性能和效率优于文件级CDP。当需要恢复数据到某个指定的时间点时,带有块级CDP的系统可以从开始时间点遍历所有已经记录的修改过的数据块,一直到指定的时间点,从而恢复该时间点的数据状态,即,获得该时间点的磁盘的每一个逻辑块地址(LBA,LogicalBlockAddress)与CDP所记录的数据块之间的映射关系。为了縮短遍历时间,通常需要在CDP中定期产生数据快照,将某个时刻的映射关系存储起来。当要恢复快照时刻的数据时,就可以直接获得映射关系,也就无需再遍历CDP日志。当要恢复数据到其它时间点时,可从该时间点之前的那一次快照开始,遍历CDP日志直到该时间点,即可获得映射关系,也就无须从开始时间点遍历。要恢复到任意时间点的数据,则需要从该时间点的上一次快照开始,遍历CDP日志,以获得该时间点的映射关系。该时间点与上次快照之间的时间间隔越长,日志区中的数据变化量相应增加,恢复所需的时间也就越长。在恢复数据时,CDP为磁盘的所有数据块重建映射表之后,将产生一个磁盘映像供用户使用。但是,即使用户只需从CDP提供的磁盘映像中恢复少量文件或查看个别文件的内容,即,即使只需读取磁盘映像中的一小部分数据块,也必须等待CDP系统遍历日志区以获得所有数据块的映射表之后,才能使用磁盘映像。这就使得数据恢复过程较为耗时,无法做到快速恢复。
发明内容本发明的目的是为了克服现有技术的缺陷,提供一种在块级CDP系统中对任意时间点数据的快速恢复方法。在生成某一时间点的磁盘映像时,CDP系统不需要获取磁盘全部数据块的映射关系,而是当计算机读取磁盘映像的某一个数据块时,CDP系统从日志中获3取该数据块的映射关系,再从CDP数据区中获取数据块内容。该方法实现了磁盘数据块的按需恢复,能够在较短的时间内为用户提供任意时间点的磁盘映像。为实现上述目的,本发明所采用的技术方案如下—种连续数据保护系统的快速恢复方法。CDP系统维护一张映射表,该表记录了磁盘中所有数据块的最后一次修改操作。对于每一个写入的数据块,CDP系统均生成一个链表节点,也就是生成一个记录该写操作的CDP元数据。CDP系统在该链表节点中记录下数据块的块号,并设置本节点的一个后向链接字段,以及映射表中相应块号的最后一次修改位置。数据块和链表节点分别写入CDP日志。当需要恢复系统到某个指定时间点时,首先建立一个临时映射表,并将其中的内容全部设为-1。之后,将磁盘映像作为一个逻辑单元(LUN)提供给计算机使用。当计算机对磁盘映像发起读请求时,CDP系统根据读请求中的数据块号,获得临时映射表的对应表项。当表项内容为-1时,从系统当前映射表开始,通过后向链接向前查找,一直查找到指定时间点之前的最新节点,此时,获取到该时间点此数据块在CDP日志数据区中的位置(即块号),并将它保存到临时映射表的对应表项中。然后,根据临时映射表的表项内容,从CDP日志数据区中读出数据块内容,并返回给计算机。本发明的有益效果是1)无需遍历CDP日志即可提供磁盘映像。当计算机读取磁盘映像的某个数据块时,CDP系统根据链表从CDP元数据中获取该数据块的映射关系,实现磁盘数据块的按需恢复。尤其适合于用户需要快速建立磁盘映像,读取其中一小部分文件的情况。2)不依赖快照即可进行数据快速恢复。通过在CDP元数据中加入链接信息,使得可以从当前时间点快速回溯到指定的时间点,而不必从CDP日志的开始时间点或快照时间点开始遍历。图1为本发明的数据结构示意图;图2本发明实施例中的后向链接示意图。具体实施例方式下面结合附图和具体实施方式对本发明作进一步详细描述。—种连续数据保护系统的快速恢复方法,其技术方案如下首先对CDP日志及元数据结构进行描述,如图1所示。1、CDP日志CDP日志包括数据区和元数据区。数据区用于保存数据块;元数据区用于保存链表节点,即CDP元数据。数据区记录每一次数据块写操作的数据内容。数据区由M个数据块组成,块的编号为0《k《M-l。数据块的大小根据文件系统或上层应用的最小访问粒度确定(例如每块大小为4KB),将整个磁盘划分N个数据块,块地址的范围为0到N-l。2、链表节点链表节点作为CDP元数据,包括2个字段数据块的块号、后向链接字段。每一个链表节点对应于一个数据块写操作。链表节点在CDP日志的元数据区中顺序存放。日志能容纳的节点数为M,链表节点的序号为从l到M-l,节点记为Ck(l《k《M-l)。CDP系统不使用链表节点O。同时,设置一个计数器,从1开始计数,每当记录一个数据块写操作(即,在日志中加入一个CDP元数据)后,计数器便加1。链表节点的序号就是当前时刻计数器的计数值。对于第k个数据块写操作(即,计数器为k时接收到的写操作,1《k《M-l),CDP系统把要写入该数据块的数据保存到CDP日志的数据区中,块地址为k,并把这个操作的元数据存储在链表节点Ck中。Ck中存储的内容为Ck.L:该数据块的块号LCk.r:后向链接,即,该数据块的上一次写操作的元数据节点序号r图2表示了15次数据块写操作的链表节点。由图2中可以看出,共有8个数据块,块号为0至7。其中,数据块5未被写入。每个链表节点表示一次数据块写入操作,图中的横坐标是链表节点Q至C15的时刻,纵坐标是写入的数据块块号。例如,数据块6在时刻7和时刻13被写入,生成C7、C『图中实线箭头表示后向链接。3.映射表SCDP系统在内存中设置一个映射表S,表中一共N项,每一项记录当前时刻每个磁盘数据块的最后一次修改操作,即,记录该操作的链表节点(CDP元数据)的序号。节点序号为O,表示该数据块未被修改。映射表S中的每一项在系统初始化时被置为0。4.临时映射表W在恢复某时间点k的数据状态时,CDP系统在内存中建立一个临时映射表W,表W一共有N项,在初始化时均被置为-1,并提供一个磁盘映像供计算机访问。当计算机读取磁盘映像某个数据块时,CDP系统通过临时映射表W获取该磁盘数据块在时间点k前的最后一次修改操作位置,即该操作的节点序号。节点序号为0时,表示该数据块在时间点k时未被修改。节点序号为-1时,表示该数据块的位置尚未确定。5.秒级索引ICDP系统设置一个索引表,每一秒在索引表的末尾增加一项,记录当前时刻计数器的计数值。由此使恢复时间点能够精确到秒级。6.磁盘原始数据区R磁盘原始数据区的容量和要保护的磁盘相同,其容纳了N个数据块。在建立CDP系统时,将磁盘上的所有数据块复制到磁盘原始数据区。下面具体说明在CDP系统中针对某次写操作的数据恢复过程。CDP系统设置并维护映射表S,表S记录磁盘中所有数据块的最后一次修改操作。记录数据块写入操作的方法具体如下CDP系统中记录一个磁盘数据块写操作,块号为B,O《B《N-l,要写入该块的原始数据为D。其流程如下首先,取得当前计数器的计数值为k,计数值加1。若k大于等于数据区数据块最大数M,说明日志区已满,系统不再记录数据块写操作。若k小于M,将原始数据D写入到日志的数据区k。然后,构造此次数据块写操作的元数据,即链表节点Ck,Ck的2个字段Ck.L、Ck.r:a)Ck.L=B,即记录该数据块对应的块号。b)Ck.r=S[B],本链表节点Ck的后向链接指向该数据块的上一次修改位置,即上一次修改操作的链表节点在CDP元数据区中的序号。最后,更新映射表S,S[B]=k。当需要恢复系统到用户指定的时间点时,CDP系统建立该时刻的磁盘映像供计算机访问。首先,在秒级索引I中获取该时刻的计数值,记为k。然后,将临时映射表W中的每一项初始化为-1。最后,使用临时映射表W构造一个虚拟磁盘,作为一个逻辑单元(LUN)供计算机访问。在建立指定时间点k的磁盘映像后,CDP系统就接受计算机对磁盘映像的读取请求。从计算机的角度看,磁盘映像保存某一时刻所有磁盘数据块的内容,当收到一个读请求后,系统按顺序执行以下步骤首先,从读请求中获取数据块号B。然后,读取临时映射表W中数据块号B的表项内容,即W[B]。如果W[B]二-l,则从当前映射表S中读取S[B],并从节点CS[B]开始,沿着后向链接查找。若查找过程中某链表节点Ci的序号i《k,则记录W[B]=i,查找结束;如果链表中某个链表节点的后向链接Cj.r=O,数据块B在时间点k之前没有被修改,设置W[B]=O,查找结束。如果W[B]=O,则直接从磁盘原始数据读出数据块(块号为B)返回给计算机;否则在CDP日志数据区中读出数据块(块号为W[B])返回给计算机R。实施例例如,在图2中,当前时刻为15,则当前系统映射表S的内容为S[O]S[l]S[2]S[3]S[4]S[5]S[6]S[7]<table>tableseeoriginaldocumentpage6</column></row><table>要建立指定时间点k=7的磁盘映像,要初始化一张临时映射表W,其中各项的值全部为-l。若此时收到读请求,要读取块号为3(B=3)的数据块。由于W[3]=-1,S[3]=15,该数据块的后向链接节点为C15、C6、C3。查找过程中,沿该链表一直查找到C6才满足条件(i二6,6《7),设置W[3]二6,将CDP日志数据区中块号为6的数据块读出,返回给计算机。以后,如果计算机要读取数据块3时,由于W[3]=6,直接从日志数据区中读出块号为6的数据块即可,而不需遍历后向链表。若又收到读请求,要读取块号为7(B=7)的数据块。该数据块的后向链接节点为C14、C8。查找过程中,没有满足条件(i《k)的节点Ci,设置W[7]=0,从磁盘原始数据区中读出数据块(块号为7),返回给计算机。权利要求一种连续数据保护系统的快速恢复方法,其特征在于CDP系统维护一张映射表,该表记录了磁盘中所有数据块的最后一次修改操作;对于每一个写入的数据块,CDP系统均生成一个链表节点,也就是生成一个记录该写操作的CDP元数据;CDP系统在该链表节点中记录下数据块的块号,并设置本节点的一个后向链接字段,以及映射表中相应块号的最后一次修改位置;数据块和链表节点分别写入CDP日志;当需要恢复系统到某个指定时间点时,首先建立一个临时映射表,并将其中的内容全部设为-1;之后,将磁盘映像作为一个逻辑单元提供给计算机使用;当计算机对磁盘映像发起读请求时,CDP系统根据读请求中的数据块号,获得临时映射表的对应表项;当表项内容为-1时,从系统当前映射表开始,通过后向链接向前查找,一直查找到指定时间点之前的最新节点,此时,获取到该时间点此数据块在CDP日志数据区中的位置,并将它保存到临时映射表的对应表项中;然后,根据临时映射表的表项内容,从CDP日志数据区中读出数据块内容,并返回给计算机。2.如权利要求1所述的一种连续数据保护系统的快速恢复方法,其特征在于,记录数据块写操作的方法具体如下CDP系统中记录一个磁盘数据块写操作,块号为B,O《B《N-l,要写入该块的原始数据为D,其流程如下首先,取得当前计数器的计数值为k,计数值加1;若k大于等于数据区数据块最大数M,说明日志区已满,系统不再记录数据块写操作;若k小于M,将原始数据D写入到日志的数据区k;然后,构造此次数据块写操作的元数据,即链表节点Ck,Ck的2个字段Ck.L、Ck.r:a)Ck.L=B,即记录该数据块对应的块号;b)Ck.r=S[B],本链表节点Ck的后向链接指向该数据块的上一次修改位置,即上一次修改操作的链表节点在CDP元数据区中的序号;最后,更新映射表S,S[B]=k。全文摘要本发明公开了一种连续数据保护系统的快速恢复方法。在生成某一时间点的磁盘映像时,CDP系统不需要获取磁盘全部数据块的映射关系,而是当计算机读取磁盘映像的某一个数据块时,CDP系统从日志中获取该数据块的映射关系,再从CDP数据区中获取数据块内容。该方法实现了磁盘数据块的按需恢复,能够在较短的时间内为用户提供任意时间点的磁盘映像。文档编号G06F11/14GK101777017SQ20101918501公开日2010年7月14日申请日期2010年2月8日优先权日2010年2月8日发明者何广韬,周泽湘,李虓,肖建国,谭毓安申请人:北京同有飞骥科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1