数据校验冗余方法及装置的制作方法

文档序号:6613426阅读:224来源:国知局
专利名称:数据校验冗余方法及装置的制作方法
技术领域
本发明涉及一种数据校验冗余方法及装置。
背景技术
分布式网络存储系统中,为了充分利用系统带宽, 一般采用分条机制,
将文件分块存储在多个网络存储设备上。如图1所示,N个网络存储设备组
成的系统中,文件按M字节顺序分割成数据块D1、 D2........ Dk-l、 Dk、
Dk+1、 Dk+2........ D2k-1、 D2k.......,这些数据块轮转地循环存储在其中
K个网络存储设备上。每个网络存储设备上的文件块, 一起称为一个分条。 文件分条后,读写文件的并行度增大,性能提高,但可靠性下降,故障概率 增大,K个分条中任何一个分条的数据被破坏,都会导致文件不可用。
为了解决分条导致的可靠性问题,需要对文件数据进行冗余备份。对于 有高可靠性要求的系统,则需要实时的冗余备份。冗余技术又称为RAID技 术,RAID是英文Redundant Array of Inexpensive Disks的缩写,即廉价-兹盘冗 余阵列。RAID就是一种由多块硬盘构成的冗余阵列存储设备。 一种常用的数 据实时冗余备份方法是远程同步镜像。远程同步镜像是一种同步复制技术, 将本地数据以完全同步的方式复制到异地,每一个本地的I/O事务均需等待远 程复制的完成确认信息,方予以释放。同步镜像使远程复制总能与本地要求 复制的内容相一致。当某个网络存储设备出现故障时,被镜像的远程数据副 本可以保证业务继续执行而没有数据的丟失。如图2所示,文件的数据块Dl、
D2........ Dk陽l、 Dk、 Dk+1、 Dk+2........ D2k-1、 D2k.......,轮转地循
环存储在网络存储设备i、 i+1........ i+k-2、 i+k-1这K个网络存储设备上。
写入这些数据块时,同时在网络存储设备i+l、 i+2........ i+k-1 、 i这K个网络存储设备上复制这些数据块。例如,在网络存储设备i上写入Dl时,也同
时在网络存储设备i+l上写入D1,这样即使网络存储设备i出现故障,仍然 可以从网络存储设备i+l取得D1。在申请号为200510024963.6的中国专利申 请中还有更多与上述远程同步镜像相关的内容。
远程同步镜像的缺点是存储空间开销大,至少需要额外消耗与被保护数 据等量的存储空间,这是复制冗余方法的固有缺陷,可以复制多个数据副本, 副本越多,可靠性越高,但消耗的存储空间越大。
远程同步镜像采用的是复制冗余方法,除此还有校验冗余方法。RAID5 是一种常用的校验冗余级别,是一种存储性能、数据安全和存储成本兼顾的 存储解决方案。以四个硬盘组成的RAID5为例,其数据存储方式如图3所示。 图中,PO为DO, Dl和D2的奇偶才交-险信息,其它以此类推。由图中可以看 出,RAID5不直接对存储的数据进行备份,而是把数据和相对应的奇偶校验 信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分 别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,利用剩下的 数据和相应的奇偶校验信息去恢复被损坏的数据。因此,采用校验冗余方法, 可以减少存储空间开销,只需要使用l/n(n>=2)的原始数据存储空间,例如 四个硬盘组成的RAID5的奇偶校验信息只需占用1个硬盘的存储空间。
上述校验冗余方法的实际操作过程举例如下,参照图4所示,每k-l( k>2 )
个内容连续的数据块Dp(k-1)+1、 Dp(k-l)+2........ Dp(k-l)+k-l视为一个校
验组,每一个校验组都有1个校验数据块Cp+1,所述校验数据块 Cp+1 =Dp(k-1)+1 Dp(k-1 )+2 ... Dp(k-1 )+k-1, p=0, 1 ,2,……。例如,
C1=D1 @D2 ... Dk-l,
C2=Dk Dk+l … D2k-2,
校验数据块与数据块分别存储在k个不同的网络存储设备上,这样任何1 个数据块被破坏,都能够根据其他k-2个数据块和校验数据块,进行恢复。例
8如,由于网络存储设备i故障,导致数据块D1被破坏,则可以从网络存储设
备i+l、 i+2........ i+k-2分别读取数据块D2、 D3........ Dk画l,从网络存
储设备i+k-l读取校验数据块Cl,然后由它们计算出Dl的值并恢复Dl, Dl 按下述公式计算得到D1=C1 @D2 ... Dk-l。
为了实现对数据进行冗余保护的实时性,每个数据块写入时,都必须同 步更新校验数据块的内容。但根据上述校验数据块的算法可以看到,上述更 新校验数据块的算法性能开销很大。
假设Dp(k-l)+q的内容改变为newDp(k-l)+q,则对应地,Cp+1的内容也 要改变,则相对应的新的校验数据块newCp+l的算法如下
newCp+l=Dp(k-l)+l Dp(k-l)+2 ... newDp(k画l)+q … Dp(k隱l)+k-l。
例如,Dl的内容改变,则有newCl=newDl D2 … Dk-1 。
从上面newCp+1的计算公式可以看出,已知newDp(k-l)+q,为了得到
newCp+l,需要先读取Dp(k-l)+l、 Dp(k-l)+2.....Dp(k-l)+q-l、 Dp(k-l)+q+l、
Dp(k-l)+k-1,然后进行计算。整个过程需要k-2次网络读操作和k-2次异或运 算,效率非常低,其中,k-2次网络读操作是主要的性能开销。并且,在得到 newCp+1后,写入newCp+1 。
比较写数据块与校验数据块的过程,改变Dp(k-l)+q的内容,只需要1 次网络写操作,而为了对应地改变Cp+l的内容,却需要k-2次网络读操作和 l次网络写操作。将网络读操作和网络写操作视为同等时间量级的操作,不考 虑计算开销,则写校验数据块的耗时是写数据块的k-l倍。而有校验冗余的写 操作耗时(写数据+写校验数据)是没有校验冗余的写操作的k倍。因此,当 网络存储设备的规模较大时,上述更新校验数据的操作耗时很大,效率也较 低。并且,当网络存储设备的规模较大时,上述更新校验数据的所涉及的网 络存储设备也较多,从而对网络带宽的消耗很大,因而网络存储系统整体性能较低。

