一种数据存储的方法及存储设备技术

技术编号:19023195 阅读:28 留言:0更新日期:2018-09-26 19:00
本申请公开了一种数据存储的方法及存储设备,方法包括:将N个存储单元中的每个存储单元中存储的完整性校验值进行校验运算得到第一校验值,并将第一校验值存储到除所述N个存储单元外的一个或多个存储单元。再将除所述N个存储单元外每个存储单元中存储的完整性校验值进行校验运算得到第二校验值,并将第二校验值存储到N个存储单元中的一个或多个存储单元。

【技术实现步骤摘要】
一种数据存储的方法及存储设备
本申请涉及存储
,尤其涉及一种数据存储的方法及存储设备。
技术介绍
为了提高数据安全性,现有技术中通常会应用独立磁盘冗余阵列(RedundantArraysofIndependentDisks,RAID)冗余保护技术。RAID冗余保护技术是指,将待存储数据切割成多个数据块,并对这些数据块进行冗余计算得到校验块,再将这些数据块和校验块分别存放在不同的硬盘上。这样,当硬盘阵列中任意一个硬盘发生故障导致该硬盘上的数据块损坏时,可从其他硬盘中读出其他数据块和校验块,通过执行数据重构过程修复损坏的数据块。其中,为了检查数据是否损坏,美国国家标准学会(AmericanNationalStandardsInstitute,ANSI)制定的T10标准定义了一种数据完整性检查方法:数据写入硬盘时,采用如图1所示的数据结构,即在数据末尾增加8个字节的附加部分,该附加部分在硬盘中的区域为数据完整性域(DataIntegrityField,DIF)。DIF包含一个2字节的循环冗余校验(CyclicRedundancyCheck,CRC)字段、一个2字节的逻辑块应用(LogicalBlockApplication,LBA)标签和一个4字节的逻辑块参考(LogicalBlockReference,LBR)标签。其中,CRC字段用于存储采用T10标准规定的CRC算法对数据计算得出的完整性校验值。当从硬盘上读数据时,可以通过对读出的数据进行计算得出完整性校验值,并将该完整性校验值与DIF中存储的CRC字段的完整性校验值进行比较。如果相等,则说明数据是完整的,没有损坏。如果不相等,则说明数据或者DIF区有数据损坏。因此,如图2所示,对应用了基于RAID冗余保护技术的存储设备中的数据采用T10标准定义的DIF格式进行完整性验证时,在存入数据块和RAID校验数据的同时也分别会存入数据和RAID校验数据的完整性校验值。但是,当数据丢失时,基于RAID技术,可以进行恢复,但数据对应的完整性校验值丢失却无法修复,从而无法实现对已存入数据的完整性检查。
技术实现思路
本申请实施例提供一种数据存储的方法及存储设备,能够解决当数据丢失时,基于RAID技术,可以进行恢复,但数据对应的完整性校验值却无法修复,从而无法实现对已存入数据的完整性检查。为达到上述目的,本申请的实施例采用如下技术方案:第一方面,提供一种数据存储的方法,应用于存储设备中,存储设备包含M个存储单元,每一个存储单元中存储有数据和该数据的完整性校验值,并且这M个存储单元中存储的数据之间存在校验关系,该方法具体包括:将N个存储单元中的每个存储单元中存储的完整性校验值进行校验运算得到第一校验值,并将第一校验值存储到除上述N个存储单元外的一个或多个存储单元。再将除上述N个存储单元外每个存储单元中存储的完整性校验值进行校验运算得到第二校验值,并将第二校验值存储到N个存储单元中的一个或多个存储单元。其中,M为大于等于2的整数,N为大于等于1小于M的整数。校验运算可以为RAID校验算法,也可以为纠删码(ErasureCode,EC)运算。第一校验值和第二校验值的个数可以为一个和多个。基于本申请提供的方法,通过对一部分存储单元中存储的完整性校验值进行校验运算,得到对应的校验值,并将得到的校验值存储至另一部分存储单元中;同理,对所述另一部分存储单元中的存储的完整性校验值进行校验运算,得到对应的校验值,并将得到的校验值存储至所述一部分存储单元中。相比于现有技术,本申请增加了对存储单元存储的完整性校验值进行冗余保护的过程,因此,当有存储单元损坏导致该存储单元中的数据和完整性校验值均丢失时,可通过其他存储单元中完整性校验值对应的校验值对丢失的完整性校验值进行修复,进而修复后的完整性校验值可用于检查数据是否损坏,还可以用于检查重构修复后的数据是否正确。在一种可能的设计中,存储设备的每个存储单元为RAID校验关系时,M个存储单元包括P个数据单元和M-P个校验单元,其中,P个数据单元用于存储接收的数据;所述M-P个校验单元用于存储P个数据单元的校验数据。在一种可能的设计中,每个存储单元包括第一存储区和第二存储区,该第一存储区用于存储数据,第二存储区用于存储数据对应的附加信息,该附加信息包括完整性校验值。相应的,可将第一校验值存储到第一存储单元的第二存储区,将第二校验值存储到第二存储单元的第二存储区。其中,第二存储区可以为DIF,则可将第一校验值存储到第一存储单元的DIF的LBR标签的预设字节。同理,将第二校验值存储到第二存储单元的DIF的LBR标签的预设字节。在一种可能的设计中,完整性校验值可具体为CRC,当该CRC为采用ANSIT10标准制定的算法计算得到时,该CRC位于DIF中。在一种可能的设计中,完整性校验值可以为对存储单元中存储的数据进行异或计算后得到,该完整性校验值可以位于DIF中,并存储在DIF的LBR标签的除预设字节外的其他字节。这样,由于相较于对CRC进行校验运算,采用异或计算得到的完整性校验值更简单,对其进行校验运算的计算量更小,有利于提高存储设备的性能。第二方面,提供一种存储设备,包括M个存储单元,这M个存储单元中的每一个存储单元用于存储数据以及数据的完整性校验值,且这M个存储单元中存储的数据之间存在校验关系。该存储设备还包括:运算单元,用于将N个存储单元中的每个存储单元中存储的完整性校验值进行校验运算得到第一校验值;存储执行单元,用于将运算单元运算得到的第一校验值存储到第一存储单元。其中,第一存储单元为M个存储单元中除这N个存储单元外的一个或多个存储单元;运算单元,还用于将M个存储单元中除这N个存储单元外每个存储单元中存储的完整性校验值进行校验运算得到第二校验值;存储执行单元,还用于将运算单元运算得到的第二校验值存储到第二存储单元。其中,第二存储单元为这N个存储单元中的一个或多个存储单元。其中,M为大于等于2的整数,N为大于等于1小于M的整数。在一种可能的设计中,M个存储单元包括P个数据单元和M-P个校验单元,这P个数据单元用于存储该存储设备接收的数据;这M-P个校验单元用于存储P个数据单元的校验数据。在一种可能的设计中,每个存储单元包括第一存储区和第二存储区,第一存储区用于存储数据,第二存储区用于存储数据对应的附加信息。其中,附加信息包括所述完整性校验值。在一种可能的设计中,存储执行单元具体用于将运算单元运算得到的第一校验值存储到第一存储单元的第二存储区,将所述运算单元运算得到的所述第二校验值存储到第二存储单元的第二存储区。在一种可能的设计中,所述第二存储区为DIF。存储执行单元具体用于将运算单元运算得到的第一校验值存储到第一存储单元的DIF的LBR标签的预设字节,将运算单元运算得到的第二校验值存储到第二存储单元的DIF的LBR标签的预设字节。在一种可能的设计中,完整性校验值为CRC。在一种可能的设计中,完整性校验值为对数据进行异或计算后得到。完整性校验值位于DIF的LBR的除预设字节外的其他字节。第三方面,提供一种存储设备,包括处理器和M个存储单元,M个存储单元中的每一个存储单元用于存储数据以及数据的完整性校验值,且所述M个存储单元中存储的数据本文档来自技高网
...

