Transcript
Page 1: 基于数据差异的连续数据保护恢复算法cjc.ict.ac.cn › online › onlinepaper › wc.pdf · 了块级连续数据保护技术的应用,所以,目前大部分 的研究[811]集中于解决传统块级连续数据保护机制

书书书

第36卷 第11期2013年11月

计  算  机  学  报CHINESEJOURNALOFCOMPUTERS

Vol.36No.11Nov.2013

 

收稿日期:20121227;最终修改稿收到日期:20130511.本课题得到国家“九七三”重点基础研究发展规划课题(2012CB316203)、国家自然科学基金(61033007/F020204)资助.王 超,男,1985年生,博士研究生,主要研究方向为海量数据存储、数据保护技术等.Email:wch@mail.nwpu.edu.cn.李战怀,男,1961年生,博士,教授,博士生导师,主要研究领域为数据库系统等.张小芳,女,1971年生,博士,副教授,主要研究方向为分布式计算、数据容灾、软件工程理论等.侯利曼,女,1986年生,硕士,主要研究方向为数据保护技术.

基于数据差异的连续数据保护恢复算法王超 李战怀 张小芳 侯利曼

(西北工业大学计算机学院 西安 710072)

摘 要 连续数据保护系统在进行数据恢复时,首要任务是从历史时刻中快速识别出可恢复时刻点,总恢复时间通常与恢复时刻点识别过程中所检测的历史数据版本成正比.然而,基本数据恢复方法的恢复效率低,无法适应现代存储系统对可用性和可靠性的要求,恢复时间和数据损失之间的矛盾日益突出.通过对邻近算法的改进和完善,提出了一种支持多间隙复杂情况的恢复算法———RMCBDD.RMCBDD通过分析并消除恢复起止时刻之间两种类型的差异数据实现恢复.实验结果表明,在多间隙复杂情况下,RMCBDD算法的恢复效率明显优于基本方法和WDRS算法,有效降低了二分探查最佳恢复时刻点的时间开销.

关键词 连续数据保护;数据恢复;数据差异;块数据;可用性中图法分类号TP333   犇犗犐号 10.3724/SP.J.1016.2013.02303

犚犕犆犅犇犇:犚犲犮狅狏犲狉狔犕犲狋犺狅犱犳狅狉犆犇犘犅犪狊犲犱狅狀犇犪狋犪犇犻狊犮狉犲狆犪狀犮犻犲狊WANGChao LIZhanHuai ZHANGXiaoFang HOULiMan

(犛犮犺狅狅犾狅犳犆狅犿狆狌狋犲狉犛犮犻犲狀犮犲犪狀犱犜犲犮犺狀狅犾狅犵狔,犖狅狉狋犺狑犲狊狋犲狉狀犘狅犾狔狋犲犮犺狀犻犮犪犾犝狀犻狏犲狉狊犻狋狔,犡犻’犪狀 710072)

犃犫狊狋狉犪犮狋 Whenthecontinuousdataprotection(CDP)systemperformsdatarecoveryafterdatacorruption,theprimarytaskistoquicklydeterminearecoverypointthatprovidesacleancopyofthedata.Thetotalrecoverytimeisproportionaltothenumberofhistoricalcopiesexaminedintheprocessofrecoverypointidentification.Thehighavailabilityandhighreliabilityofcomputerizeddatahasaraiserequirementformodernstoragesystems.Buttherecoveryefficiencyofbasicrecoverymethodforblocklevelcontinuousdataprotectionislow,andthecontradictionbetweentherecoveryspeedanddatalossbecomeincreasinglyprominent.Afterimproveandrefinetheneighboringpointdatarecoverymethod,thispaperpresentsarecoverymethodforCDPbasedondatadiscrepancies(RMCBDD).Inmultigapsituations,RMCBDDperformsdatarecoverybyeliminatingthedatadiscrepanciesbetweenstartingandendingpoints.ExperimentalevaluationdemonstratesthattherecoveryefficiencyofRMCBDDissignificantlybetterthanbasicmethodandWDRS,especiallythebinarysearchforoptimalrecoverypointidentification.

犓犲狔狑狅狉犱狊 continuousdataprotection;datarecovery;datadiscrepancies;blocklevel;availability

1 引 言面对病毒入侵、人为破坏[1]、硬件失效以及自然

灾害等威胁,数据保护已成为政府机构、商业组织以及个人需要面对的重要问题.

在容灾理论中,RPO(RecoveryPointObjective)和RTO(RecoveryTimeObjective)[23]是衡量数据

Page 2: 基于数据差异的连续数据保护恢复算法cjc.ict.ac.cn › online › onlinepaper › wc.pdf · 了块级连续数据保护技术的应用,所以,目前大部分 的研究[811]集中于解决传统块级连续数据保护机制

保护方法的重要指标.RPO描述了灾难后可接受的数据丢失量,RTO描述了灾难后恢复数据所需要的时间.根据RPO的不同,将目前常见的块级数据保护技术分为定期备份(PeriodicalBackup)[46]、快照(Snapshot)[7]和连续数据保护(ContinuousDataProtection,CDP)三类.

连续数据保护(ContinuousDataProtection,CDP)技术[3,8],可以在不影响正常数据业务的前提下,通过实时跟踪并记录所有数据的更新,能够在出现数据损坏或丢失等问题时,将数据恢复到任意历史时刻.传统的块级连续数据保护技术,其实现机制通常是按照时间顺序、以单一写请求为单位保存每个数据块的所有更新,在数据恢复时则只需替换所有时间戳在恢复时刻点之前的数据块即可.与前两种技术相比,块级连续数据保护技术可以在数据失效后及时恢复至以单一写请求为单位的任意历史时刻,数据丢失量最小.

在数据失效后,必须在识别出一个可恢复时刻点之后,才能开始执行数据恢复操作.虽然连续数据保护技术可以将数据恢复至任意历史时刻,但却不能帮助可恢复目标时刻点的识别,连续的历史时刻反而使得恢复目标时刻点的识别变得更加复杂.

为了快速识别可恢复时刻点,通常采用二分探查的方式,在初始时刻和发生数据失效的时刻之间进行探查,探查过程中将数据依次恢复至每个探查的时刻点,并对数据的完整性进行检测,然后根据检测结果判断下一次二分探查的方向.由于探查过程需要执行多次数据恢复,并进行完整性检测,因此,相比执行数据恢复操作所花费的时间,识别恢复目标时刻点则要耗费更多的时间.可见,降低总恢复时间的关键在于降低恢复时刻点识别所需要的时间.

系统管理员在选择恢复目标时刻点时,需要在总恢复时间和丢失数据量之间进行权衡,探查的时刻点越多,通常意味着消耗更多的时间,但却可以识别出丢失数据更少的恢复时刻点.随着现代存储系统对可用性和可靠性要求的不断提高,恢复时间和数据损失之间的矛盾日益突出.然而,块级连续数据保护机制的基本恢复方法,在恢复数据时简单地基于初始备份依次Redo所有时间戳在恢复目标时刻点之前的历史数据,恢复效率极低,已经无法满足现代存储系统的需求.

由于连续数据保护系统需要保存各个数据块的所有更新,历史数据需要占用大量的存储空间,限制了块级连续数据保护技术的应用,所以,目前大部分

的研究[811]集中于解决传统块级连续数据保护机制的高存储开销问题.然而,对于如何快速地识别出数据损坏之前的最后一个可用数据镜像对应的时刻点,即最优恢复时刻点,相关的研究却非常有限.SWEEPER[12]根据对多种系统事件的监控分

析,有选择地针对特定时刻点所对应的数据镜像进行完整性检测,在不降低对RPO要求的前提下,减少了所需检测的数据镜像个数,从而加快恢复时刻点的识别,最终达到降低恢复时间的目的.

