冯美禄 胡乐燕
(1.河南省教育技术装备管理中心,河南 郑州 450004;2.河南省财政厅干部教育中心,河南,郑州 450004)
一种改进的文件级持续数据保护机制
冯美禄1胡乐燕2
(1.河南省教育技术装备管理中心,河南 郑州 450004;2.河南省财政厅干部教育中心,河南,郑州 450004)
信息技术的广泛应用使得数据在信息系统中发挥的作用日益显现,数据的丢失或损坏对整个系统造成的损失难以估量。本文充分分析了当前持续数据保护技术的现状,立足现有的TRAP-4持续数据保护思想,提出了一种改进的文件级持续数据保护机制。在虚拟层改进了日志生成方式,减轻了系统工作负载,缩短了数据备份与恢复时间,增强了系统对于核心数据的持续全备份能力。
持续数据保护;F-CDP;日志;TRAP
随着计算机技术的飞速发展和网络的广泛普及,社会信息数据进入了快速膨胀的时代,人类的学习、工作和生活对数据的依赖程度越来越高,数据丢失或损坏将会严重影响企事业单位的生存和发展。持续数据保护(CDP)通过实时记录数据的改变,使得灾难发生后能够将数据恢复到任意时间点。对于一些特殊的部门如银行、证券、电信等,由于其特殊的数据存在形式(以个人账户为基本单位),单个账户数据的备份可能涉及多个数据块,单个数据块中也可能含有多个账户数据。众所周知,账户数据中的信息有相当一部分是固定的,进行持续数据备份时,无论是以文件为单位还是以块为单位,都会存在大量的重复数据,极大的浪费了存储空间,本文立足于TRAP-4机制的数据保护思想,以账户数据为基本的数据保护单位,在逻辑层进行增量数据的备份,提出了改进的文件级持续数据保护技术(F-CDP)。
1.1 TRAP-4机制
美国罗德岛大学杨庆教授提出的TRAP-4技术的工作原理[1]如下:设某数据块B(x)的原始数据为D(0),应用程序在时刻T(m)对数据D(m-1)有一次写操作,得到的新数据为D(m),则该时刻前后数据的异或校验值为P(m)= D(m-1)⊕D(m),并记录时间戳为T(m)。TRAP-4按时间戳顺序保存这些写操作时间点的校验值,形成一个日志链{B(x),P(m)、P(m-1)、……、P(0),D(0)}。当数据块B(x)需要将数据恢复到T(m)以前的某个时间节点T(k)时,只需在日志链中读取相应的校验值,依次执行下面的公式[3]计算就可完成数据恢复:
通过T(k)时刻的数据恢复到T(m)时刻计算公式类似,如下:
TRAP-4的优点是通过数据的异或值来记录写操作,根据日志链可以将数据恢复到任意写操作时间点,实现方式比较简便;改进的TRAP-4机制[2]定期在日志链中插入对应时间点的快照数据,{B(x),P(m)、P(m-1)、……P(n+1)、D(n)、P(n-1)、……、P(1)、P(0),D(0)},有效解决了日志链的长时间失效风险,提高了机制的安全性,但是还存在以下几个方面的问题:
1.1.1 写操作经常是针对某个文件或者某项数据,而文件或数据往往存放在许多物理上各自分离的磁盘或数据块上,大量数据块的调度增加了系统的工作负担,多处数据块改动在数据恢复时效率低下。
1.1.2 数据备份与恢复时的异或运算占用了大量的系统资源,降低了系统的服务效能。
1.1.3 改进的TRAP-4机制虽然解决了日志链的失效问题,但是,定期进行数据全备份数据需要大量的存储空间,并且缺少针对重要文件或者核心数据进行保护的策略。
1.2文件级CDP思想
基于文件的CDP机制是针对特定的重要文件或数据提出的,如银行账户信息、公安部人口资料、军事作战地图、导航数据等,这类文件的共同特点:数据价值高、数据更改范围有限、每次改变都要求进行数据全备份、实时性要求高。文件数据由一个或多个数据块组成,由于应用需求,文件中的部分数据会经常变动。仅仅对其改变的数据块进行备份,恢复数据时首先通过块恢复,然后进一步构成文件,恢复速度势必会影响文件数据的实时性;而每次写操作均对文件进行全备份,文件中大量未改变的数据势必会占用相对较大的存储空间,造成存储资源的极大浪费。
图 1 信用卡账户信息组成
图1展示了信用卡账户的组成要素,账户中除了账户金额经常变动以外,大部分信息数据是未改变或很少变化的,对文件数据进行全备份过程中,未改变的数据被反复备份,浪费了较大的存储空间,而重要的账户数据占用的存储资源相对有限,需要对这种特殊的需求提出新的应对方法。因此,本文提出了改进的文件级持续数据保护技术(F-CDP)。
F-CDP技术是在ULVM层设计与实现的,是块级CDP技术的一种演化,组成文件的所有数据块在ULVM层是连续的,由于文件数据在备份过程中大部分数值保持不变,Pn值中大量的“0”是长期存在且位置不变的,如图2所示,账户中的个人信息长期未发生变化,只有账户金额部分发生改变。
图 2 个人账户数据的异或值
2.1 系统架构
根据第二节中提到的问题,我们的解决方案是通过虚拟技术在逻辑层实施数据保护,利用虚拟技术将物理上分散存储的文件数据逻辑链接成一个整体,从而更有利于数据保护的实现,如图3所示。在文件系统驱动与逻辑卷管理层(LVM)之间,增加了上层逻辑卷管理驱动(ULVM),ULVM由指针记录模块、数据转换模块和编码模块三部分组成,指针记录模块设置了数据增加指针Pa(Point addition)、数据删除指针Pd(Point delete)和数据更改指针Pc(Point change),分别记录数据增加、删除、更改时的起始位置;数据转换模块负责按照预定机制对相关的数据进行“0”“1”转换,编码模块用于对增量数据进行编码压缩。ULVM对上提供数据访问接口和统一的逻辑视图,对下维护下级各节点的逻辑映射关系。寻址模块进行数据物理地址的定向与访问,实现逻辑块与物理块的一一映射。
图3 系统架构
2.2 机制实现
2.2.1 指针记录模块
数据增加:当有新的文件建立或文件中增加新的数据时使用Pa,Pa包含起始位Pab(beginning)和结束位Pae(end)两部分,分别标明数据增加的起始位与结束位,Pab与Pae是一一对应的。对于数据增加的情况,新增的数据保持原有状态不变,原有数据异或后得到的值全部为“0”,本文设定Pab为“110”,Pae为“011”,ULVM首先通过数据转换模块将原来的数据全部转换为“0”,在数据的后面插入指针“110”,用于区分原有数据与新增数据,然后将新数据写到起始指针后面,最后插入结束位“011”,数据压缩解压时只需读取指针便可对指定的数据形态进行逐一恢复。如图4所示。
图4 数据增加
数据更改:文件中部分数据发生改变时使用Pc,如账户中的金额变动、地图坐标的更改、导航定位信息的修正等等,在改变的数据中插入相应的指针起始位Pcb和结束位Pce,分别标明数据改变的起始位与结束位,Pcb与Pce是一一对应的,当数据中有多个部分更改时,在Pcb与Pce后面加n分别标明即可。对于数据更改的情况,数据异或后改变的部分全部为“1”,未改变的部分全部为“0”,由于同一数据的一次写操作可能会涉及多个部分,本文设定Pcb为“10‘000’01”Pce为“01‘000’10”,中间三个比特位代表“000-111”八个数字,逐一累加,若一次写所涉及的修改不超过八处,则通过指针进行一一标记;若一次写操作涉及的改变超过九处以上,则对数据进行一次全备份。F-CDP通过数据转换模块将对应的数据进行转换,在改变的数据部分前后各插入相应的起始位与结束位指针,并记录时间戳,得到的结果如图5所示。
图5 数据更改
数据删除:文件中部分数据删除时使用该指针Pd,用来标明数据中删除的部分,该指针的作用是为了防止由病毒、误操作、人为破坏等造成的数据丢失,将删除的数据保存下来以便需要时恢复,该指针也包括Pdb与Pde两部分,分别标明数据删除部分的起始位与结束位。数据删除的情况较为简单,为了有效记录已删除的数据,防止误操作发生,本文设定数据删除指针Pdb与Pde均为“111”,F-CDP通过数据转换模块将未改变的数据转换为“0”,在删除的数据部分前后各插入相应的起始位与结束位指针,并记录时间戳,得到的结果如图6所示。
图6 数据删除
2.2.2 数据转换模块
针对标记指针的文件或者数据块,若指针为数据增加或删除,则将指针之外的全部数据转换为“0”,指针间的数据保持不变;若指针为数据更改,则将指针之间的数据全部转换为“1”,将指针之外的数据转换为“0”。
当应用对某数据进行一次数据更改写操作时,数据转换算法如下所示:
Algorithm DataTransition 1 Lp=getlenth(P); //获取指针长度2 Ld=getlenth(data); //获取数据长度3 Lw=getlenth(write); //写操作涉及的数据长度4 k=*Pb; //指针的起始位置5 for(i=1;i<Pb-1;i++)6 mi=0; //遍历指针前的所有数据,将其全部置为“0”7 for(i=Pb+LP; i<Pb+Lp+Lw-1; i++)8 mi=1; //遍历指针之间改变的数据,将其全部置为“1”9 for(i=Pb+Lp*2+Lw; i<Ld-1; i++)10 mi=0; //遍历指针之后的所有数据,将其全部置为“0”11 return mi
数据转换模块的核心思想是将指针之外的数据全部转换为“0”,指针之间的数据根据指针的不同,区别对待,对于数据更改的情况,指针之间的数据全部转换为“1”,对于其他两种情况,指针之间的数据保持不变。当同一数据的更改涉及多个部分时,可依次类推。
2.2.3 编码模块
由于P(n)中包含了大量连续的“0”和“1”,在进行数据保存时,只需记录指针之间有多少位“1”,指针之外有多少位“0”就能完整保存数据的详细信息,而对于类似的数据形态,本文提出了一种新的数据编码方式“表程编码”。
设计思想:假设在Pcb与Pce之间有Xbit的“1”,定义压缩比特流1所用的数据位为L,压缩后得到的值为C,根据二进制算法计算出L=|log2X|+1,其中||为取整运算。利用L位的0、1组合便可压缩保存Xbit的数据信息。例如X=1048573,即Pcb与Pce之间有1048573个连续排列的“1”,利用公式得出L=|log21048573|+1=19+1=20,即用 20位的“0”“1”数字“11111111111111111101”表示了1048573个连续的“1”,即C= 11111111111111111101。同样的原理应用在未改变的部分,其值全部为“0”,编码结果与改变的部分相同。由于每次编码过程中X的长度不同,在获取压缩值C的过程中,系统每次都要进行二进制树的遍历,遍历过程耗费了大量的系统资源,针对这种情况,本文提出了“表程编码”算法。
表程编码:针对大小为4KB的数据块,其数据改变量是有限的,也就是指X的范围相对可控:1≤X≤4×8×1024,如果系统事先计算出X的所有取值对应的编码值,记录在数据表中,通过读取数据转换模块得到的X长度,然后查找表中对应的编码值,就能节省系统对每个X进行计算所占用的资源,编码表如表1所示。
表 1 编码值遍历表
编码值遍历表计算出每个X值对应的压缩值C,每20组数据为一张子表,压缩解压模块从数据转换模块获取到X的值后,首先通过公式Table=|X÷20|+1计算出C值在哪张子表中,然后取X÷20的余数找到C的具体数值。
若文件数据大于4KB对于数据长期未改变的部分,通过公式L=|log2X|+1将记录数据信息所需全部“0”的比特位计算出来,通过“0”“1”组合得到表示数据“0”位数的信息,该组合是固定值,一次计算可以应用在文件数据日后所有的记录中,在账户金额部分插入指针后,链接在该固定值之后,生成新的日志信息,为该文件维护一个日志链,并定期进行文件的全备份。
2.3 ULVM工作流程
客户端的I/O命令先传送到ULVM,ULVM判别该命令是读或者是写。若是读,ULVM直接返回相应的数据,直接授权客户端通过网络访问存储池的相关数据;若是写,则由ULVM统一处理,首先将相应的数据调入内存,由指针模块记录数据改变部分的位置,然后通过数据转换模块,将未改变的部分设为“0”,改变的部分设为“1”,经过压缩解压模块对数据进行压缩生成Pn值,然后把Pn值写到相应的日志链中,具体过程如图7所示。
图7 ULVM命令解析流程
2.4 F-CDP的性能分析
无论持续数据保护机制在哪个层次实现或者是应用技术有多大提高,对于新增加和已删除的数据,任何数据保护机制都要完成最基础的工作:备份增量数据或待删除数据,这部分数据的备份工作占用的系统资源是无法减少的,性能提升的空间相对有限。本文针对数据的改变部分,将F-CDP与TRAP-4的性能进行比较,设定原型系统的数据块大小为4Kb,系统中有10TB的工作数据,每天数据的改变量约20%,每周做一次全备份。
若1M的文件每天同样有20%的改变,对于理想情况而言,也就是近52个数据块发生了改变,采用TRAP-4机制,系统最少保留52个数据块的P(m)值,利用游程编码进行数据压缩,系统要占用52×log212bit的空间,而F-CDP机制最多占用52×log220bit的空间,最少仅占用log220bit的空间,显然,F-CDP并没有明显增加系统的工作负载,但是该机制能够对重要文件或核心数据做持续的全备份,极大地保证了核心数据的安全性与可用性,提高了系统数据的可靠性。而对于特殊情况,256个数据块各改变了20%,且改变仅为一次写操作,F-CDP不但节省了备份空间,而且极大提高了数据的备份效率,尤其适合银行、证券等以小文件、实时性为特点的数据系统。
为了检验F-CDP的数据备份与恢复效率,对F-CDP进行实验,并与TRAP-4机制得出的结果进行比较。
实验环境:主机CPU为2.50GHz,RAM为1G,Ethernet adapt⁃ers为RTL8139,Operating System为Linux Fedora 15,内核为2.6.40版,数据库为Demon 5.0。采用TPC-C Benchmark模拟在线事务处理,运行半个小时。借鉴参考文献[1]中的实验方法及实现参考程序,做了相应的模拟实验。
3.1 数据压缩效率实验
分别取大小为1、10、100、1000、10000(M)的文件数据(对以上数据进行一次写操作,数据改变量小于1%),分别采用COW、TRAP-4、F-CDP的三种数据备份方式将更新的数据复制到备份中心,得到的网络数据流量如图8所示。
图 8 数据压缩效率对比
对于大小不同的文件数据,分别采用COW、TRAP-4和F-CDP技术对其进行数据备份,COW技术直接将数据复制到备份中心,数据大小不变,占用的网络带宽与数据量相关;TRAP-4技术通过异或器将数据进行了异或并且压缩,数据压缩后数据量明显变小,约为原数据的10%~30%;F-CDP技术采用表程编码进行数据压缩,数据压缩后大小一般在KB范围,网络传输过程中,数据量明显较小。
3.2 备份还原实验
分别取大小为0.1、0.2、0.4、0.8、1.6、3.2、6.4、12.8(M)的文件数据(区域地图数据),对以上数据进行一次写操作,数据改变量小于1%,实验分别采用COW、TRAP-4、F-CDP的三种数据备份方式,对文件数据进行写操作增量数据备份实验,实验得到的备份时间数据如图9所示:
图 9 数据备份对比
在100KB平均速率的网络中,数据较小时(小于1MB),COW由于直接将数据复制到异地备份中心,没有经历TRAP-4的数据异或和压缩及F-CDP的查表压缩过程,备份时间相对较短,TRAP-4与F-CDP的备份时间相差不大。而数据较大时(1MB以上),随着数据的增大,网络中传输数据所用的时间明显占据了备份时长的主体,COW技术的备份时间呈线性增长,TRAP-4机制相比COW来讲,提高了一定的传输效率和备份效率,而F-CDP技术中,查表压缩的时间没有明显增加,但是数据压缩的效率明显提高,网络传输的数据量增长不大,明显提高了数据的备份效率。
实验结果表明,基于虚拟存储的异地CDP技术具有生成增量数据快、压缩效率高、占用网络带宽小、存储空间利用率高的优点,虽然数据还原时要占用较长的时间进行数据解压,且数据压缩后无法对外提供访问工作,但是该机制的设计理念就是能够最大限度地保存数据版本、容忍重大灾难,面对重大灾难造成的损失,数据恢复期间所造成的损失几乎可以忽略不计。总而言之,F-CDP技术较好地解决了数据异地容灾的问题。
F-CDP机制是针对特定工作场景应运而生的,既对重要文件数据进行了实时数据全备份,又没有显著增加信息系统的计算和存储资源,能够将数据恢复到任意时刻,较好地解决了金融、证券、军事数据等核心信息的备份存档问题,提升了信息系统的容灾能力,该机制特别适合于文件数据较大、改动部分较少且改变位置相对固定的应用场景。
持续数据保护与系统负载是一对矛盾的平衡体,如何最大限度地保护数据、最低程度的增加系统负载是持续数据保护技术的发展方向,本文在TRAP-4的基础上,针对银行、证券等特定的文件数据格式,提出了改进的文件级的持续数据保护技术研究,一定程度上增强了系统的工作效能,提高了数据保护能力。
[1]Yang Q,Xiao W,Ren J.TRAP-Array:A disk array architecture providing timely recovery to any point-in-time[C]// Proc of the Int Sytnp on Computer Architecture.New York:ACM,2006.
[2]李旭,谢长生,杨靖等.一种改进的块级连续数据保护机制[J].计算机研究与发展,2009(5).
[3]Kimberly Keeton,Cipriano Santos,Dirk Beyer,etc. Designing for Disasters[C].Proceedings of the 3th USENIX Conference on File and Storage Technologies,San Francisco,CA,USA.USENIX Association.2004.03.
[4]王晶.强隔离操作系统的设备虚拟化[D].合肥:中国科学技术大学,2009.
[5]Yonghong Sheng,Dongsheng Wang,JinYang He et al. TH-CDP:An Efficient Block Level Continuous Data Protection System[C].In:2009 IEEE International Conference on Networking,Architecture,and Storage.2009:395-404.
[6]Deng Yibing,Chen Shanguang,Hu Wei,Gao Feng,Liu Chuanyi.A Novel Block-level Continuous Data Protection System [C].IEEEComputer Society.2010:242-247.
TP309
A
1671-0037(2014)10-70-4
冯美禄(1976.8-),本科,工程师,研究方向:电子产品。