发明内容
本发明提供一种数据校验冗余方法及装置,解决现有技术校验冗余方法 操作耗时、网络货款消耗较大的问题。
为解决上述问题,本发明提供一种数据校验冗余方法,包括更新校验数 据的方法,所述更新校验数据的方法包括下列步骤,
获取更新数据;
读:f又所述更新数据待存储位置的当前数据; 计算当前数据和更新数据的异或值; 读取校验数据存储位置的当前校验数据;
计算当前数据和更新数据的异或值与当前校验数据的异或值作为新的校 验数据;
在所述校验数据存储位置写入新的校验数据。
所述数据校验冗余方法还包括,在所述校验数据存储位置写入新的校验 数据后,在所述更新数据待存储位置写入更新数据。
相应地,本发明提供一种数据校验冗余装置,包括接收单元、第一读取 单元、计算单元、第二读取单元和校验数据更新单元,
所述接收单元用于接收更新数据,并向计算单元发送;
所述第一读取单元用于读取更新数据待存储位置的当前数据,并向计算 单元发送;
所述计算单元用于根据第一读取单元发送的当前数据和接收单元发送的 更新数据,计算所述当前数据和更新数据的异或值,并向校验数据更新单元发送;
所述第二读取单元用于读取校验数据存储位置的当前校验数据,并向校 验数据更新单元发送;
所述校验数据更新单元用于根据第二读取单元发送的当前校验数据和计 算单元发送的当前数据和更新数据的异或值,计算当前数据和更新数据的异 或值与当前校验数据的异或值作为新的校验数据,并在校验数据存储位置写 入新的校验数据。
可选的,所述数据校验冗余装置还包括用于读取接收单元中的更新数据, 并将更新数据写入所述更新数据待存储位置的写入单元。
将更新数据写入所述更新数据待存储位置。
本发明还提供另一种数据校验冗余方法,包括更新校验数据的方法,所 述更新校验数据的方法包括下列步骤,
获取更新数据;
若更新数据待存储位置有数据,则读取所述更新数据待存储位置的当前 数据,计算当前数据和更新数据的异或值,若校验数据存储位置有数据,则 读取当前校验数据,并计算当前数据和更新数据的异或值与当前校验数据的 异或值作为新的校验数据,并在校验数据存储位置写入新的校验数据;若校 验数据存储位置无数据,则将当前数据和更新数据的异或值作为新的校验数 据,并在校验数据存储位置写入新的校验数据;
若更新数据待存储位置无数据,则在校验数据存储位置有数据时,读取 当前校验数据,并计算当前校验数据和更新数据的异或值作为新的校验数据, 并在校验数据存储位置写入新的校验数据;在校验数据存储位置无数据时, 将所述更新数据作为新的校验数据,并在校验数据存储位置写入新的校验数据。
所述数据校验冗余方法还包括,在所述校验数据存储位置写入新的校验 数据后,在所述更新数据待存储位置写入更新数据。
相应地,本发明还提供一种数据校验冗余装置,包括接收单元、第一判 断单元、第一读取单元、计算单元、第二判断单元、第二读取单元和校验数 据更新单元,
所述接收单元用于接收更新数据,并向计算单元发送;
所述第一判断单元用于判断更新数据待存储位置是否有数据,并向第一
读取单元和计算单元发送判断结果;
所述第一读取单元用于在获得所述更新数据待存储位置有数据的判断结 果后,读取所述更新数据待存储位置的当前数据,并向计算单元发送;
所述计算单元用于在获得第一读取单元发送的当前数据后,计算当前数 据和更新数据的异或值,并向校验数据更新单元发送;或在获得所述更新数 据待存储位置没有数据的判断结果后,将更新数据向校验数据更新单元发送;
所述第二判断单元用于判断校验数据存储位置是否有数据,并向第二读 取单元和校验数据更新单元发送判断结果;
所述第二读取单元用于在获得校验数据存储位置有校验数据的判断结果 后,读取校验数据,并向校验数据更新单元发送;
所述校验数据更新单元用于在获得第二读取单元发送的校验数据和计算 单元发送的数据后,计算校验数据和计算单元发送的数据的异或值作为新的 校验数据,并在校验数据存储位置写入新的校验数据;或在获得校验数据存 储位置没有校验数据的判断结果后,将计算单元发送的数据作为新的校验数 据,并在校验数据存储位置写入新的校验数据。可选的,所述数据校验冗余装置还包括用于读取接收单元中的更新数据, 并将更新数据写入所述更新数据待存储位置的写入单元。
可选的,所述校验数据更新单元在写入新的校验数据后向所述写入单元 发送完成更新校验数据的通知。
可选的,所述写入单元在所述校验数据更新单元完成写入新的校验数据 后,将更新数据写入所述更新数据待存储位置。
本发明还提供一种数据校验冗余方法,包括异步执行的数据更新步骤和 校验数据更新步骤,
所述数据更新步骤包括,
获取当前数据和更新数据的异或值并暂存,或获取更新数据并暂存;将 更新数据写入更新数据待存储位置; 所述校验数据更新步骤包括, 获取更新数据或当前数据和更新数据的异或值;
若校验数据存储位置有校验数据,则读取所述校验数据存储位置的当前 校验数据,计算更新数据和当前校验数据的异或值或更新数据和当前数据的 异或值与当前校验数据的异或值作为新的校验数据;若校验数据存储位置无 校验数据,则将更新数据或更新数据和当前数据的异或值作为新的校验数据;
在所述校验数据存储位置写入新的校验数据。
相应地,本发明还提供一种数据校验冗余装置,包括接收单元、第一判 断单元、第一读取单元、计算单元、写入单元、后台发送单元、第二判断单 元、第二读取单元和校验数据更新单元,
所述接收单元用于接收更新数据,并向计算单元发送;
所述第一判断单元用于判断更新数据待存储位置是否有数据,并向第一读取单元和计算单元发送判断结果;
所述第一读取单元用于在获得所述更新数据待存储位置有数据的判断结
果后,读取所述更新数据待存储位置的当前数据,并向计算单元发送;
所述计算单元用于在获得第一读取单元发送的当前数据后,计算当前数 据和更新数据的异或值,并向后台发送单元发送;或在获得所述更新数据待 存储位置没有数据的判断结果后,将更新数据向后台发送单元发送;
所述写入单元用于在计算单元向后台发送单元发送数据后,读取接收单 元中的更新数据,将更新数据写入所述更新数据待存储位置;
所述后台发送单元用于将计算单元发送的数据发送给校验数据更新单元
的;
所述第二判断单元用于判断校验数据存储位置是否有数据,并向第二读 取单元和校验数据更新单元发送判断结果;
所述第二读取单元用于在获得校验数据存储位置有校验数据的判断结果 后,读取校验数据,并向校验数据更新单元发送;
所述校验数据更新单元用于在获得第二读取单元发送的校验数据和后台 发送单元发送的数据后,计算校验数据和后台发送单元发送的数据的异或值 作为新的校验数据,并在校验数据存储位置写入新的校验数据;或在获得校 验数据存储位置没有校验数据的判断结果后,将后台发送单元发送的数据作 为新的校验数据,并在校验数据存储位置写入新的校验数据。
与现有技术相比,上述公开的数据校验冗余方法及装置具有以下优点 上述所公开的数据校验冗余方法及装置最多只需进行原始数据和原始校验数 据的本地读操作,两次更新数据或一次更新数据及一次更新数据与原始数据 的异或值的网络传输操作,再进行一次新校验数据的本地写操作就能完成更 新校验数据,从而减少了数据的读取操作步骤,因而能快速更新校验数据,
14操作耗时大大降低。
上述所公开的数据校验冗余方法及装置在更新校验数据时,由于只需上 述的两次网络传输操作,因而也减少了所涉及的网络存储设备,因而网络通 信量也减少了,减少了对网络带宽的消耗,对提升网络存储系统整体性能也 有益。