与SWEEPER通过减少探查次数的思路不同,提高数据恢复效率,降低每一次探查中恢复数据的时间开销,则是解决恢复时刻点识别问题的另一途径.

快照技术中的相关研究结合数据的分布特征提高快照的检索效率.如THVFS[13]利用目录、文件版本之间的相关性提高快照检索效率;Skippy[14]利用内存快照HotData的特性,提出了一种分层次的索引结构,提高长期快照的检索效率;结合数据分布特征和检索模式的分层二维索引结构HCSIM[15]能够提高高频快照索引的存储效率和检索效率.尽管这类技术可以提高快照检索效率,进而提高恢复速度,但却都是基于快照技术的相关研究,并不适合在数据块级的连续数据保护系统中使用.

WDRS[16]对块级连续数据保护系统的恢复过程进行了优化,通过位表的方式,保证了在执行数据恢复的过程中,数据卷中的每一个逻辑块均被恢复一次.因此,WDRS的恢复时间与数据卷的大小关系密切,而恢复起止时刻的位置对其的影响并不明显.WDRS恢复效率稳定,且优于基本恢复方法,但仍旧无法适应恢复时刻点识别的要求.

针对可恢复时刻点的快速识别问题,侯利曼等人[17]提出了“基于数据差异的CDP邻近时间点恢复”算法,简称“临近算法”.临近算法通过分析两相邻时刻的差异数据,采用剔除多余数据、写入缺少数据的方法,消除差异数据,对恢复起止时刻相距较近的情况,数据恢复效率极高.在通过二分探查的方式识别恢复时刻点时,随着二分探查次数的增加,相邻两次探查时刻点之间的时间间隔呈指数次幂减少,差异数据量随之骤减,临近算法大幅度提高了单次探查的效率,进而加速恢复时刻点的识别.

然而,临近算法仅根据时间间隔较小的两个临近时刻点之间的关系,在最多存在一个间隙的情况下,对可能出现的5种简单情况作了分析,然后分别对这5种情况给出了恢复方法.在连续数据保护系

4032 计  算  机  学  报 2013年

Page 3: 基于数据差异的连续数据保护恢复算法cjc.ict.ac.cn › online › onlinepaper › wc.pdf · 了块级连续数据保护技术的应用,所以,目前大部分 的研究[811]集中于解决传统块级连续数据保护机制

统的实际运行过程中,出现多次无规律数据恢复的情况是很常见的,即多间隙复杂情况,这时,仅支持最多一个间隙的5种简单情况的临近算法就无法适用.

鉴于临近算法仅支持最多一个间隙的简单情况,而无法在实际环境中应用的问题,本文对临近算法进行了改进与完善,提出了一种支持多间隙复杂情况的恢复算法———RMCBDD,并进行了详细的实验验证及分析,本文的主要贡献如下:

(1)通过形式化建模,对临近算法给出的5种时间点划分进行了详细的分析及证明.

(2)以消除恢复起止时刻之间差异数据的思想为指导,对临近算法进行了完善及改进,提出了支持多间隙复杂情况的RMCBDD算法,通过形式化的方式给出了RMCBDD的数据记录及数据恢复过程,并对算法的复杂度进行了比较分析.

(3)设计并实现了同时支持基本方法、临近算法、WDRS和RMCBDD4种恢复算法的原型系统,通过重放Trace数据的方式,对4种算法的恢复效率进行了比较,分析了间隙个数对恢复效率的影响.最后,通过模拟二分探查寻找可恢复时刻点的方式,比较了除临近算法外的3种恢复方法在恢复时刻点识别中的效率.

2 基本模型2.1 基本模型

对于由相同大小且相互独立的数据块组成的数据存储,每个数据块都包含相同大小的确定数据,并且由逻辑块地址(LogicalBlockAddress,LBA)唯一识别.假设犃是该数据存储中所有逻辑块地址的全集,犇表示数据块中所有可能的数据的集合.

定义1. 设犛狋为集合犃和集合犇上的二元关系,是由形式为〈犪,犱〉的二元序偶所组成的集合.对于确定的时刻狋,逻辑块地址犪唯一标识了数据块以及保存在该数据块上的确定数据犱,因此二元关系犛狋是一个函数,表示数据存储在时刻狋的镜像.用犛狋(犪)表示逻辑块地址犪所标识的数据块在时刻狋的数据镜像.

定义2. 写请求集合犚是由形式为〈狋,犪,犱〉的三元序偶组成的集合,记录了某一时间区间内,由逻辑块地址和时间戳标识的数据更新的集合.犚(狋1,狋2]

表示时间区间(狋1,狋2]内数据存储系统所产生的所有写请求的集合.

定义3. 逻辑块地址集合犅记录了某一时间区间内被更新的所有逻辑块地址,用犅(狋1,狋2]表示时间区间(狋1,狋2]内被更新的逻辑块地址集合,即对写请求集合犚(狋1,狋2]在逻辑块地址属性上进行投影运算犅(狋1,狋2]=犅(犚(狋1,狋2])=∏犔犅犃(犚(狋1,狋2]).

在某一时间区间内,数据存储可能对同一数据块提交多个写请求,但只有最后提交的写请求的结果会反映到最终时刻的镜像中,由这些有效写请求所更新的逻辑块地址及数据所构成的形式为〈犪,犱〉的二元组所组成的集合,即为该时间区间上的增量.数据存储在时间区间(狋1,狋2]的增量,可以通过对写请求集合犚(狋1,狋2]的运算得到.首先,对于犅(犚(狋1,狋2])中的每一个逻辑块地址,分别从集合犚(狋1,狋2]中选择出时间戳最大的写请求,然后将选出的写请求所组成的集合在逻辑块地址属性和数据属性上执行投影运算,即得到写请求集合犚(狋1,狋2]在时间区间(狋1,狋2]的增量.

定义4. 定义数据存储在时间区间(狋1,狋2]的增量犐(狋1,狋2]=Δ犛=犛狋2-犛狋1,即犐(狋1,狋2]=犐(犚(狋1,狋2])

=∏犔犅犃, (犱犪狋犪∪狀

犻=1(σmax(狋犻犿犲狊狋犪犿狆)(σ犔犅犃=犪犻(犚(狋1,狋2] )))),

犪∈犚(狋1,狋2],狀=σ犔犅犃=犪犻(犚(狋1,狋2]).定义5. 对于逻辑块地址全集犃的子集犃′,

定义/运算为犛狋/犃′=犛狋∩(犃′×犇),犃′犃,特殊的,当犃′=犅(狋1,狋2]时,犛狋2/犅(狋1,狋2]=犐(狋1,狋2].

为了叙述方便,使公式更加清晰,对于符号犛、犅、犚和犐以及任意时刻犜狓和任意时间区间(犜狔,犜狕],在下文中采用简写犛狓来表示犛犜狓;采用简写犅(狔,狕]、犚(狔,狕]和犐(狔,狕]来分别表示犅(犜狔,犜狕]、犚(犜狔,犜狕]和犐(犜狔,犜狕].2.2 临近算法的形式化分析及证明

连续数据保护系统在恢复数据时,通常需要通过完整性检测工具对历史时刻的数据镜像进行多次检测,以便确定可恢复时刻点.由于每次检测都需要将数据恢复至待检测时刻,多次数据恢复需要耗费大量的时间.然而,相邻两次探查时刻点之间通常相隔较小,数据差异并不大,通过对差异数据进行分析及处理,可以有效提高恢复效率.

定义6. 任意一次恢复操作之后,如果有写请求产生,则此次恢复的起始时刻与目标时刻之间的写请求就构成了一个间隙.由起止时刻为时刻点,狓和狔的恢复狓→狔所形成的间隙称为“间隙狓→狔”.

