一种基于水平编码的双盘循环校验方法与流程

文档序号:22544898发布日期:2020-10-17 02:12阅读:来源:国知局

技术特征:

1.一种基于水平编码的双盘循环校验方法,其特征在于该方法包括以下步骤:

(1)水平编码的布局由n个磁盘组成,其中包括n-2个数据盘和2个校验盘;n>2;将每个数据盘划分成m个大小相等的数据块;每个校验盘划分成m个与数据块相同大小的校验块;对所有磁盘进行条带化,位于同一行的数据块和校验块构成一个条带,共形成m个条带;数据盘之间并行工作,条带之间顺序工作;m≥1;

(2)在基于该布局的存储系统中构建一个映射表,映射表中相应的值表示相同偏移的条带中校验值所在位置;对映射表中的所有标记设置相同的初始值,该初始值代表当前校验值存放在第二个校验盘中;

在写请求到来时,按照数据块的大小将写请求数据分割为若干份,以条带为单位进行数据写操作,生成校验值并存入相应的校验盘;每存入一次新校验值后,都要对映射表中当前条带对应的标记取反,更新标记;直到写满所有条带;

(3)所有条带写满后,对所有最终校验值进行归并。

2.根据权利要求1所述的基于水平编码的双盘循环校验方法,其特征在于步骤2)具体是:在基于该布局的存储系统中构建一个映射表,映射表中相应的值表示相同偏移的条带中校验值所在位置;对映射表中的所有标记设置相同的初始值,初始值设置为0或1,该初始值代表当前校验值存放在第二个校验盘中;

第一次写请求到来,按照数据块的大小将写请求数据分割为若干份,将分割后的写请求数据从第一个条带的第一个数据块开始并行写入,新写入的数据与存储系统的初始值进行异或生成校验值,并存到第一个校验盘中,并对映射表中当前条带对应的标记取反;

第二次写请求到来,判断当前条带是否写满;若未写满,按照数据块的大小将写请求数据分割为若干份,将分割后的写请求数据写入与上一个写请求数据相邻的空闲数据块中,新写入的数据和第一个校验盘中已经存入的校验值相互异或生成新的校验值,并存到第二个校验盘中,并对映射表中当前条带对应的标记取反;若已写满,则从下一个条带的第一个数据块开始写入,新写入的数据与存储系统的初始值进行异或生成该条带的校验值,并存到第一个校验盘中,并对映射表中当前条带对应的标记取反;

第三次写请求到来,判断当前条带是否写满;若未写满,按照数据块的大小将写请求数据分割为若干份,将分割后的写请求数据写入与上一个写请求数据相邻的空闲数据块中,新写入的数据和第二个校验盘中已经存入的校验值相互异或生成新的校验值,并将第一次写请求时第一个校验盘中的校验值替换成新的校验值,同时对映射表中当前条带对应的标记取反;若已写满,则从下一个条带的第一个数据块开始写入,新写入的数据与存储系统的初始值进行异或生成该条带的校验值,并存到第一个校验盘中,同时对映射表中当前条带对应的标记取反;

重复上述步骤,直到写满所有条带。

3.根据权利要求1所述的基于水平编码的双盘循环校验方法,其特征在于步骤3)具体是:根据映射表更新的标记,确定每个条带的最终校验值的存储位置;最后,将所有条带的全部最终校验值归并到同一个校验盘中,再移除另一个校验盘。

4.根据权利要求1所述的基于水平编码的双盘循环校验方法,其特征在于步骤3)中,对所有的映射表标记进行求和,若求和结果大于标记个数m的1/2,则将最终校验值归并到第二个校验盘中,否则归并到第一个校验盘中。

5.根据权利要求1所述的基于水平编码的双盘循环校验方法,其特征在于当出现磁盘损坏时,损坏磁盘中原有的数据丢失,此时需要用新磁盘替换损坏磁盘并进行数据恢复,数据恢复的具体方法是:读取未损坏数据盘的数据中和未损坏校验盘的校验值,相同条带中的数据和校验值相互异或得到的结果为恢复数据,并将恢复数据存储到替换的新磁盘中。


技术总结
本发明公开了一种基于水平编码的双盘循环校验方法,该方法是水平编码的布局由N个磁盘组成,有N‑2个数据盘和2个校验盘;对所有磁盘进行条带化,位于同一行的数据块和校验块构成一个条带,共形成m个条带。在存储系统中构建一个映射表,映射表中相应的值表示相同偏移的条带中校验值所在位置;对映射表中的所有标记设置相同的初始值,该初始值代表当前校验值存放在第二个校验盘中;在写请求到来时,按照数据块的大小将写请求数据分割为若干份,以条带为单位进行数据写操作,生成校验值并存入相应的校验盘;每存入一次新校验值后,都要对映射表中当前条带对应的标记取反,更新标记;所有条带写满后,对所有最终校验值进行归并。

技术研发人员:刘靖宇;朱希康;杨光;李浩鹏;李萧言;牛秋霞;武优西
受保护的技术使用者:河北工业大学
技术研发日:2020.07.09
技术公布日:2020.10.16
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1