【技术保护点】
1.一种数据存储方法,其特征在于,应用于存储设备中,所述存储设备包括M个存储单元;其中,所述M个存储单元中的每一个存储单元存储有数据及所述数据的完整性校验值;且所述M个存储单元中存储的数据之间存在校验关系;所述方法包括:将N个存储单元中的每个存储单元中存储的完整性校验值进行校验运算得到第一校验值;将所述第一校验值存储到第一存储单元;所述第一存储单元为所述M个存储单元中除所述N个存储单元外的一个或多个存储单元;将所述M个存储单元中除所述N个存储单元外每个存储单元中存储的完整性校验值进行校验运算得到第二校验值;将所述第二校验值存储到第二存储单元;所述第二存储单元为所述N个存储单元中的一个或多个存储单元;其中,M为大于等于2的整数,N为大于等于1小于M的整数。

【技术特征摘要】
1.一种数据存储方法,其特征在于,应用于存储设备中,所述存储设备包括M个存储单元;其中,所述M个存储单元中的每一个存储单元存储有数据及所述数据的完整性校验值;且所述M个存储单元中存储的数据之间存在校验关系;所述方法包括:将N个存储单元中的每个存储单元中存储的完整性校验值进行校验运算得到第一校验值;将所述第一校验值存储到第一存储单元;所述第一存储单元为所述M个存储单元中除所述N个存储单元外的一个或多个存储单元;将所述M个存储单元中除所述N个存储单元外每个存储单元中存储的完整性校验值进行校验运算得到第二校验值;将所述第二校验值存储到第二存储单元;所述第二存储单元为所述N个存储单元中的一个或多个存储单元;其中,M为大于等于2的整数,N为大于等于1小于M的整数。2.根据权利要求1所述的方法,其特征在于,所述M个存储单元包括P个数据单元和M-P个校验单元,所述P个数据单元用于存储所述存储设备接收的数据;所述M-P个校验单元用于存储所述P个数据单元的校验数据。3.根据权利要求1或2所述的方法,其特征在于,每个存储单元包括第一存储区和第二存储区,所述第一存储区用于存储数据,所述第二存储区用于存储所述数据对应的附加信息,所述附加信息包括所述完整性校验值。4.根据权利要求3所述的方法,其特征在于,所述将所述第一校验值存储到第一存储单元包括:将所述第一校验值存储到所述第一存储单元的第二存储区;所述将所述第二校验值存储到第二存储单元包括:将所述第二校验值存储到所述第二存储单元的第二存储区。5.根据权利要求4所述的方法,其特征在于,所述第二存储区为数据完整性域。6.根据权利要求5所述的方法,其特征在于,所述将第一校验值存储到所述第一存储单元的第二存储区,具体包括:将所述第一校验值存储到所述第一存储单元的数据完整性域的逻辑块参考标签的预设字节;所述将第二校验值存储到所述第二存储单元的第二存储区,具体包括:将所述第二校验值存储到所述第二存储单元的数据完整性域的逻辑块参考标签的预设字节。7.根据权利要求1所述的方法,其特征在于,所述完整性校验值为循环冗余校验值。8.根据权利要求5所述的方法,其特征在于,所述完整性校验值为对所述数据进行异或计算后得到。9.根据权利要求8所述的方法,其特征在于,所述完整性校验值位于所述数据完整性域的逻辑块参考标签的除预设字节外的其他字节。10.一种存储设备,其特征在于,所述存储设备包括M个存储单元,所述M个存储单元中的每一个存储单元用于存储数据以及数据的完整性校验值,且所述M个存储单元中存储的数据之间存在校验关系;所述存储设备还包括:运算单元,用于将N个存储单元中的每个存储单元中存储的完整性校验值进行校验运算得到第一校验值;存储执行单元,用于将所述运算单元运算得到的所述第一校验值存储到第一存储单元;所述第一存储单元为所述M个存储单元中除所述N个存储单元外的一个或多个存储单元;所述运算单元,还用于将所述M个存储单元中除所述N个存储单元外每个存储单元中存储的完整性校验值进行校验运算得到第二校验值;所述存储执行单元,还用于将所述运算单元运算得到的所述第二校验值存储到第二存储单元;所述第二存储单元为所述N个存储单元中的一个或多个存储单元;其中,M为大于等于2的整数,N为大于等于1小于M的整数。11.根据权利要求10所述的存储设备,其特征在于,所述M个存储单元包括P个数据单元和M-P个校验单元,所述P个数据单元用于存储所述存储设备接收的数据;所述M-P个校验单元用于存储所述P个数据单元的校验数据。12.根据权利要求10或11所述的存储设...

【专利技术属性】
技术研发人员:饶蓉魏明昌
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1