如图1(b)所示,连续数据保护系统在犜2时刻

503211期 王超等:基于数据差异的连续数据保护恢复算法

Page 4: 基于数据差异的连续数据保护恢复算法cjc.ict.ac.cn › online › onlinepaper › wc.pdf · 了块级连续数据保护技术的应用,所以,目前大部分 的研究[811]集中于解决传统块级连续数据保护机制

执行了目标时刻为犜1恢复,即犜2→犜1,并在此次恢复完成之后继续提交写请求,则时间区间[犜1,犜2-]之间的写请求构成了一个间隙,即间隙犜2→犜1.对于恢复路径中包含时刻点犜2+的所有时刻点,即时间区间[犜2+,犜3],在恢复时都需要剔除该间隙内的无效写请求.

图1 临近算法对时间点的划分示意图

侯利曼等人提出的“临近算法”,根据时间间隔较小的两个临近时刻点之间的关系,在不多于一个间隙的情况下,对可能出现的5种简单情况作了分析,基于这5种特殊情况的临近算法可以大幅度提高连续数据保护系统的恢复效率.下面对“临近算法”的5种情况分别进行了形式化分析.

(1)无间隙后临近时间点恢复对于无间隙后临近时间点恢复犜1→犜犪,如图1

(a)所示,当前数据卷状态所对应的时刻为犜1,目标时刻为犜犪,犜1和犜犪之间不存在间隙并且犜犪>犜1,则恢复犜1→犜犪可按照式(1)进行.

犛犪=(犛1-犛1/犅(1,犪])∪犐(1,犪] (1)证明是简单的,式(1)用时间点犜1到犜犪的增量

替换该时间段内发生改变的数据块中的数据,这与典型的Redo操作的恢复结果一致.

(2)无间隙前临近时间点恢复对于无间隙前临近时间点恢复犜1→犜犫,如图1

(a)所示,当前数据卷状态所对应的时刻为犜1,目标时刻为犜犫,犜1和犜犫之间不存在间隙并且犜犫<犜1.此时首先需要将时间区间(犜犫,犜1]内被更新的数据剔除,然后将被剔除数据块在犜犫时刻的数据镜像写入数据卷.恢复犜1→犜犫可按照式(2)进行.

犛犫=(犛1-犛1/犅(犫,1])∪(犐(0,犫]/犅(犫,1])∪(犛0/(犅(犫,1]-犅(0,犫])) (2)

证明. 通过关系代数可以容易的证明.犜1时刻数据卷的状态犛1,可以用初始时刻状态

犛0表示为(犛1-犛1/犅(犫,1])=(犛0-犛0/犛(0,1])∪(犐(0,犫]/(犅(0,犫]-犅(犫,1]))(3)

将式(3)代入式(2)可得到犛犫=(犛0-犛0/犛(0,1])∪(犐(0,犫]/(犅(0,犫]-犅(犫,1]))∪

(犐(0,犫]/犅(犫,1])∪(犛0/(犅(犫,1]-犅(0,犫])) (4)对于式(4)中的第一部分和最后一部分,第二部

分和第三部分,分别结合计算后可得出犛犫=(犛0-犛0/犅(0,犫])∪犐(0,犫] (5)

这与采用Redo方法的恢复结果一致.证毕.(3)有间隙后(间隙内)临近时间点恢复对于间隙内临近时间点恢复犜3→犜犮,如图1

(b)所示,当前数据卷状态所对应的时刻为犜3,目标时刻点为时间区间(犜2+,犜3]上的犜犮.首先需要将时间区间(犜犮,犜3]内被更新的数据剔除,然后将被剔除的数据块在犜犮时刻的数据镜像写入数据卷.恢复犜3→犜犮可按照式(6)进行.

犛犮=(犛3-犛3/犅(犮,3])∪(犐(2+,犮]/犅(犮,3])∪(犐(0,1]/(犅(犮,3]-犅(2+,犮]))∪(犛0/(犅(犮,3]-犅(2+,犮]-犅(0,1])) (6)

对于恢复犜3→犜犮,与无间隙前临近时间点恢复类似,在写入被剔除的数据块镜像时,只需要先从间隙前后的两段时间区间((犜2+,犜犮]和(犜0,犜1])内构建被剔除的数据块在犜犮时刻的镜像.证明过程与无间隙前临近时间点恢复类似.

(4)有间隙后(间隙外)临近时间点恢复对于间隙外临近时间点恢复犜3→犜犱,如图1

(b)所示,数据卷当前状态所对应的时刻点为犜3,目标时刻点为时间区间(犜1,犜2-]上的犜犱.对于该恢复,不仅要将时间区间(犜1,犜犱]内的数据写入数据卷,还要剔除时间区间(犜2+,犜3]内被更新的数据,如式(7)所示.犛犱=(犛3-犛3/(犅(2+,3]∪犅(1,犱]))∪犐(1,犱]∪

(犐(0,1]/(犅(2+,3]-犅(1,犱]))∪(犛0/(犅(2+,3]-犅(1,犱]-犅(0,1])) (7)

可见,对于间隙外临近时间点恢复犜3→犜犱,是写入数据与剔除数据并存的一种情况,根据无间隙前和无间隙后临近时间点恢复可以容易证明.

(5)有间隙前临近时间点恢复对于间隙前临近时间点恢复犜3→犜犲,如图1(b)

所示,数据卷当前状态所对应的时刻点为犜3,目标时刻点为时间区间(犜0,犜1]上的犜犲,根据式(8)进行恢复.

犛犲=(犛3-犛3/(犅(2+,3]∪犅(犲,1]))∪(犐(0,犲]/(犅(2+,3]∪犅(犲,1]))∪(犛0/(犅(2+,3]∪犅(犲,1]-犅(0,犲])) (8)

对于恢复犜3→犜犲,与无间隙前临近时间点恢

6032 计  算  机  学  报 2013年

Page 5: 基于数据差异的连续数据保护恢复算法cjc.ict.ac.cn › online › onlinepaper › wc.pdf · 了块级连续数据保护技术的应用,所以,目前大部分 的研究[811]集中于解决传统块级连续数据保护机制

复类似,只需要剔除间隙前后的两段时间区间((犜2+,犜3]和(犜犲,犜1])内被更新的数据块.因此,根据无间隙前临近时间点恢复可以容易的证明.

3 犚犕犆犅犇犇算法在恢复数据时,RMCBDD(RecoveryMethod

forCDPBasedonDataDiscrepancies,RMCBDD)以快照时刻为基础,首先找到恢复起止时刻的参照时刻点,并通过递归算法剔除由间隙引入的无效写请求之后,得到了参照时刻点与恢复起止时刻之间的两个写请求集合,然后通过对两写请求集合的分析,找出恢复起止时刻之间的差异数据,最后分别以不同的方法对“多数据”和“少数据”两种类型的差异数据进行处理,即可完成数据恢复.3.1 数据记录3.1.1 恢复映射序列

虽然临近算法具有很高的恢复效率,然而,临近算法仅支持最多不超过一个间隙情况下的5种简单情况,无法对连续数据保护系统实际应用中常见的多间隙复杂情况进行处理.为了实现对多间隙复杂情况的恢复,RMCBDD通过恢复映射序列,记录连续数据保护系统启动后的每一次恢复.

图2(a)展示了一个存在3个间隙的恢复过程,从初始时刻犜0到最终时刻犜19,依次经历了犜7→犜3、犜12→犜1和犜18→犜9三次恢复,形成了3个间隙.由于这种无规律间隙的存在,通过恢复映射序列,如图2(b)所示,RMCBDD记录了自初始时刻犜0以来执行过的所有恢复的起止时刻,以便在数据恢复时作为参考.