图1是现有技术分布式网络存储系统示意图2是现有技术远程同步镜像示意图3是现有技术校验冗余方法的盘阵示意图4是现有技术数据校验冗余方法的数据存储示意图5是本发明数据校验冗余方法的第一种实施方式流程图6是对应于图5的本发明数据校验冗余装置的实施方式示意图7是本发明数据校验冗余方法的第二种实施方式流程图8是对应于图7的本发明数据校验冗余装置的实施方式示意图9A是本发明数据校验冗余方法的第三种实施方式中更新数据步骤流 程图9B是本发明数据校验冗余方法的第三种实施方式中更新校验数据步 骤流程图IO是对应于图9A、图9B的数据校验冗余装置的实施方式示意图。
具体实施例方式
本发明所公开的数据校验冗余方法及装置最多只需进行原始数据和原始 校验数据的本地读操作,两次更新数据或一次更新数据及一次更新数据与原始数据的异或值的网络传输操作,再进行一次新校验数据的本地写操作就能 完成更新校验数据,从而减少了数据的读取操作步骤,因而能快速更新校验 数据,操作耗时大大降低。
本发明所公开的数据校验冗余方法及装置在更新校验数据时,由于只需 上述的两次网络传输操作,因而也减少了所涉及的网络存储设备,因而网络 通信量也减少了,减少了对网络带宽的消耗,对提升网络存储系统整体性能 也有益。
根据上述对校验冗余方法介绍,目前校验数据块的算法为 Cp+l=Dp(k-l)+l Dp(k-l)+2 @ ... newDp(k-l)+q ... Dp(k-l)+k-l
(1)
下面对于上述算法进一步推导如下
假设更新校验数据块之前的校验数据块oldCp+1的值为 oldCp+l=Dp(k-l)+l Dp(k-l)+2 ... oldDp(k-l)十q … Dp(k-l)+k-l
=Dp(k画l)+1 Dp(k-l)+2 … oldDp(k-l)+q-l oldDp(k-l)+q+l … Dp(k-1 )+k-1 oldDp(k陽1 )+q ,
所以Dp(k-1)+1 Dp(k-l)+2 … oldDp(k-l)+q-l oldDp(k-l)+q+l … Dp(k-1 )+k-1 = oldDp(k-1 )+q oldCp+1,(2)
那么当数据块Dp(k-l)+q的值改变为newDp(k-l)+q时,新的校验数据块 newCp+1则可按公式(2)的形式计算如下
newCp+l=Dp(k-1)+1 Dp(k-l)+2 … newDp(k画l)+q … Dp(k-l)+k-l
=Dp(k-1)+1 Dp(k-l)+2 ... oldDp(k-l)+q-l oldDp(k-l)十q十l … Dp(k-1 )+k-1 newDp(k-1 )+q
=oldDp(k隱l)十q oldCp+1十newDp(k-l)+q。 ( 3 ) 从公式(3 )可以看出,已知newDp(k-l)+q,写入newDp(k-l)+q需要1 次网络写操作,而为了得到newCp+1,需要先读取oldDp(k-l)+q和oldCp+l,然后进行计算。整个过程需要2次网络读操作和2次异或运算。忽略异或运
算的开销,则改变Cp+1的内容(计算newCp+l以及写入newCp+l ),需要2 次网络读操作和1次网络写操作。将网络读操作和网络写操作视为同等时间 量级的操作,则改变校验数据块的耗时是写数据块的3倍。因此,有校验冗 余的写操作耗时(写数据+写校验数据)是没有校验冗余的写操作的4倍。
根据前述的分析,现有算法中有校验冗余的写操作耗时是没有校验冗余 的写操作耗时的k倍,当网络存储设备数目k很大时,有校验冗余的写操作 耗时很大,性能很低。而根据上述新的更新校验数据的算法,有校验冗余的 写操作耗时是没有校验冗余的写操作的4倍,这是一个固定值,不受网络存 储设备数目的影响,因此新的更新校验数据的算法使得有校验冗余的写操作 耗时减小。
并且,上述新的更新校验数据的算法将校验过程与网络存储设备的相关 度,由k-l (k>2)降低到了下限固定值2。所述相关度就是完成更新校验数据 块和更新数据块所需的网络存储设备的数量。因此,占用的网络带宽大幅下 降,有益于提升网络存储系统的整体性能。
下面对现有算法,即应用公式(1)的算法和上述新的更新校验数据的算 法,即应用公式(3)的算法进行比较以辅助说明。例如,k=3时,现有算法 中有校验冗余的写操作耗时是没有校验冗余的写操作耗时的3倍,而上述新 的更新校验数据的算法是4倍;1^=4时,现有算法和上述新的更新校验数据的 算法都是4倍,二者持平;k-5时,现有算法是5倍,而上述新的更新校验数 据的算法仍然是4倍,因此104后,上述新的更新校验数据的算法性能优于 现有算法,且k越大,上述新的更新校验数据的算法相对于现有算法的优势 越明显。因此,上述新的更新校验数据的算法尤其适合大规模的网络存储环 境。
而对于上述的新的更新校验数据的算法,还可作进一步分析。校验冗余的方法可以分为两种形式 一种是以磁盘为粒度,校验冗余是基于磁盘块, 与文件的状态无关,是一种无状态的操作。写入数据时,默认为老的磁盘块 内容已经存在;而另一种是以文件为粒度,校验冗余是基于文件的分条机制, 是一种有状态的操作。在生成新文件和追加文件内容的时候,可以根据存储
位置的文件状态来优化操作。
例如,对于上述的新的更新数据的算法,在写入新数据,生成新的校验 数据时,就可能尚不存在老的数据oldDp(k-l)+q,和/或老的校验数据oldCp+L 因此,上述新的更新4交-睑凄t据的算法可以继续优化成以下形式
wewDp(yt — 1) +《十— 1) +《,oWQ + 1 = 0;
— 1) +《十oAiQ +1, o膨/ (A: — 1) +《=0;
— 1) +《,0/必;7(A — 1) +《=o/^Q + 1 = 0;
w,Q +1 = <
在上述三种优化后的算法中,第一种算法是基于老的校验数据oldCp+1 不存在的情况,因此该算法减少了 1次读取老的校验数据oldCp+1的网络读 操作。第二种算法是基于老的数据oldDp(k-l)+q不存在的情况,因此该算法 减少了 1次读取老的数据oldDp(k-l)+q的网络读操作。第三种算法是基于老 的校验数据oldCp+1和老的数据oldDp(k-l)+q不存在的情况,因此减少了 1 次读取老的校验数据oldCp+1的网络读操作和减少了 1次读取老的数据 0ldDp(k-l)+q的网络读操作。因此,上述第一种、第二种算法有校验冗余的写 操作耗时(写数据+写校验数据)是没有校验冗余的写操作的3倍。而第三种 算法有校验冗余的写操作耗时(写数据+写校验数据)是没有校验冗余的写操 作的2倍。因此基于文件分条的校验冗余方法通过优化能进一步减少网络通 信和算术运算的次数,加快了校验数据生成的速度。根据所述分析,基于文
件分条的校验冗余方法可以具有比基于磁盘块的校验冗余方法更高的效率。
基于上述的分析,本发明数据校验冗余方法及数据校验冗余装置就是采 用上述新的更新校a^数据的算法。
18参照图5所示,本发明数据4L睑冗余方法的第一种实施方式包括下列步
骤,
步骤sl,接收更新数据; 步骤s2,读取更新数据待存储位置的当前数据; 步骤s3,计算当前数据和更新数据的异或值; 步骤s4,读取当前校验数据;
步骤s5,计算当前数据和更新数据的异或值与当前校验数据的异或值作 为新的校验数据;
步骤s6,将所述新的校验数据写入校验数据存储位置以完成更新校验数
据;
步骤s7,将更新数据写入所述更新数据待存储位置。
所述数据校验冗余方法还包括,在所述校验数据存储位置写入新的校验 数据后,在所述更新数据待存储位置写入更新数据。
对应上述的实施方式,举例如下假设当前数据存储系统中存有一组8 位数据10110101,所述8位数据的当前校验数据通过将所述8位数据组中的 数据逐位异或计算得到,即C8= 1 0 1 1 0 1 0 1 = 1。而当来到一组 新的8位数据11110101时,只有第2位数据发生了改变,需要进行数据更新, 因而第2位数据为更新数据。而当前8位数据组的第2位凄t据位当前数据。 因而,首先接收新的8位数据组的第2位数据,然后读取当前8位数据组的 第2位数据,当前8位数据组的第2位数据为0。然后计算当前8位数据组的 第2位数据和新的8位数据组的第2位数据的异或值,当前8位数据组的第2 位数据为0,而新的8位数据组的第2位数据为1,因此所述异或值为1。接 下来,读取当前校验数据,当前校验数据为1。接着,计算当前8位数据组的 第2位数据和新的8位数据组的第2位数据的异或值1与当前校验数据1的 异或值作为新的校验数据。根据上述数据,所述作为新的校验数据的异或值为0。最后,将所述新的校验数据写入校验数据存储位置完成校验数据更新,
并将新的8位数据组的第2位数据写入相应数据存储位置,覆盖当前8位数 据组的第2位数据,来完成数据更新。
以上为一组数据中只有1位数据改变的情况,当有2位数据改变的情况 时,可以分两次实施上例方法以获得新的校验数据。下面简要举例如下当 前一组4位数据为1111,对应这组数据的4交-验数据为C产l 1 1 1=0。而 新的一组数据为0101,则可以将更新数据和校验数据的过程分成两步第一 步先构建一组中间数据0111,然后依照上例的方法获得所述这组中间数据的 校验数据。所述这组中间数据的校验数据当前数据组的第1位数据1和中间 数据组的第1位数据0的异或值与当前数据组的校验数据1的异或值。即中 间数据组的校验数据C2二1 0 0=1。第二步,以中间数据组位当前数据,则 继续依照上例方法,新的数据组的校验数据为中间数据组的第3位数据1和 新的数据组的第3位数据0的异或值与中间数据组的校验数据1的异或值。 即新的数据组的校验数据C3=l 0 1=0。而为了验证该方法的正确性,按前 述的原始算法将新的数据组的数据逐位异或得到C4=l 1 1 1=0。因此, 所述分两步的方法正确。依此类推,当有多位数据改变时,也可应用此方法 分多步来获得最终的校验数据。
以上举例为了叙述方便,仅列举了进行数据更新的数据存储位置只有1 位数据的情况,但并非用以限定。所述数据存储位置中的数据也可以是具有 一定数据长度的数据,此时所述的更新数据和当前数据的异或计算也将变成 多位异或计算。
参照图6所示,本发明数据校验冗余装置的第一种实施方式包括,
接收单元10、第一读取单元20、计算单元30、第二读取单元50和校验 数据更新单元40。其中,所述接收单元IO用于接收更新数据,并向计算单元30发送;
所述第一读取单元20用于读取所述更新数据待存储位置的当前数据,并 向计算单元30发送;
所述计算单元30用于根据第一读取单元20发送的当前数据和接收单元 发送的更新数据,计算所述当前数据和更新数据的异或值,并向校验数据更 新单元40发送;
所述第二读取单元50用于读取校验数据存储位置的当前校验数据,并向 校验数据更新单元40发送;
所述校验数据更新单元40用于根据第二读取单元50发送的当前校验数 据和计算单元30发送的当前数据和更新数据的异或值,计算当前数据和更新 数据的异或值与当前校验数据的异或值作为新的校验数据,并在校验数据存 储位置写入新的校验数据。
所述数据校验冗余装置还包括用于读取接收单元10中的更新数据,并将 更新数据写入所述更新数据待存储位置的写入单元60。
所述写入单元60在校验数据更新单元40写入新的校验数据后,将更新 数据写入所述更新数据待存储位置。
参照图7所示,本发明数据校验冗余方法的第二种实施方式包括下列步
骤,
步骤s10,获取更新数据;
步骤sll,判断更新数据待存储位置是否有数据,若有数据则执行步骤 sl2;若无数据,则执行步骤sl4;
步骤sl2,读取所述更新数据待存储位置的当前数据; 步骤sl3,计算当前数据和更新数据的异或值;
步骤s14,判断校验数据的存储位置是否有数据,若有数据则执行步骤sl5;若无数据,则执行步骤sl7; 步骤sl5,读取当前校验数据;
步骤s16,计算当前数据和更新数据的异或值与当前校验数据的异或值或 更新数据与当前校验数据的异或值作为新的校验数据,并执行步骤sl8;
步骤s17,将当前数据和更新数据的异或值或更新数据作为新的校验数 据,并执行步骤sl8;
步骤s18,将所述新的校验数据写入校验数据存储位置以完成更新校验数
据;
步骤sl9,将更新数据写入所述更新数据待存储位置。 所述数据校验冗余方法还包括,在所述校验数据存储位置写入新的校验 数据后,在所述更新数据待存储位置写入更新数据。
对应上述的实施方式,举例如下假设当前数据存储系统中存有一组8 位数据10110101,所述8位数据的当前校验数据通过将所述8位数据组中的 数据逐位异或计算得到,WC8=1 0 1 1 0 1@0 1 = 1。而当来到一组 新的9位数据101101010时,第9位数据相对于当前数据组来说是新的,并 且新的数据组比当前数据组还多了一位数据,因而需要进行第9位数据的更 新,因而第9位数据为更新数据。因而,首先接收新的9位数据组中的第9 位数据,然后判断第9位数据的数据存储位置是否有数据,此处由于当前数 据组只有8位数据,因而第9位数据的数据存储位置是空的。接下来,就会 判断当前校验数据是否存在,此处当前校验数据存在,因而读取当前校验数 据,当前校验数据为1。接着,计算第9位数据0与当前校验数据1的异或值 作为新的校验数据。根据上述数据,所述作为新的校验数据的异或值为1。最 后,将所述新的校验数据写入校验数据存储位置完成校验数据更新,并将第9 位数据写入相应数据存储位置,完成数据更新。
关于多位数据改变的情况下校验数据的计算方法,请参照对应本发明数
22据校验冗余方法的第 一种实施方式的例子中的说明。以上举例为了叙述方便, 仅列举了进行数据更新的数据存储位置只有1位数据的情况,但并非用以限 定。所述数据存储位置中的数据也可以是具有一定数据长度的数据,此时所 述的更新数据和当前数据的异或计算也将变成多位异或计算。
参照图8所示,本发明数据校验冗余装置的第二种实施方式包括,接收
单元10、第一判断单元70、第一读取单元20、计算单元30、第二判断单元 80、第二读取单元50和校验数据更新单元40。
其中,所述接收单元IO用于接收更新数据,并向计算单元30发送;
所述第 一判断单元70用于判断所述更新数据待存储位置是否有数据,并 向第一读取单元20和计算单元30发送判断结果;
所述第一读取单元20用于在获得所述更新数据待存储位置有数据的判断 结果后,读取所述数据存储位置的当前数据,并向计算单元30发送;
所述计算单元30用于在获得第 一读取单元20发送的当前数据后,计算 当前数据和更新数据的异或值,并向校验数据更新单元40发送;或在获得所 述更新数据待存储位置没有数据的判断结果后,将更新数据向校验数据更新 单元40发送;
所述第二判断单元80用于判断校验数据存储位置是否有数据,并向第二 读取单元50和校验数据更新单元40发送判断结果;
所述第二读取单元50用于在获得校验数据存储位置有校验数据的判断结 果后,读取校验数据,并向校验数据更新单元40发送;
所述校验数据更新单元40用于在获得第二读取单元50发送的校验数据 和计算单元30发送的数据后,计算校验数据和计算单元30发送的数据的异 或值作为新的校验数据,并在校验数据存储位置写入新的校验数据;或在获 得校验数据存储位置没有校验数据的判断结果后,将计算单30元发送的数据作为新的校验数据,并在校验数据存储位置写入新的校验数据。
所述数据校验冗余装置还包括用于读取接收单元10中的更新数据,并将 更新数据写入所述更新数据待存储位置的写入单元60。
所述写入单元60在所述校验数据更新单元40写入新的校验数据的通知 后,将更新数据写入所述更新数据待存储位置。
本发明数据校验冗余方法的第三种实施方式包括异步执行的数据更新步 骤和校验数据更新步骤。
参照图9A所示,所述数据更新步骤包括, 步骤s21,获取更新数据;
步骤s22,判断更新数据待存储位置是否有数据,若有数据则执行步骤 s23;若无数据,则执行步骤s25;
步骤s23,读取所述更新数据待存储位置的当前数据;
步骤s24,计算当前数据和更新数据的异或值,并将所述异或值插入发送 队列,并执行步骤s26;
步骤s25,将更新数据插入发送队列,并执行步骤s26;
步骤s26,唤醒后台发送线程以启动发送队列,并写入更新数据。
参照图9B所示,所述校验数据更新步骤包括,
值;
步骤s32,判断校验数据存储位置是否有校验数据,若有校验数据,则执 行步骤s33;若无校验数据,则执行步骤s35;
步骤s33,读取所述校验数据存储位置的当前校验数据;
步骤s34,计算更新数据和当前校验数据的异或值或更新数据和当前数据 的异或值与当前校验数据的异或值作为新的校验数据,并执行步骤s36;
步骤s35,将更新数据或更新数据和当前数据的异或值作为新的校验数据,并执行步骤s36;
步骤s36,在所述校验数据存储位置写入新的校验数据以完成校验数据的 更新。
在步骤s36中,在写入新的校验数据后,发出完成更新校验数据的通知。
对应上述的实施方式,举例如下布i设当前数据存储系统中存有一组8 位数据10110101,所述8位数据的当前校验数据通过将所述8位数据组中的 数据逐位异或计算得到,即C8= 1 0 1 @ 1 0 1 0 1 = 1。而当来到一组 新的9位数据101101010时,第9位数据相对于当前数据组来说是新的,并 且新的数据组比当前数据组还多了一位数据,因而需要进行第9位数据的更 新,因而第9位数据为更新数据。因而,首先接收新的9位数据组中的第9 位数据,然后判断第9位数据的数据存储位置是否有数据,此处由于当前数 据组只有8位数据,因而第9位数据的数据存储位置是空的。此时,就会将 第9位数据插入发送队列,并唤醒后台发送线程以启动发送队列,然后将第9 位数据写入相应数据存储位置完成数据更新。
而对于更新校验数据步骤,在接收到发送队列发送的第9位数据后,会 判断当前校验数据是否存在,此处当前校验数据存在,因而读取当前校验数 据,当前校验数据为1。接着,计算第9位数据0与当前校验数据1的异或值 作为新的校验数据。根据上述数据,所述作为新的校验数据的异或值为1。最 后,将所述新的校验数据写入校验数据存储位置完成校验数据更新。
关于多位数据改变的情况下校验数据的计算方法,请参照对应本发明数 据校验冗余方法的第一种实施方式的例子中的说明。以上举例为了叙述方便, 仅列举了进行数据更新的数据存储位置只有1位数据的情况,但并非用以限 定。所述数据存储位置中的数据也可以是具有一定数据长度的数据,此时所 述的更新数据和当前数据的异或计算也将变成多位异或计算。参照图IO所示,本发明数据校验冗余装置包括,接收单元IO、第一判断
单元70、第一读取单元20、计算单元30、写入单元60、后台发送单元90、 第二判断单元80、第二读取单元50和校验数据更新单元40。
其中,所述接收单元IO用于接收更新数据,并向计算单元30发送;
所述第一判断单元70用于判断更新数据待存储位置是否有数据,并向第 一读取单元20和计算单元30发送判断结果;
所述第一读取单元20用于在获得所述更新数据待存储位置有数据的判断 结果后,读取所述更新数据待存储位置的当前数据,并向计算单元30发送;
所述计算单元30用于在获得第一读取单元20发送的当前数据后,计算 当前数据和更新数据的异或值,并向后台发送单元90发送;或在获得所述更 新数据待存储位置没有数据的判断结果后,将更新数据向后台发送单元90发 送;
所述写入单元60用于在计算单元30向后台发送单元90发送数据后,读 取接收单元10中的更新数据,将更新数据写入所述更新数据待存储位置;
所述后台发送单元90用于将计算单元30发送的数据发送给校验数据更 新单元的;
所述第二判断单元80用于判断校验数据存储位置是否有数据,并向第二 读取单元50和校验数据更新单元40发送判断结果;
所述第二读取单元50用于在获得校验数据存储位置有校验数据的判断结 果后,读取校验数据,并向校验数据更新单元40发送;
所述校验数据更新单元40用于在获得第二读取单元50发送的校验数据 和后台发送单元90发送的数据后,计算校验数据和后台发送单元90发送的 数据的异或值作为新的校验数据,并在校验数据存储位置写入新的校验数据;或在获得校验数据存储位置没有校验数据的判断结果后,将后台发送单元90 发送的数据作为新的校验数据,并在校验数据存储位置写入新的校验数据。
所述校验数据更新单元40在写入新的校验数据后向所述写入单元60发 送完成更新校验数据的通知。
下面通过两个数据校验冗余的例子对本发明数据校验冗余方法和数据校 验冗余装置进行进一步说明。
实施例1
首先结合图7和图8所示,在接收单元10接收到更新数据后,会先将更 新数据发送给计算单元30。而第一判断单元70会判断所要写入的更新数据待 存储位置是否有数据,并将判断结果发送给计算单元30和第一读取单元20。
如果所要写入的更新数据待存储位置没有数据,第一判断单元70会将没 有数据的判断结果发送给计算单元30和第一读取单元20。计算单元30在获 得所述判断结果后,会将更新数据直接发送给校验数据更新单元40;而如果 写入的数据存储位置有数据,第一判断单元70会将有数据的判断结果发送给 计算单元30和第一读取单元20。则第一读取单元20会从所述更新数据待存 储位置读取原有数据,并将所述数据发送给计算单元30。计算单元30在接收 到原有数据后,计算原有数据和更新数据的异或值,并在得到结果后将所述 异或值发送给校验数据更新单元40。
而第二判断单元80会判断校验数据存储位置是否有数据,并将判断结果 发送给校验数据更新单元40和第二读取单元50。
如果校验数据存储位置没有数据,第二判断单元80会将没有数据的判断 结果发送给校验数据更新单元40和第二读取单元50。校验数据更新单元40 在获得所述判断结果后,就直接将所接收到的更新数据或原有数据和更新数 据的异或值作为新的校验数据;而如果校验数据存储位置有数据,第二判断单元80会将有数据的判断结果发送给校验数据更新单元40和第二读取单元 50。则第二读取则单元50会从所述校验数据存储位置读取原有校验数据,并 将所述原有校验数据发送给校验数据更新单元40。校验数据更新单元40在获 得原有校验数据后,计算原有校验数据和更新数据或计算原有数据和更新数 据的异或值与原有校验数据的异或值,并将结果作为新的校验数据。
在得到新的校验数据后,校验数据更新单元40在所述的校验数据存储位 置写入新的校验数据完成校验数据更新,同时将完成校验数据更新的信息通 知写入单元60。写入单元60在接收到才交验数据更新单元40的通知后,就会 将更新数据写入所述更新数据待存储位置。
通过上述过程可以看到,在校验数据更新单元40生成新的校验数据之后, 写入单元60才真正写入新数据,这样,就实现了数据实时校验冗余保护的目 的,并且在更新校^r数据的过程中,也最多只进行了一次读取原有数据的本 地读操作、 一次读取原有校验数据的本地读操作、两次更新数据的网络传输 操作或一次更新数据的网络传输操作和一次更新数据和原有数据的异或值的 网络传输操作、以及一次新的校验数据的本地写操作。因而加快了更新校验 数据的速度,也减少了所涉及的网络存储设备的数量,提高了数据校验荣誉 装置的性能。
实施例2
数据校验冗余过程也可通过异步方式完成。结合图9A和图IO所示,在 接收单元IO接收到更新数据后,会先将更新数据发送给计算单元30。而第一 判断单元70会判断所要写入的更新数据待存储位置是否有数据,并将判断结 果发送给计算单元30和第一读取单元20。
如果所要写入的更新数据待存储位置没有数据,第一判断单元70会将没 有数据的判断结果发送给计算单元30和第一读取单元20。计算单元30在获得所述判断结果后,会将更新数据直接插入后台发送单元90的发送队列,并
唤醒后台发送单元90;而如果写入数据存储位置有数据,第一判断单元70会 将有数据的判断结果发送给计算单元30和第一读取单元20。则第一读取单元 20会从所述写入位置读取原有数据,并将所述数据发送给计算单元30。计算 单元30在接收到原有数据后,计算原有数据和更新数据的异或值,并在得到 结果后将所述异或值插入后台发送单元90的发送队列,并唤醒后台发送单元 90。
而在计算单元30将数据插入发送队列之后,写入单元60会读取接受单 元10中的更新数据,并将更新数据写入所述更新数据待存储位置。
后台发送单元40在计算单元30将数据发送过来之前处于睡眠状态,当 后台发送设备30被唤醒后,会先判断发送队列是否为空,若不为空,则会将 所接收的计算单元30发送的更新数据或原有数据和更新数据的异或值发送给 校验数据更新单元40。而在发送完之后,后台发送设备30会再次判断发送队 列是否为空,若为空,则重新进入睡眠状态。
结合图9B和图IO所示,而第二判断单元80会判断校验数据存储位置是 否有数据,并将判断结果发送给校验数据更新单元40和第二读取单元50。
如果校验数据存储位置没有数据,第二判断单元80会将没有数据的判断 结果发送给校验数据更新单元40和第二读取单元50。校验数据更新单元40 在获得所述判断结果后,就直接将所接收到的更新数据或原有数据和更新数 据的异或值作为新的校验数据;而如果校验数据存储位置有数据,第二判断 单元80会将有数据的判断结果发送给校验数据更新单元40和第二读取单元 50。则第二读取则单元50会从所述校验数据存储位置读取原有校验数据,并 将所述原有校验数据发送给校验数据更新单元40。校验数据更新单元40在获 得原有校验数据后,计算原有校验数据和更新数据或计算原有数据和更新数据的异或值与原有校验数据的异或值,并将结果作为新的校验数据。
在得到新的校验数据后,校验数据更新单元40在所述的校验数据存储位 置写入新的校验数据完成校验数据更新,同时将完成校验数据更新的信息通
知写入单元60。
通过上述过程可以看到,上述采用异步方式的校验冗余过程中,计算单 元30并不直接将更新数据或更新数据和原有数据的异或值发送给校验数据更 新单元40,而是将数据插入发送队列,并通过后台发送单元90发送。而在计 算单元30将数据插入发送队列后,写入单元60不等待校验数据更新单元40 生成新的校验数据就将更新数据写入。相对于之前的写入单元60需要等待校 验数据更新单元40生成新的校验数据后才将更新数据写入,上述的异步方式 的效率无疑更高。
综上所述,上述所公开的数据校验冗余方法及装置最多只需进行原始数 据和原始校验数据的网络读操作,再进行一次新校验数据的网络写操作就能 完成更新校验数据,因而减少了数据的读取操作步骤,操作复杂度大大降低, 从而能快速更新校验数据。
上述所公开的数据校验冗余方法及装置在更新校验数据时,由于只需上 述的两次网络读操作和1次网络写操作,因而也减少了所需的网络存储设备, 因而网络通信量也减少了,减少了对网络带宽的消耗,对提升网络存储系统 整体性能也有益。
虽然本发明己以较佳实施例披露如上,但本发明并非限定于此。任何本 领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改, 因此本发明的保护范围应当以权利要求所限定的范围为准。
权利要求
1. 一种数据校验冗余方法,包括更新校验数据的方法,其特征在于,所述更新校验数据的方法包括,获取更新数据;读取所述更新数据待存储位置的当前数据;计算当前数据和更新数据的异或值;读取校验数据存储位置的当前校验数据;计算当前数据和更新数据的异或值与当前校验数据的异或值作为新的校验数据;在所述校验数据存储位置写入新的校验数据。
2. 如权利要求1所述的数据校验冗余方法,其特征在于,还包括,在所述校 验数据存储位置写入新的校验数据后,在所述更新数据待存储位置写入更新 数据。
3. —种数据校验冗余装置,其特征在于,包括接收单元、第一读取单元、计 算单元、第二读取单元和校验数据更新单元,所述接收单元用于接收更新数据,并向计算单元发送;所述第一读取单元用于读取更新数据待存储位置的当前数据,并向计算 单元发送;所述计算单元用于根据第一读取单元发送的当前数据和接收单元发送的 更新数据,计算所述当前数据和更新数据的异或值,并向校验数据更新单元 发送;所述第二读取单元用于读取校验数据存储位置的当前校验数据,并向校 验数据更新单元发送;所述校验数据更新单元用于根据第二读取单元发送的当前校验数据和计 算单元发送的当前数据和更新数据的异或值,计算当前数据和更新数据的异 或值与当前校验数据的异或值作为新的校验数据,并在校验数据存储位置写 入新的校验数据。
4. 如权利要求3所述的数据校验冗余装置,其特征在于,还包括用于读取接 收单元中的更新数据,并将更新数据写入所述更新数据待存储位置的写入单 元。
5. 如权利要求4所述的数据校验冗余装置,其特征在于,所述写入单元在所 述校验数据更新单元写入新的校验数据后,将更新数据写入所述更新数据待 存储位置。
6. —种数据校验冗余方法,包括更新校验数据的方法,其特征在于,所述更 新校验数据的方法包括,获取更新数据;若更新数据待存储位置有数据,则读取所述更新数据待存储位置的当前 数据,计算当前数据和更新数据的异或值,若校验数据存储位置有数据,则 读取当前校验数据,并计算当前数据和更新数据的异或值与当前校验数据的 异或值作为新的校验数据,并在校验数据存储位置写入新的校验数据;若校 验数据存储位置无数据,则将当前数据和更新数据的异或值作为新的校验数 据,并在校验数据存储位置写入新的校验数据;若更新数据待存储位置无数据,则在校验数据存储位置有数据时,读取 当前校验数据,并计算当前校验数据和更新数据的异或值作为新的校验数据, 并在校验数据存储位置写入新的校验数据;在校验数据存储位置无数据时, 将所述更新数据作为新的校验数据,并在校验数据存储位置写入新的校验数 据。
7. 如权利要求6所述的数据校验冗余方法,其特征在于,还包括,在所述校 验数据存储位置写入新的校验数据后,在所述更新数据待存储位置写入更新 数据。
8. —种数据校验冗余装置,其特征在于,包括接收单元、第一判断单元、第 一读取单元、计算单元、第二判断单元、第二读取单元和校验数据更新单元,所述接收单元用于接收更新数据,并向计算单元发送;匕己、丄'^ff、1,,1M 二 HI 》,1;S 丄C it hk /丄B "7~ "/r" 丄i V 二〃i a矛一"f'j j^r千7u乂" t于'j^u/sM寸4亍t^o^且疋^r々j双4银,rn口j矛一 读取单元和计算单元发送判断结果;所述第 一读取单元用于在获得所述更新数据待存储位置有数据的判断结果后,读取所述更新数据待存储位置的当前数据,并向计算单元发送;所述计算单元用于在获得第 一读取单元发送的当前数据后,计算当前数 据和更新数据的异或值,并向校验数据更新单元发送;或在获得所述更新数 据待存储位置没有数据的判断结果后,将更新数据向校验数据更新单元发送;所述第二判断单元用于判断校验数据存储位置是否有数据,并向第二读 取单元和校验数据更新单元发送判断结果;所述第二读取单元用于在获得校验数据存储位置有校验数据的判断结果 后,读取校验数据,并向校验数据更新单元发送;所述校验数据更新单元用于在获得第二读取单元发送的校验数据和计算 单元发送的数据后,计算校验数据和计算单元发送的数据的异或值作为新的 校验数据,并在校验数据存储位置写入新的校验数据;或在获得校验数据存 储位置没有校验数据的判断结果后,将计算单元发送的数据作为新的校验数 据,并在校验数据存储位置写入新的校验数据。
9. 如权利要求8所述的数据校验冗余装置,其特征在于,还包括用于读取接收单元中的更新数据,并将更新数据写入所述更新数据待存储位置的写入单 元。
10. 如权利要求9所述的数据校验冗余装置,其特征在于,所述写入单元在所 述校验数据更新单元完成写入新的校验数据后,将更新数据写入所述更新数 据待存储位置。
11. 一种数据校验冗余方法,其特征在于,包括异步执行的数据更新步骤和校 验数据更新步骤,所述数据更新步骤包括,获取当前数据和更新数据的异或值并暂存,或获取更新数据并暂存;将更新数据写入更新数据待存储位置;所述校验数据更新步骤包括,获取更新数据或当前数据和更新数据的异或值;若校验数据存储位置有校验数据,则读取所述校验数据存储位置的当前 校验数据,计算更新数据和当前校验数据的异或值或更新数据和当前数据的 异或值与当前校验数据的异或值作为新的校验数据;若校验数据存储位置无 校验数据,则将更新数据或更新数据和当前数据的异或值作为新的校验数据;在所述校验数据存储位置写入新的校验数据。
12. —种数据校验冗余装置,其特征在于,包括接收单元、第一判断单元、第 一读取单元、计算单元、写入单元、后台发送单元、第二判断单元、第二读 取单元和校验数据更新单元,所述接收单元用于接收更新数据,并向计算单元发送;所述第一判断单元用于判断更新数据待存储位置是否有数据,并向第一 读取单元和计算单元发送判断结果;所述第一读取单元用于在获得所述更新数据待存储位置有数据的判断结果后,读取所述更新数据待存储位置的当前数据,并向计算单元发送;所述计算单元用于在获得第 一读取单元发送的当前数据后,计算当前数据和更新数据的异或值,并向后台发送单元发送;或在获得所述更新数据待 存储位置没有数据的判断结果后,将更新数据向后台发送单元发送;所述写入单元用于在计算单元向后台发送单元发送数据后,读取《^妄收单 元中的更新数据,将更新数据写入所述更新数据待存储位置;所述后台发送单元用于将计算单元发送的数据发送给校验数据更新单元的;所述第二判断单元用于判断校验数据存储位置是否有数据,并向第二读 取单元和校验数据更新单元发送判断结果;所述第二读取单元用于在获得校验数据存储位置有校验数据的判断结果 后,读取校验数据,并向校验数据更新单元发送;所述校验数据更新单元用于在获得第二读取单元发送的校验数据和后台 发送单元发送的数据后,计算校验数据和后台发送单元发送的数据的异或值 作为新的校验数据,并在校验数据存储位置写入新的校验数据;或在获得校 验数据存储位置没有校验数据的判断结果后,将后台发送单元发送的数据作 为新的校验数据,并在校-险数据存储位置写入新的校-验数据。
全文摘要
一种数据校验冗余方法,包括更新校验数据的方法获取更新数据;读取所述更新数据待存储位置的当前数据;计算当前数据和更新数据的异或值;读取校验数据存储位置的当前校验数据;计算当前数据和更新数据的异或值与当前校验数据的异或值作为新的校验数据;在所述校验数据存储位置写入新的校验数据。本发明还公开了一种数据校验冗余装置。所述数据校验冗余方法及装置能够快速更新校验数据,并且提升网络存储系统整体性能。
文档编号G06F11/10GK101452409SQ200710171719
公开日2009年6月10日 申请日期2007年12月4日 优先权日2007年12月4日
发明者朱建涛, 蒋金虎, 翔 郑, 陈左宁 申请人:无锡江南计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1