一种具有预恢复功能的文件级连续数据保护方法

文档序号:6431796阅读:163来源:国知局
专利名称:一种具有预恢复功能的文件级连续数据保护方法
技术领域
本发明属于数据存储领域,具体涉及一种具有预恢复功能的文件级连续数据保护方法。该方法能够实现在时间和空间两个维度上的预恢复功能,减少用户的恢复时间。
背景技术
目前,连续数据保护(Continuous Data Protection,CDP)是最热门的数据保护方式。连续数据保护能够持续捕获和保存数据变化,并将变化后的数据独立于初始数据进行保存。利用连续数据保护,用户可以将数据恢复到过去任意一个时间点,从时间上极大地保护了用户数据。在业界,有两个重要指标用来衡量一个数据保护系统RTO(Recovery Time Object,恢复时间目标)^P RPO(Recovery Point Object,恢复点目标)。RTO表示在发现故障后,多长时间可以恢复数据和系统的正常运行,简单的理解就是恢复数据时的时间开销。 RTO越小越好,理论上立即恢复(RTO = O)是最佳。RPO表示在发现故障后,数据和业务能够恢复到出现故障时的多长时间以前,简单的理解就是恢复数据后所丢失的数据量。例如 用户早上8点备份了数据,而中午12点时数据丢失损坏。此时,如果用户用早上8点的数据进行恢复,那么RPO就是4小时。同样RPO也是越小越好,理论上一点数据都不丢(RP0 =0)是最好。连续数据保护方法根据保护粒度的不同分为块级、文件级和应用级。块级连续数据保护实现简单,但是灵活性不好,且不能提供语义。在用户需要将某一文件恢复到过去某一个时刻时,首先要将这个文件所在的卷恢复到过去的那个时刻,然后才能得到此文件。同时由于块级连续数据保护不能提供语义,所以不能保证已经恢复了的文件是完整可用的版本,这大大增加了 RT0。文件级连续数据保护是以文件为基本粒度进行的,能够拦截用户对文件的1/0请求,并对文件改变进行保护。文件级连续数据保护维护了同一个文件在时间上的不同版本,每一个版本都是完整可用的。文件级连续数据保护具有语义,并有很好的灵活性。目前,文件级连续数据保护是企业界和计算机科学家们共同的关注热点。在理论上和实际中文件级连续数据保护的RPO都为0,但是RTO往往比较大,成为了文件级连续数据保护发展的一个瓶颈。主要的原因在于大多数情况下用户并不知道故障的确切发生时间,即用户并不知道需要将数据恢复到哪一个时间点。所以在实际中经常发生这样的情况用户先将部分文件恢复到过去的某一个时间点,查看这些恢复后的文件,确定故障是在这个时间点之前还是之后发生的;然后再将部分文件恢复到在此之前或者之后的某一个时间点,往复几次后,确定了真正需要恢复的时间点,之后才将所需要的全体数据进行恢复。事实上用户会多次恢复多个文件到过去的多个时间点来确定真正需要恢复的时间点。因此在实际应用中的RTO是以下三部分操作的时间之和为了确定真正需要的恢复时间点所进行的对多个文件的多次恢复操作的时间消耗(简称为恢复测试文件时间)、用户阅读判断测试文件的时间消耗(简称为用户判断时间)和恢复所需全部数据的恢复时间消耗(简称为恢复时间)。其中,恢复测试时间和用户判断时间是不可测因素,成为RTO 居高不下的一个重要原因。
频繁模式挖掘算法是数据挖掘中很重要的一个方向,目前已有一些经典算法,例如Apriori算法等,具体参见《数据挖掘原理与算法》毛国君著清华大学出版社,ISBN: 7302106312 ;《数据挖掘导论》[美]Pang-Ning TanMichael Steinbach Vipin Kumar 著人民邮电出版社ISBN :71151414440