图2 RMCBDD的数据记录方式

3.1.2 插入快照以初始时刻为共同起点,当前时刻与目标时刻

很有可能共同经历一段相同的写请求序列,也就是说,在剔除间隙引入的无效写请求之后,初始时刻与恢复起止时刻的两个写请求集合之间,可能存在交集.并且,随着初始时刻与恢复起止时刻之间间隔的增加,两写请求集合之间的交集也随之增大.

RMCBDD算法需要遍历历史数据,通过对初始时刻与恢复起止时刻之间的两写请求集合进行分析,以确定两时刻点之间的差异数据.而由于两写请求集合交集的存在,使得需要遍历的历史数据增加、对写请求进行分析的复杂度增大.

为了降低获取差异数据的时间开销,RMCBDD在历史数据中,按照一定的时间间隔,在日志链条中插入相应时刻的快照,并将恢复起止时刻与初始时刻之间共同经历的写请求序列中时刻最晚的快照时刻作为参照时刻点,以取代初始时刻.这样,以参照时刻为基准的两写请求集合的交集减小,并且最大不超过两快照时刻之间的时间间隔,达到降低获取差异数据时间开销的目的.并且,在对差异数据中的“多数据”进行处理时,参照时刻之前的数据可以直接通过参照时刻的快照获得,所需遍历的写请求集合也随之减小,对提高“多数据”的处理效率也起到了一定作用.

如图2(a)所示,在日志链条中,每隔犱个写请求就插入相应时刻的快照犛犻,如果被间隙打断,则从间隙之后重新对犱进行计数.为了节约存储空间,在实现时,快照只保存指向相应写请求数据的指针.

定义7. 设犛犖和犛犖′是由快照时刻点组成的集合,犛犖(狋1,狋2]记录了不存在间隙的时间区间(狋1,狋2]内的所有快照时刻点;在剔除时间区间(狋3,狋4]内由间隙引入的无效写请求后,犛犖′(狋3,狋4]则记录了该时间区间内的所有快照时刻点.3.2 构建写请求集合3.2.1 确定参照时刻点

参照时刻点,即当前时刻犜犮和恢复目标时刻犜狋与初始时刻犜0之间的两个快照时刻点集合的交集中,时间戳最晚的时刻点,如果交集为空,则取初始时刻犜0为参照时刻点.

然而,考虑到多间隙的存在,快照时刻点集合需要剔除间隙中的无效快照时刻点,因此采用递归的方式,分别以当前时刻点犜犮和恢复目标时刻点犜狋为起点,向初始时刻犜0方向遍历,根据恢复映射序列,将间隙逐一剔除,最终获得两个快照时刻点集合.具

703211期 王超等:基于数据差异的连续数据保护恢复算法

Page 6: 基于数据差异的连续数据保护恢复算法cjc.ict.ac.cn › online › onlinepaper › wc.pdf · 了块级连续数据保护技术的应用,所以,目前大部分 的研究[811]集中于解决传统块级连续数据保护机制

体的递归算法如下:(1)基本情况.任意时刻点狋与初始时刻点犜0

之间不存在间隙时:犛犖′(0,狋]=犛犖(0,狋];

(2)递归步骤.当时刻点狋与初始时刻点犜0之间至少存在一个间隙时:

设〈狓→狔〉为时间区间(犜0,狋]上狋→0方向的第一个间隙,则

犛犖′(0,狋]=犛犖′(0,狔]∪犛犖(狓,狋],然后,对时刻点狔继续过程(1)、(2).

在确定了恢复起止时刻与初始时刻之间的快照时刻点集合后,参照时刻点犜犫犪狊犲如式(9)所示.犜犫犪狊犲=σmax(狋犻犿犲狊狋犪犿狆)((犛犖′(0,狋]∩犛犖′(0,犮])∪{犜0})(9)

3.2.2 构建写请求集合犚(0,狋]和犚(犫犪狊犲,狋]分别表示从初始时刻犜0和参考

时刻犜犫犪狊犲到任意时刻狋之间的所有写请求构成的集合;由于多间隙的存在,在恢复数据时,需要将时刻狋的恢复路径中的所有间隙剔除,用犚′(0,狋]和犚′(犫犪狊犲,狋]表示剔除间隙之后的写请求集合.

为了获取恢复起止时刻之间的差异数据,以实现数据恢复的目标,需要先分别获得恢复起止时刻与参照时刻之间的写请求集合.此时仍然需要剔除由间隙所带来的无效写请求,因此同样采用递归的方式,分别对当前时刻点犜犮和目标时刻点犜狋,以恢复映射序列为参照,对历史数据进行遍历,将间隙逐一剔除,最终获得两时刻点分别基于参考时刻犜犫犪狊犲的写请求集合犚′(犫犪狊犲,犮]和犚′(犫犪狊犲,狋].具体的递归算法如下:

(1)基本情况.任意时刻点狋与参照时刻点犜犫犪狊犲之间不存在间隙时

犚′(犫犪狊犲,狋]=犚(犫犪狊犲,狋];(2)递归步骤.当时刻点狋与初始时刻点犜0之

间至少存在一个间隙时:设〈狓→狔〉为时间区间(犜犫犪狊犲,狋]上狋→0方向的

第一个间隙,则犚′(犫犪狊犲,狋]=犚′(犫犪狊犲,狔]∪犚(狓,狋],

然后,对时刻点狔继续过程(1)、(2).以目标时刻点犜10为例,如图2(b)所示,以

当前时刻点犜19为起始时刻的恢复犜19→犜10,其快照时刻集合分别为犛犖′(0,19]={犜狊狀1,犜狊狀2,犜狊狀5}和犛犖′(0,10]={犜狊狀1,犜狊狀2,犜狊狀5};恢复起止时刻犜19和犜10的参考时刻为犜犫犪狊犲=犜狊狀5;以参照时刻点犜狊狀5为基准的写请求集合为犚′(犫犪狊犲,19]=犚(狊狀5,9]∪犚(18,19]和犚′(犫犪狊犲,10]=犚(狊狀5,10].

33 获取差异数据RMCBDD算法的关键在于找出数据存储在

当前时刻的镜像犛犮与目标时刻的镜像犛狋之间的差异数据.实际上,差异数据是由时间区间(犜犫犪狊犲,犜狋]和(犜犫犪狊犲,犜犮]内产生的不同写请求所形成的,差异数据分为“少数据”和“多数据”两种类型,图3展示了目标时刻和当前时刻写请求集合之间的关系.

图3 两个写请求集合间的关系

3.3.1 少数据对于当前时刻镜像犛犮比目标时刻镜像犛狋少的

数据,即犛狋-犛犮,用犛狋-犛犮集合中元素替换犛犮集合中相应逻辑块地址所标识的元素即可;在执行数据恢复时,则只需要将这一部分增量直接提交至数据卷.

如图3所示,“少数据”是由图中①这部分写请求所引起,这些写请求对逻辑块地址集合犅(犚′(犫犪狊犲,狋]-犚′(犫犪狊犲,犮])所对应的逻辑块进行了更新,其增量为

犛狋-犛犮=犐(犚′(犫犪狊犲,狋]-犚′(犫犪狊犲,犮]) (10)以图2(a)中的恢复犜19→犜10为例,其“少数据”

的增量为犐(犚′(犫犪狊犲,10]-犚′(犫犪狊犲,19])=犐(犚(9,10]).3.3.2 多数据

对于当前时刻镜像犛犮比目标时刻镜像犛狋多出的数据,即犛犮-犛狋,首先需要在历史数据及初始镜像中获取犛犮-犛狋中数据块在目标时刻狋的镜像,然后从集合犛犮中将犛犮-犛狋剔除,并将获取到的镜像添加至犛犮中;执行数据恢复时,在获取到目标时刻犜狋的镜像后,将这部分数据以增量的形式提交至数据卷即可.

因为不同的写请求可能会对同一数据块进行更新,所以图3中①和③两部分写请求存在对相同逻辑块进行更新的可能,即存在(犅(犚′(犫犪狊犲,犮]-犚′(犫犪狊犲,狋]))∩(犅(犚′(犫犪狊犲,狋]-犚′(犫犪狊犲,犮]))≠的可能.注意到,在“少数据”中已经对图中③部分的逻辑块进行了处理,因此,在“多数据”中并不需要重复处理,即需要剔除的逻辑块地址集合简化为犅(犚′(犫犪狊犲,犮]-犚′(犫犪狊犲,狋])-犅(犚′(犫犪狊犲,狋]-犚′(犫犪狊犲,犮])(11)可见,与“少数据”不同,“多数据”的情况变得复

杂,处理“多数据”的关键在于获取这部分数据所对

8032 计  算  机  学  报 2013年

Page 7: 基于数据差异的连续数据保护恢复算法cjc.ict.ac.cn › online › onlinepaper › wc.pdf · 了块级连续数据保护技术的应用,所以,目前大部分 的研究[811]集中于解决传统块级连续数据保护机制

应数据块在恢复目标时刻犜狋的镜像.简单的方法是按照时间先后顺序,直接将历史写请求集合犚′(犫犪狊犲,狋]提交至数据卷,即对集合犚′(犫犪狊犲,狋]中的写请求执行Redo操作,但由于存在对同一逻辑块地址的多次写操作,还可能重复处理“少数据”中的部分逻辑块,因此效率不高.

为了获得最佳效率,RMCBDD按照以下方法获取式(11)中逻辑块地址在恢复目标时刻犜狋的镜像:

(1)首先按照时间的逆序,即犜狋→犜犫犪狊犲,遍历写请求集合犚′(犫犪狊犲,狋]∩犚′(犫犪狊犲,犮],得到部分逻辑块地址在时刻犜狋的镜像:犐(犚′(犫犪狊犲,狋]∩犚′(犫犪狊犲,犮])/(犅(犚′(犫犪狊犲,犮]-犚′(犫犪狊犲,狋])-犅(犚′(犫犪狊犲,狋]-犚′(犫犪狊犲,犮]))(12)(2)对于无法在犚′(犫犪狊犲,狋]∩犚′(犫犪狊犲,犮]中获取到的逻

辑块,表明时间区间(犜犫犪狊犲,犜狋]内并没有写请求对其进行更新.因此,参照时刻犜犫犪狊犲的数据镜像犛犫犪狊犲中相应逻辑块镜像即为剩余逻辑块地址在目标时刻犜狋的镜像:犛犫犪狊犲/(犅(犚′(犫犪狊犲,犮]-犚′(犫犪狊犲,狋])-犅(犚′(犫犪狊犲,狋]-犚′(犫犪狊犲,犮])-

犅(犚′(犫犪狊犲,狋]∩犚′(犫犪狊犲,犮])) (13)根据式(12)和式(13),RMCBDD按照式(14)

对“多数据”进行处理(

:犐(犚′(犫犪狊犲,狋]∩犚′(犫犪狊犲,犮])/(犅(犚′(犫犪狊犲,犮]-犚′(犫犪狊犲,狋])-犅(犚′(犫犪狊犲,狋]-犚′(犫犪狊犲,犮])))(∪犛犫犪狊犲/(犅(犚′(犫犪狊犲,犮]-犚′(犫犪狊犲,狋])-犅(犚′(犫犪狊犲,狋]-犚′(犫犪狊犲,犮])-犅(犚′(犫犪狊犲,狋]∩犚′(犫犪狊犲,犮] )))(14)

以图2(a)中的恢复犜19→犜10为例,RMCBDD获取的“多数据”逻辑块地址在恢复目标时刻犜10的

(镜像为犐(犚(狊狀5,9])/(犅(犚(18,19])-犅(犚(9,10] )))(

∪犛狊狀5/(犅(犚(18,19])-犅(犚(9,10])-犅(犚(狊狀5,9] ))).

34 犚犕犆犅犇犇算法综合3.3节中对“少数据”和“多数据”的处理过

程,RMCBDD从当前时刻对应镜像犛犮恢复到目标时刻镜像犛狋的过程可以形式化地表示为犛狋 (=犛犮-犛犮/(犅(犚′(犫犪狊犲,犮]-犚′(犫犪狊犲,狋])∪

犅(犚′(犫犪狊犲,狋]-犚′(犫犪狊犲,犮] )))∪犐(犚′(犫犪狊犲,狋]-犚′(犫犪狊犲,犮])(

∪犐(犚′(犫犪狊犲,狋]∩犚′(犫犪狊犲,犮])/(犅(犚′(犫犪狊犲,犮]-犚′(犫犪狊犲,狋])-犅(犚′(犫犪狊犲,狋]-犚′(犫犪狊犲,犮] )))(

∪犛犫犪狊犲/(犅(犚′(犫犪狊犲,犮])-犅(犚′(犫犪狊犲,狋] ))) (15)如图4所示,RMCBDD的恢复过程如下:

①根据3.2节找到参照时刻点犜犫犪狊犲,并获得写请求集合犚′(犫犪狊犲,犮]和犚′(犫犪狊犲,狋];

②根据3.3节获取“少数据”和“多数据”两种类型的差异数据;

③根据式(10),将“少数据”直接写入数据卷;④根据式(14),将获取到的“多数据”数据块在

目标时刻犜狋的镜像提交至数据卷.

图4 RMCBDD算法恢复示意图

3.5 恢复性能分析对于RMCBDD算法,其恢复时间由读取元数

据、根据元数据获取写请求集合及差异数据、读取历史数据并写入数据卷几部分组成.其中,需要读取的元数据包括恢复映射序列以及与恢复相关的时间区间的写请求描述符,这些与真正需要恢复的数据相比,数据量要小很多;另外,获取写请求集合以及差异数据的过程都是在内存中完成,与大量的磁盘I/O操作相比,是可以容忍的.

因此,影响数据恢复时间的主要因素是读取历史卷以及写数据卷这两部分开销.类似的,基本方法和WDRS的恢复时间也主要由这两部分组成.对于基本方法、WDRS和RMCBDD3种算法,表1列出了在恢复数据时需要读取和写入的数据量.

表1 不同算法需要读写数据块个数比较恢复方法 读/写数据块个数基本方法 |犛0|+|犚′(0,狋]|WDRS |犛0|

RMCBDD |犅(犚′(0,犮]-犚′(0,狋])∪犅(犚′(0,狋]-犚′(0,犮])|

RMCBDD算法需要从历史数据读取和向数据卷写入的数据块个数,实际上就是当前时刻与恢复目标时刻的数据镜像之间存在差异的数据块个数;基本恢复方法在恢复数据时,首先需要将初始备份数据恢复至数据卷中,然后按照写请求所产生的时间先后顺序,将初始时刻与目标时刻之间的所有写请求依次提交至数据卷中.因此,基本恢复方法需要读写的数据块个数为数据卷的数据块个数与目标时刻之前所有写请求个数之和;WDRS方法则是按照时间的逆序,通过位表标记已处理的数据块,使得

903211期 王超等:基于数据差异的连续数据保护恢复算法

Page 8: 基于数据差异的连续数据保护恢复算法cjc.ict.ac.cn › online › onlinepaper › wc.pdf · 了块级连续数据保护技术的应用,所以,目前大部分 的研究[811]集中于解决传统块级连续数据保护机制