发明内容
本发明的目的在于提供一种具有预恢复功能的文件级连续数据保护方法,该方法能够有效的减少RTO。本发明提供的一种具有预恢复功能的文件级连续数据保护方法,包括保护过程和恢复过程,其特征在于,该方法还包括挖掘过程,挖掘过程利用频繁模式挖掘算法,通过挖掘保护过程中收集到的I/O序列,得到I/O请求之间的关联关系,以此对恢复过程中用户的输入进行预测,并根据预测得到的结果提前进行恢复,以减少RTO。所述恢复过程按照步骤Rl至R14进行Rl初始化建立目标文件队列NF,预恢复文件队列PF,已恢复文件库ND,并初始化 NF、PF和ND为空;其中,NF,PF和ND中的每一个元素均是一个二元组,拥有两个属性文件路径和目标时间;R2接收来自用户的恢复请求,得到目标文件F和目标恢复时间点T ;R3在已恢复文件库ND中查找F和T,如果找到,将F和T加入目标文件队列NF,然后进入步骤R6 ;如果没有在ND中找到F和T,进入步骤R4 ;R4恢复目标文件F到T时刻;R5将F和T分别加入已恢复文件库ND和目标文件队列NF ;R6更新预恢复文件队列PF ;R7判断预恢复文件队列PF是否为空,如果为空,进入步骤R8 ;如果不为空,进入步骤R9 ;R8等待用户请求,如果用户请求来到,进入R13 ;R9取预恢复文件队列PF头部的第一个元素(P1, T1),在已恢复文件库ND中查找 (P1, T1),如果不存在,进入步骤RlO ;如果存在,进入步骤Rll ;RlO恢复P1到T1时刻,将(P1, T1)加入到已恢复文件库ND ;Rll从预恢复文件队列PF中删除(P1, T1);R12判断是否有请求达到,如果没有,进入步骤R7 ;如果有请求达到,进入步骤 R13 ;R13判断请求类型,如果是结束请求,进入R步骤14;如果是恢复请求,进入步骤 R2 ;R14 结束。本发明利用用户判断时间进行时间和空间两个维度上的预恢复,也就是利用系统空闲时间恢复部分用户可能会需要的文件,将恢复测试文件时间与用户判断时间尽可能的重合,以减少RT0。本发明借鉴计算机存储系统中的预取概念,应用在连续数据保护领域,利用系统空闲时间提前进行部分文件的恢复,能够有效减少RT0,提高文件级连续数据保护系统的性能。