数据卷中的所有数据块在恢复时均只被处理一次,因此所需要读写的数据块个数始终保持为数据卷的数据块个数.

在最差的情况下,当前时刻点与恢复目标时刻点的间隔足够远,使得两时刻点的镜像中所有数据块都存在差异.这时,RMCBDD算法所需要读写的数据块个数达到最大,即数据卷的数据块个数,但仍然不超过WDRS.通常情况下,恢复起止时刻之间的间隔并不会很远,尤其是在二分探查最佳恢复时刻点时,随着探查次数的不断增加,恢复起止时刻之间的间隔呈指数次幂减小,RMCBDD算法的所需读写的数据块个数随之锐减.

4 实验评估41 实验环境

为了对RMCBDD的恢复性能进行评估,我们在Windows平台下,利用磁盘过滤驱动技术,在逻辑卷层实现了支持基本方法、临近算法、WDRS和RMCBDD4种恢复算法的块级连续数据保护原型系统.原型系统在逻辑卷层截获上层应用的写请求,并在历史数据卷中按照写请求产生的时间先后顺序进行记录.

为了获得更加客观的实验数据,操作系统、日志卷、数据卷和历史卷都分别绑定不同的硬盘,实验在浪潮AS300N存储服务器上进行,具体的实验环境如表2所示.

表2 实验环境部件 配置CPU IntelXeon5504×2内存 DDRIII16GB

硬盘RAID1(SATA150GB×2):安装操作系统SAS300GB×3:日志卷、数据卷、历史卷分别绑定不同的硬盘,分别为其申请1GB、2GB、30GB的空间

操作系统Windows2003R2EnterpriseX64Edition

实验采用存储性能理事会发布的Trace数据,该Trace数据采集自某大型金融机构的OLTP应用,数据块大小为512字节,平均每分钟提交写请求70000次左右,约34MB,每小时更新数据约2GB.根据以下实验的不同要求,按照不同的策略将Trace数据通过Replay的方式在数据卷上进行重放,然后分别采用基本恢复方法、WDRS和RMCBDD3种算法,按照特定的恢复序列执行恢复操作,同时记录下每次恢复的恢复时间.

42 恢复效率比较为了评估RMCBDD的恢复性能,首先构造实

验环境.如图5所示,以初始时刻0min为起点,按照每次Replay60min数据,紧接着向前恢复30min的策略,重复5次后形成了4个间隙,间隙将整个时间轴划分为[240+,300]、[180+,240]、[120+,180]、[60+,120]和[0,60]5个时间区间,数据卷的最终状态所对应的时刻为270min.

图5 恢复效率比较实验配置

在该实验环境下,分别采用基本方法、临近算法、WDRS和RMCBDD4种算法,以270min作为恢复的起始时刻,时间区间[240+,300]、[180+,240]、[120+,180]、[60+,120]、[0,60]上以5min为间隔的65个时刻点为目标时刻(以时间区间[240+,300]为例,有240+,245,250,…,300共计13个目标时刻),分别执行恢复操作(每次恢复操作前,都需要将数据卷恢复至时刻270min所对应的状态),记录下每次恢复操作的恢复时间,结果如图6所示,其中(a)、(b)、(c)、(d)、(e)依次对应于以上5个时间区间.

特殊的,临近算法最多支持一个间隙,但其所关注的是恢复起始时刻和目标时刻之间差异数据内的间隙,虽然历史数据中共存在四个间隙,但由于恢复起始时刻270min,与时间区间[240+,300]和[180+,240]上的恢复目标时刻之间,最多只存在一个间隙,因此临近算法在这两个时间区间上依然适用.

从结果中可以看出,不论哪一个时间区间,RMCBDD算法的恢复效率最高,恢复时间均远低于基本恢复方法和WDRS.与RMCBDD方法相比,WDRS的恢复时间最高为RMCBDD的12.7倍,平均1.83倍;基本方法则差距更大,最差时恢复时间为RMCBDD的66.4倍,平均6.5倍.

RMCBDD算法在恢复数据时,通过分析当前时刻与目标时刻数据卷之间的数据差异,分别对“少数据”和“多数据”两种类型的差异数据进行处理,消

0132 计  算  机  学  报 2013年

Page 9: 基于数据差异的连续数据保护恢复算法cjc.ict.ac.cn › online › onlinepaper › wc.pdf · 了块级连续数据保护技术的应用,所以,目前大部分 的研究[811]集中于解决传统块级连续数据保护机制

图6 4种算法的恢复效率比较

除恢复起止时刻之间的数据差异达到恢复数据的目的.因此,恢复起始时刻与目标时刻之间写请求的多少,直接关系到差异数据的多少,进而影响到恢复时间.从图6中可以看出,从[240+,300]至[0,60]的5个时间区间,恢复起始时刻与目标时刻之间的时间跨度依次增大,导致差异数据的增加,进而使得恢复时间增加.其中,时间区间[240+,300]中目标时刻点265min和275min与恢复起始时刻时间跨度最小,恢复时间也最小;而时间区间[0,60]中的目标时刻0min和60min则时间跨度最大,恢复时间也最大.

特殊的,由于临近算法与RMCBDD都是通过分析处理差异数据进行恢复,所以,在恢复目标时刻在时间区间[240+,300]和[180+,240]上时,两种

方法的恢复时间几乎相同,曲线则近似重合.WDRS在恢复数据时,并不关注当前时刻数据

卷的状态,通过位表标记已处理的数据块,使得数据卷中的所有数据块在恢复时均只处理一次.因此,在图6中可以看出,不论哪一时间区间,WDRS每次恢复的恢复时间都保持在40s上下,曲线近似水平.

而对于基本方法,在恢复数据时不仅需要首先将初始镜像恢复至数据卷,然后还要按照先后顺序对初始时刻至目标时刻的写请求依次执行Redo操作,因此,目标时刻距初始时刻越远,需要执行Redo操作的写请求越多,恢复时间越长.从结果中可以看出,图6(a)中时间区间[240+,300]与初始时刻0min的时间跨度最大,恢复时间大多在200s以上;

113211期 王超等:基于数据差异的连续数据保护恢复算法

Page 10: 基于数据差异的连续数据保护恢复算法cjc.ict.ac.cn › online › onlinepaper › wc.pdf · 了块级连续数据保护技术的应用,所以,目前大部分 的研究[811]集中于解决传统块级连续数据保护机制

而图6(e)中时间区间[0,60]与初始时刻0min的时间跨度最小,恢复时间最高未超过110s.特殊的,恢复至目标时刻0min,只需要恢复初始镜像即可,然而此时恢复起止时刻之间的间隔最大,RMCBDD所需处理的差异数据量最多,所以此时基本方法的恢复效率略好于RMCBDD.4.3 间隙对恢复效率的影响

为了分析间隙对恢复效率的影响,首先构造实验环境.如图7所示,以初始时刻0min为起点,首先Replay80min数据,再向前恢复40min;然后Replay40min数据,向前恢复20min,依次类推,Replay至155min时结束.为了排除数据分布对实验结果的影响,在Replay数据时,对时间区间[40,80]与[80+,120]、[100,120]与[120+,140]、[130,140]与[140+,150]、[145,150]与[150+,155],两两重放相同的数据.

图7 间隙对恢复效率影响的实验配置

在该实验环境下,分别采用基本方法、WDRS和RMCBDD3种算法,以155min作为恢复的起始时刻,时间区间[0,40]上以5min为间隔的9个时刻点为目标时刻,执行恢复操作(每次恢复操作前,都需要将数据卷恢复至恢复起始时刻155min所对应的状态),分别记录下每次恢复操作的恢复时间.类似的,再分别以150min、140min、120min和80min作为恢复的起始时刻,执行上述恢复操作并记录恢复时间.

从图7中可以看出,以155min作为恢复起始时刻,它与初始时刻0min之间存在4个间隙,因此每次恢复都经历了4个间隙;依次类推,以150min、140min、120min和80min作为恢复起始时刻的恢复,则依次经历了3个、2个、1个和0个间隙.因为不同的数据分布会对恢复起止时刻对应镜像之间的数据差异产生影响,所以为了观察不同间隙个数对恢复效率的影响,在以上构建实验环境的过程中,对Replay数据进行了特殊处理.这样,即便恢复起始时刻不同,但对于相同的目标时刻,恢复过程中所处理的数据都是相同的,进而可以更好地观察间隙个数对恢复效率的影响.实验结果如图8所示.

图8 间隙个数对恢复效率的影响

根据间隙个数的不同,基本方法、WDRS和RMCBDD3种恢复算法在图8中都分别有5条曲线与之对应.从图中可以明显看出,每种恢复算法的5条曲线都近似重合,由于排除了数据分布可能对实验结果造成的影响,可见间隙的个数对恢复效率并没有显著影响.RMCBDD算法的恢复过程也印证了这一点:通过读取恢复映射序列等元数据,在内存中进行一定的运算后,便得到了写请求集合,即消除了间隙的影响,并且与需要消除的差异数据相比,读取元数据和内存操作所消耗的时间则要少得多,表现在整个恢复时间中就不明显了.4.4 寻找最优恢复时刻点

一旦系统管理员发现数据发生了损坏,就需要寻找并确定一个能够获得干净数据的恢复时刻点.通常,系统管理员在选择恢复时刻点时,需要在恢复时间(进行一致性检测的数据版本的个数)和数据损失量之间进行权衡.由于肩负着尽快恢复数据的使命,对于系统管理员,可恢复时刻点的识别通常是一个手工的、易错的、耗时繁琐的过程.虽然连续数据保护系统提供了以写请求为精度向前恢复的能力,但仍旧无法解决识别恢复时刻点所面临的矛盾.只有在恢复时刻点确定之后,才能用一致的干净数据替换损坏的数据,整个恢复过程才得以完成.

通常,在寻找恢复时刻点时,系统管理员会在连续数据保护的初始时刻与发生数据损坏的时刻之间进行二分探查,对于每一个二分探查的时刻点,都需要通过完整性检测工具对该时刻点的数据镜像进行检测,以判断下一个探查时刻点,在找到满足RPO的时刻点时完成探查.

为了评估RMCBDD在可恢复时刻点识别中的效率,我们重新根据图5构造了实验环境,然后分别采用基本方法、WDRS和RMCBDD3种恢复算法,以300min作为恢复的起始时刻,在5个连续的

2132 计  算  机  学  报 2013年

Page 11: 基于数据差异的连续数据保护恢复算法cjc.ict.ac.cn › online › onlinepaper › wc.pdf · 了块级连续数据保护技术的应用,所以,目前大部分 的研究[811]集中于解决传统块级连续数据保护机制

时间区间[0,300]、[0,200]、[0,100]、[0,50]和[0,25]上,通过二分探查的方式分别对可恢复时刻点进行探查.与4.2节中的实验不同,在同一时间区间内的每次探查之前,数据卷保持上次探查结束的状态即可,只在对下一个时间区间开始探查之前,才需要将数据卷恢复至起始时刻300min所对应的状态.

实验中并没有采用真实的完整性检测工具,因此,对于以上5个探查区间,每次二分探查之后的下一个探查时刻点,分别采用一直向前探查、一直向后探查和前后交替探查3种方式进行模拟.此外,实验中所找到的恢复时刻点,要求与最佳恢复时刻点之间的时间间隔不超过1min,在对每个时间区间的二分探查过程结束后,数据卷的状态即为所找到的恢复时刻点所对应的状态,探查恢复过程结束.实验中记录下探查每个时间区间所花费的总恢复时间(不包含对各探查时刻对应数据镜像进行完整性检查的时间),结果如图9所示.

如图9所示,不论向前探查、向后探查,还是前后交替探查,RMCBDD所消耗的总恢复时间都远远小于其他两种算法.其中,探查8次的平均总恢复时间为78.03s,探查6次的平均总恢复时间仅为33.15s,WDRS所消耗时间分别是RMCBDD的4.32倍和7.56倍,基本方法分别是13.47倍和13.48倍.

由于WDRS的恢复时间非常稳定,每次恢复所消耗时间均在40s上下.因此,如图9所示,不论向前、向后还是前后交替探查,WDRS的总恢复时间根据探查次数的不同而随之增减,与每次恢复起止时刻之间的数据量以及初始时刻与目标时刻之间的时间间隔均无关.

对于基本恢复方法,在向前探查时,时间区间[0,300]的总恢复时间为482s,而向后探查竟高达2184s,前后交替探查则以1426s介于两者之间.这是因为,随着探查次数的不断增加,向前探查使得探查的时刻点不断向前移动,与初始时刻0min的间隔不断减小;而向后恢复则恰恰相反,每次探查的时刻点不断向后移动,与初始时刻0min的间隔不断增大;由于基本方法的恢复时间是由恢复初始镜像和执行Redo操作两部分组成的,向前探查使得每次需要Redo的写请求不断减少,而向后探查则不断增多,前后交替探查介于两者之间;由此形成了图9所示的结果.

与基本方法不同,探查方向的变化并不会对

图9 二分探查可恢复时刻点效率比较

RMCBDD的恢复时间造成明显影响.根据二分查找的性质,随着探查次数的不断增加,相邻两次探查时刻点之间的时间间隔呈指数次幂不断减小,两时刻点之间的历史写请求随之骤减,使得RMCBDD所需要处理的差异数据骤减,进而恢复时间骤减,效率提高非常明显.

实验中,RMCBDD在时间区间[0,300]上进行了9次探查之后,找到了与最佳恢复时刻点之间间隔小于1min的恢复时刻点,其中每次探查所消耗的恢复时间如图10所示.可以明显看出,随着探查次数的增加,恢复时间随之骤减,并且在第8次探查时已经低于1s.注意到,构建实验环境所Replay的数据,平均每分钟产生70000个写请求,如果要寻找到最佳恢复点,只需要继续进行不超过17次的

313211期 王超等:基于数据差异的连续数据保护恢复算法

Page 12: 基于数据差异的连续数据保护恢复算法cjc.ict.ac.cn › online › onlinepaper › wc.pdf · 了块级连续数据保护技术的应用,所以,目前大部分 的研究[811]集中于解决传统块级连续数据保护机制

探查,消耗不超过17s的时间.而如果采用WDRS或者基本方法继续寻找最佳恢复时刻点,所消耗的时间则是不可忍受的.

图10 RMCBDD在时间区间[0,300]上每次探查的恢复时间变化曲线

5 总 结以在元数据中增加恢复映射序列以及在历史写

请求中插入快照为基础,RMCBDD算法采用递归算法获取恢复起止时刻基于参照时刻的两个写请求集合,然后通过对两个写请求集合的分析处理,找出了恢复起止时刻之间两种类型的差异数据,即“少数据”和“多数据”,最后针对两种类型差异数据的特点分别进行了处理,消除了恢复起止时刻之间的数据差异,实现了数据恢复.通过对“临近算法”的完善与改进,RMCBDD不仅支持存在多间隙的复杂实际应用环境,并且继承了“临近算法”的高恢复效率.实验数据表明,在多间隙复杂情况下,RMCBDD的恢复效率明显高于基本方法和WDRS,有效降低了二分探查最佳恢复时刻点的时间开销.

参考文献