图1是整体关系图;图2是恢复过程的流程图;图3是恢复过程的状态转换图;图4是预恢复文件队列更新过程的流程图。
具体实施例方式本发明能够将RTO减少到什么程度,取决于用户需要的文件有多少已经被预恢复了。灾难发生后,如果用户除了第一个以外的需要恢复的文件,都已经被预恢复了,实现了恢复测试文件时间与用户判断时间的几乎重合,那么本发明将达到最好的效果。于是分析用户行为模式,提出有效的预恢复算法成为核心问题。当灾难发生后,用户在不知道确切的故障发生时间时,会先恢复部分文件来确定故障发生时间。一般情况下,用户会恢复他比较熟悉的、经常操作的文件。在计算机系统来说,也就是最近最频繁操作的文件。很可能,用户将一个文件恢复到过去某一个时间点后, 发现并不能通过此文件判断出这个时间点距离故障时间点的远近,还需要再恢复其他的文件进行辅助判断。在平时的业务处理中,这些文件往往一起进行操作,具有内容相关性。举个例子,在数据库中,表之间经常有共同的列,一般情况下会将相关的几个表一起进行处理。在I/O序列中,我们也会常看到某些文件项集(几个文件排成的序列,顺序不一定)出现的频率很高。由此,有效的预恢复算法要能够找到使用频繁的文件和出现频繁的文件项集(简称为频繁项集)。使用频繁的单个文件就是文件个数是1的频繁项集。另外,在用户确定确切的故障发生时间时,会需要将部分文件恢复到多个时间点进行判断。基于以上分析,我们的预恢复算法要找到包含用户目前输入文件的频繁项集和这个文件在时间上之前和之后的版本。找到同一个文件在时间轴上的不同版本是连续数据保护技术中比较基础的功能。怎样找到频繁项集是我们目前需要解决的问题。在本发明中我们对频繁项集的定义是在一个I/O序列中,频繁出现的文件集合。 举个例子,I/O序列是a,t,e, i,q,ο, t,a, k,i。这个I/O长度为10,长度为2的文件集合一共有 9 个,有{a, t},{e,t},{e,i},{i,q},{q,ο},{ο, t},{a, t},{a, k},{i,k}。在文件集合中,文件之间的顺序是可以任意的。其中{a,t}出现的频率是2/9,设最小支持度是20%,那么{a,t}就是一个频繁项集。m维频繁项集表示元素个数为m的频繁项集。本发明的挖掘过程可以利用频繁模式挖掘中的挖掘频繁项集的算法,得到I/O序列中的关联关系,以期对恢复过程中用户的输入做出预测。由于频繁模式挖掘已经有很多研究成果,所以在这里我们对这个算法的细节不做详细介绍。本发明是对原有的文件级连续数据保护方法的一个扩充和改进。原有的文件级连续数据保护方法主要有两个过程保护过程和恢复过程。保护过程是伴随着被保护文件系统的I/O操作进行的,将被保护文件系统的改变以一定的形式进行存储。当被保护系统发生故障或者灾难时,用户启动恢复过程。恢复过程需要用户输入需要恢复的文件(可以是卷,也可以是文件夹,或者是单个文件)和需要恢复到的时间点。恢复过程利用保护过程存储的信息进行恢复操作。本发明在原有文件级连续数据保护方法的基础之上新增加了一个过程挖掘过程,并重点扩充了恢复过程的处理流程,已达到减少RTO的目的。利用本发明的思想和实现能够改进所有已有的文件级连续数据保护方法,因为本发明并不涉及保护过程和恢复过程的具体实现,而是增加了挖掘过程,扩充了保护过程和恢复过程的处理流程。 在形式和实现上,本发明只是对原有文件级连续数据保护方法的一个扩充,因此适用于改进目前所有的文件级连续数据保护方法。本发明主要有三个过程保护过程、挖掘过程和恢复过程。图1表明了这三个过程的触发方式和运行的时间关系。保护过程、挖掘过程和恢复过程这三个过程是异步进行的, 在时间上没有必然依赖关系,只是有一些数据交互。本发明在保护过程中将用户的I/O序列保存下来,提供给挖掘过程输入,其他的与一般的文件级连续数据保护的保护过程相同,文件操作序列即I/O序列。保护过程是伴随着用户的平时业务流程一起进行的,见图1。根据应用环境的需要设置挖掘频率,建议是在3周到10周启动一次挖掘过程。挖掘频率的设置与被保护文件系统的文件更新频率有关,如果被保护文件系统的文件更新频率比较快,则需要较高的挖掘频率。如果是应用在公司企业的正常办公系统中,文件更新频率比较慢,则不需要很高的挖掘频率,8-10周一次就可以了。启动一次挖掘过程,对这段时间内保护过程产生的I/O序列(局部I/O序列)进行挖掘,产生对应于这段时间的一个局部频繁项集库。局部频繁项集库拥有时间属性,有一个起始时间和终止时间,如图1。图1 表示了本发明的三个过程的启动时间和数据交互。横向表示时间,T1, T2, T3、T4、T5表示等距的时间点,均相差M时间长度。保护过程是伴随着用户I/O请求一直进行的,挖掘过程是定期进行的,在图中可看出,挖掘过程间隔M时间长度进行一次,M即挖掘频率。恢复过程由用户启动。在恢复过程中,需要用到相应时间的局部频繁项集库,例如在T4-T5时间内的恢复请求,需要用到T3-T4时间段产生的局部频繁项集库。挖掘过程的核心是挖掘频繁项集的算法,此算法在90年代已经提出,并得到很大的改善,对本发明对此算法没有特殊的要求,在此就不对算法过程进行详细描述。在这里, 我们将挖掘频繁项集的算法当作一个黑盒子,输入是局部I/O序列(即被挖掘对象)和最小支持度,输出是挖掘出的局部频繁项集库。局部频繁项集库中都是频率超过最小支持度的频繁项集。最小支持度的数值是在O到1之间,建议在0. 3以上。图2阐述了恢复过程。在恢复过程中重点是利用两次恢复请求之间的等待时间 (即用户判断时间),进行预恢复操作,以达到减少RTO的目的。图3表示了在恢复过程中存在的若干状态,以及这些状态之间的转换。更新预恢复文件队列PF的过程是恢复过程中非常重要的一步,同时,不局限于预恢复的方式和算法,任何不脱离本发明所公开的精神下完成的等效或修改,都落入本发明保护的范围,用Gl-Gll和图4进行阐述说明。本发明的恢复过程(图2所示),按照(R1-R14)进行。Rl 初始化建立目标文件队列NF,预恢复文件队列PF,已恢复文件库ND,并初始化NF、PF和ND为空。其中,NF, PF和ND中的每一个元素均是一个二元组,拥有两个属性 文件路径和目标时间。R2 接收来自用户的恢复请求,得到目标文件F和目标恢复时间点Τ。R3 在已恢复文件库ND中查找(F,Τ),如果找到,将(F,Τ)加入目标文件队列NF, 然后进入R6 ;如果没有在ND中找到(F,Τ),进入R4。
R4 恢复目标文件F到T时刻。R5 将(F,T)分别加入已恢复文件库ND和目标文件队列NF。R6 更新预恢复文件队列PF。R7 判断预恢复文件队列PF是否为空,如果为空,进入R8 ;如果不为空,进入R9。R8 等待用户请求,如果用户请求来到,进入R13。R9:取预恢复文件队列PF头部的第一个元素(P1, T1),在ND中查找(P1, T1),如果不存在,进入RlO ;如果存在,进入R11。RlO 恢复P1到T1时刻,将(P1, T1)加入到ND。Rll 从预恢复文件队列PF中删除(P1, T1)。R12 判断是否有请求达到,如果没有,进入R7 ;如果有请求达到,进入R13。R13 判断请求类型,如果是结束请求,进入R14 ;如果是恢复请求,进入R2。R14:结束。在恢复过程中,在不执行用户的恢复请求时,就一直进行预恢复操作,一直到预恢复队列为空。这样的流程设计可以保证充分利用系统空闲时间进行预恢复操作,以达到减少RTO的目的。图4阐述了预恢复文件队列的更新过程。这个过程是由恢复过程(图2所示)启动,有两个输入参数目标文件队列NF和预恢复文件队列PF。这两个参数都是由恢复过程提供的。执行结果是生成了预恢复文件,并添加到预恢复文件队列。更新预恢复文件队列的过程按照(Gl-Gll)进行Gl 获取NF(目标文件队列)和PF(预恢复文件队列)。G2 获取NF中首部的第一个元素(P1, T1)。G3 将(P1, T1)基于时间T1的前一个版本(P1, T0)和后一个版本(P1, T2)添加到 PF。G4 根据T1找到从挖掘过程中得到的相应的局部频繁项集库S,即T1要大于此频繁项集库的起始时间,小于等于其终止时间。G5 取得S中包含元素最多的频繁项集的元素个数K,赋值η = K_l。G6 判断η是否大于0,如果η大于0,进入G7 ;如果η小于等于0,进入Gll。G7 取NF中首部的的η个元素的文件路径,组成集合Νη。
G8 取S中所有的m维频繁项集,要求m大于n,组成集合F_m。G9 将集合F-m中的每一个频繁项集与Nn做差运算(集合运算中的一种),得到的差集中的元素与T1组成二元组后,加入到PF。GlO 将η减1后赋给n,进入G6。Gll 结束。以上所述为本发明的较佳实施例而已,但本发明不应该局限于该实施例和附图所公开的内容。所以凡是不脱离本发明所公开的精神下完成的等效或修改,都落入本发明保护的范围。
权利要求
1.一种具有预恢复功能的文件级连续数据保护方法,其特征在于,该方法包括保护过程、恢复过程和挖掘过程,挖掘过程以预先设定的最小支持度和保护过程获取的局部I/ 0序列作为输入,通过挖掘得到局部频繁项集库,并将局部频繁项集库提供给恢复过程使用;所述恢复过程按照步骤Rl至R14进行Rl初始化建立目标文件队列NF,预恢复文件队列PF,已恢复文件库ND,并初始化NF、 PF和ND为空;其中,NF, PF和ND中的每一个元素均是一个二元组,拥有两个属性文件路径和目标时间;R2接收来自用户的恢复请求,得到目标文件F和目标恢复时间点T ; R3在已恢复文件库ND中查找F和T,如果找到,将F和T加入目标文件队列NF,然后进入步骤R6 ;如果没有在ND中找到F和T,进入步骤R4 ; R4恢复目标文件F到T时刻;R5将F和T分别加入已恢复文件库ND和目标文件队列NF ; R6更新预恢复文件队列PF ;R7判断预恢复文件队列PF是否为空,如果为空,进入步骤R8 ;如果不为空,进入步骤R9 ;R8等待用户请求,如果用户请求来到,进入R13 ;R9取预恢复文件队列PF头部的第一个元素(P1, T1),在已恢复文件库ND中查找(P1, T1),如果不存在,进入步骤RlO ;如果存在,进入步骤Rll ;RlO恢复P1到T1时刻,将(P1, T1)加入到已恢复文件库ND ; Rll从预恢复文件队列PF中删除(P1, T1);R12判断是否有请求达到,如果没有,进入步骤R7 ;如果有请求达到,进入步骤R13 ; R13判断请求类型,如果是结束请求,进入R步骤14 ;如果是恢复请求,进入步骤R2 ; R14结束。
2.根据权利要求1所述的文件级连续数据保护方法,其特征在于,步骤R6中,按照Gl 至Gll的过程更新预恢复文件队列Gl获取目标文件队列NF和预恢复文件队列PF ; G2获取目标文件队列NF中首部的第一个元素(P1, T1);G3将(P1, T1)基于时间T1的前一个版本(P1, T0)和后一个版本(P1, T2)添加到PF ; G4根据T1找到从挖掘过程中得到的相应的局部频繁项集库; G5取得局部频繁项集库中包含元素最多的频繁项集的元素个数K,赋值η = K-I ; G6判断η是否大于0,如果η大于0,进入步骤G7 ;如果η小于等于0,进入步骤Gll ; G7取目标文件队列NF中首部的的η个元素的文件路径,组成集合Nn ; G8取局部频繁项集库中所有的m维频繁项集,要求m大于n,组成集合F_m ; G9将集合F-m中的每一个频繁项集与Nn做差运算,得到的差集中的元素与T1组成二元组后,加入到预恢复文件队列PF ;GlO将η减1后赋给η,进入步骤G6 ; Gll结束。
全文摘要
本发明公开了一种具有预恢复功能的文件级连续数据保护方法,包括保护过程、恢复过程和挖掘过程,挖掘过程以预先设定的最小支持度和保护过程获取的局部I/O序列作为输入,通过挖掘得到局部频繁项集库,并将局部频繁项集库提供给恢复过程使用;在恢复过程中重点是利用两次恢复请求之间的等待时间进行预恢复操作,以达到减少RTO的目的。本发明利用用户判断时间进行时间和空间两个维度上的预恢复,也就是利用系统空闲时间恢复部分用户可能会需要的文件,将恢复测试文件时间与用户判断时间尽可能的重合,以减少RTO。本发明借鉴计算机存储系统中的预取概念,应用在连续数据保护领域,利用系统空闲时间提前进行部分文件的恢复,能够有效减少RTO,提高文件级连续数据保护系统的性能。
文档编号G06F11/14GK102279778SQ20111025095
公开日2011年12月14日 申请日期2011年8月29日 优先权日2011年8月29日
发明者叶松, 曹强, 李欣, 谢长生, 黄建忠 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1