[1]BakerM,ShahM,RosenthalDSH,etal.Afreshlookatthereliabilityoflongtermdigitalstorage//Proceedingsofthe1stACMSIGOPS/EuroSysEuropeanConferenceonComputerSystems.Leuven,Belgium,2006:221234

[2]KeetonK,SantosC,BeyerD,etal.Designingfordisasters//Proceedingsofthe3rdUsenixConferenceonFileandStorageTechnologies.SanFrancisco,USA,2004:5972

[3]DamoulakisJ.Continuousprotection.Storage,2004,3(4):3339

[4]RockM,PoreskyP.Shortenyourbackupwindow.Storage,SpecialIssueonManagingtheInformationThatDrivestheEnterprise,2005,4(5):2834

[5]ChervenakAL,VellankiV,KurmasZ.Protectingfilesystems:Asurveyofbackuptechniques//ProceedingsoftheJointNASAandIEEEMassStorageConference.CollegePark,USA,1998:1731

[6]WangDi,XueWei,ShuJiWu,ShenMeiMing.Faulttolerancewithvirtualdiskreplicasinthemassstoragenetwork.JournalofComputerResearchandDevelopment,2006,43(10):18491854(inChinese)(王迪,薛巍,舒继武,沈美明.海量存储网络中的虚拟盘副本容错技术.计算机研究与发展,2006,43(10):18491854)

[7]CornellB,DindaPA,BustamanteFE.Wayback:AuserlevelversioningfilesystemforLinux//ProceedingsoftheUSENIXAnnualTechnicalConference.Boston,USA,2004:1928

[8]MorreyIIICB,GrunwaldD.Peabody:Thetimetravellingdisk//Proceedingsofthe20thIEEE/11thNASAGoddardConferenceonMassStorageSystemsandTechnologies.SanDiego,USA,2003:241253

[9]ZhuMB,LiK,PattersonRH.Efficientdatastoragesystem.USPatent,No.6928526,20021220

[10]YangQing,XiaoWeijun,RenJin.TRAPArray:Adiskarrayarchitectureprovidingtimelyrecoverytoanypointintime//Proceedingsofthe33rdAnnualInternationalSymposiumonComputerArchitecture.Boston,USA,2006:289301

[11]LiXu,XieChangSheng,YangJing,CaoQiang,WeiQinQi.Animprovedblocklevelcontinuousdataprotectionmechanism.JournalofComputerResearchandDevelopment,2009,46(5):762769(inChinese)(李旭,谢长生,杨靖,曹强,魏沁祺.一种改进的块级连续数据保护机制.计算机研究与发展,2009,46(5):762769)

[12]VermaA,VorugantiK,RoutrayR,JainR.SWEEPER:Anefficientdisasterrecoverypointidentificationmechanism//Proceedingsofthe6thUSENIXConferenceonFileandStorageTechnologies.SanJose,USA,2008:297312

[13]XiangXiaoJia,ShuJiWu,ZhengWeiMin.Anefficientfinegranularitymultiversionfilesystem.JournalofSoftware,2009,20(3):754765(inChinese)(向小佳,舒继武,郑纬民.一种细粒度高效多版本文件系统.软件学报,2009,20(3):754765)

[14]ShaullR,ShriraL,XuH.Skippy:Anewsnapshotindexingmethodfortimetravelinthestoragemanager//Proceedingsofthe2008ACMSIGMODInternationalConferenceonManagementofData.Vancouver,Canada,2008:637648

[15]WuGuangJun,YunXiaoChun,FangBinXing,WangShuPeng,YuXiangZhan.HCSIM:AnindexingmethodforloglivedfrequentBlockLevelsnapshot.ChineseJournalofComputers,2009,32(10):20802090(inChinese)(吴广君,云晓春,方滨兴,王树鹏,余翔湛.HCSIM:一种长期高频BlockLevel快照索引技术.计算机学报,2009,32(10):20802090)

4132 计  算  机  学  报 2013年

Page 13: 基于数据差异的连续数据保护恢复算法cjc.ict.ac.cn › online › onlinepaper › wc.pdf · 了块级连续数据保护技术的应用,所以,目前大部分 的研究[811]集中于解决传统块级连续数据保护机制

[16]YuChengLong.ResearchandimplementationofdisastertolerancesystembasedonCDPtechnology[M.S.dissertation].NorthwesternPolytechnicalUniversity,Xi’an,2010(inChinese)(余承龙.基于CDP技术的灾难恢复系统的研究与实现[硕士学位论文].西北工业大学,西安,2010)

[17]HouLiMan,LiZhanHuai,HuNa.NeighboringpointdatarecoveryforCDPbasedondatagap.ComputerScience,2011,38(5):159163(inChinese)(侯利曼,李战怀,胡娜.基于数据差异的CDP邻近时间点恢复.计算机科学,2011,38(5):159163)

犠犃犖犌犆犺犪狅,bornin1985,Ph.D.candidate.Hisresearchinterestsincludemassivestoragesystemanddataprotection.

犔犐犣犺犪狀犎狌犪犻,bornin1961,Ph.D.,professor,Ph.D.supervisor.Hisresearchinterestisdatabasesystem.

犣犎犃犖犌犡犻犪狅犉犪狀犵,bornin1971,Ph.D.,associateprofessor.Herresearchinterestsincludedistributedcomputing,disastertolerantandsoftwareengineeringtheory.

犎犗犝犔犻犕犪狀,bornin1986,M.S.Herresearchinterestisdataprotection.

犅犪犮犽犵狉狅狌狀犱Withexplosivegrowthofnetworkedinformationservices

andecommerce,dataprotectionhasbecomethemajorissueinbusinessorganizations,governmentinstitutionsandindividuals.Duetotheclosecouplingbetweeninformationserviceandthematurityofstoragetechnology,failuressuchashardware/softwaredefects,humanerrors,virusattacks,andpoweroutagecancausedatadamageordataloss.BlocklevelContinuousDataProtection(CDP)canrestoredatatoanypointintimeandsupportreliablestorageandithasbecomeanimportantdataprotectiontechnologyformodernstoragesystem.

Oncethecontinuousdataprotection(CDP)systemperformsdatarecoveryafterdatacorruption,theprimarytaskistoquicklydeterminearecoverypointthatprovidesacleancopyofthedata.EventhoughCDPprovidetheabilitytorollbackeverydataupdate,butitdoesnotaddresstherecoverypointidentificationproblem.Typically,systemadministratorschoosearecoverypointbytradingoffrecoverytimeanddatalose,butboththehighavailabilityandthehighreliabilityofcomputerizeddatahasaraiserequirementfor

modernstoragesystemsnowadays.However,inordertosolvethehighstoragespacerequirementproblemofbasicblocklevelCDP,moststudiesfocusonthisissue,relativelylittleworkhasbeendownintheareaofrecoverypointidentification.

ThispaperpresentsarecoverymethodforCDPbasedondatadiscrepancies(RMCBDD).Theauthorsfirstanalyzetheneighboringpointdatarecoverymethodbymathematicalmodel.Afterimproveandrefinetheneighboringpointdatarecoverymethod,RMCBDDcanperformdatarecoverybyeliminatingthedatadiscrepanciesbetweenstartingandendingpointsinmultigapsituations.ExperimentalevaluationdemonstratesthattherecoveryefficiencyofRMCBDDissignificantlybetterthanbasicmethodandWDRS,especiallythebinarysearchforoptimalrecoverypointidentification.

ThisworkissupportedbytheNationalProgramonKeyBasicResearchProject(973Program)ofChinaundertheGrantNo.2012CB316203,andtheNationalNaturalScienceFoundationofChina(NSFC)undertheGrantNo.61033007/F020204.

513211期 王超等:基于数据差异的连续数据保护恢复算法


Top Related