CN108572882A - 一种数据存储的方法及存储设备 - Google Patents

一种数据存储的方法及存储设备 Download PDF

Info

Publication number
CN108572882A
CN108572882A CN201710142980.2A CN201710142980A CN108572882A CN 108572882 A CN108572882 A CN 108572882A CN 201710142980 A CN201710142980 A CN 201710142980A CN 108572882 A CN108572882 A CN 108572882A
Authority
CN
China
Prior art keywords
storage unit
storage
check value
data
memory block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201710142980.2A
Other languages
English (en)
Other versions
CN108572882B (zh
Inventor
饶蓉
魏明昌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201710142980.2A priority Critical patent/CN108572882B/zh
Publication of CN108572882A publication Critical patent/CN108572882A/zh
Application granted granted Critical
Publication of CN108572882B publication Critical patent/CN108572882B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1088Reconstruction on already foreseen single or plurality of spare disks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum

Abstract

本申请公开了一种数据存储的方法及存储设备,方法包括:将N个存储单元中的每个存储单元中存储的完整性校验值进行校验运算得到第一校验值,并将第一校验值存储到除所述N个存储单元外的一个或多个存储单元。再将除所述N个存储单元外每个存储单元中存储的完整性校验值进行校验运算得到第二校验值,并将第二校验值存储到N个存储单元中的一个或多个存储单元。

Description

一种数据存储的方法及存储设备
技术领域
本申请涉及存储技术领域,尤其涉及一种数据存储的方法及存储设备。
背景技术
为了提高数据安全性,现有技术中通常会应用独立磁盘冗余阵列(RedundantArrays of Independent Disks,RAID)冗余保护技术。RAID冗余保护技术是指,将待存储数据切割成多个数据块,并对这些数据块进行冗余计算得到校验块,再将这些数据块和校验块分别存放在不同的硬盘上。这样,当硬盘阵列中任意一个硬盘发生故障导致该硬盘上的数据块损坏时,可从其他硬盘中读出其他数据块和校验块,通过执行数据重构过程修复损坏的数据块。
其中,为了检查数据是否损坏,美国国家标准学会(American NationalStandards Institute,ANSI)制定的T10标准定义了一种数据完整性检查方法:数据写入硬盘时,采用如图1所示的数据结构,即在数据末尾增加8个字节的附加部分,该附加部分在硬盘中的区域为数据完整性域(Data Integrity Field,DIF)。DIF包含一个2字节的循环冗余校验(Cyclic Redundancy Check,CRC)字段、一个2字节的逻辑块应用(Logical BlockApplication,LBA)标签和一个4字节的逻辑块参考(Logical Block Reference,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校验算法,也可以为纠删码(Erasure Code,EC)运算。第一校验值和第二校验值的个数可以为一个和多个。
基于本申请提供的方法,通过对一部分存储单元中存储的完整性校验值进行校验运算,得到对应的校验值,并将得到的校验值存储至另一部分存储单元中;同理,对所述另一部分存储单元中的存储的完整性校验值进行校验运算,得到对应的校验值,并将得到的校验值存储至所述一部分存储单元中。相比于现有技术,本申请增加了对存储单元存储的完整性校验值进行冗余保护的过程,因此,当有存储单元损坏导致该存储单元中的数据和完整性校验值均丢失时,可通过其他存储单元中完整性校验值对应的校验值对丢失的完整性校验值进行修复,进而修复后的完整性校验值可用于检查数据是否损坏,还可以用于检查重构修复后的数据是否正确。
在一种可能的设计中,存储设备的每个存储单元为RAID校验关系时,M个存储单元包括P个数据单元和M-P个校验单元,其中,P个数据单元用于存储接收的数据;所述M-P个校验单元用于存储P个数据单元的校验数据。
在一种可能的设计中,每个存储单元包括第一存储区和第二存储区,该第一存储区用于存储数据,第二存储区用于存储数据对应的附加信息,该附加信息包括完整性校验值。相应的,可将第一校验值存储到第一存储单元的第二存储区,将第二校验值存储到第二存储单元的第二存储区。
其中,第二存储区可以为DIF,则可将第一校验值存储到第一存储单元的DIF的LBR标签的预设字节。同理,将第二校验值存储到第二存储单元的DIF的LBR标签的预设字节。
在一种可能的设计中,完整性校验值可具体为CRC,当该CRC为采用ANSI T10标准制定的算法计算得到时,该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个存储单元中存储的数据之间存在校验关系。
该处理器,用于将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标签的除所述预设字节外的其他字节。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述方面所述的方法。
另一种实现方式,存储设备将N个存储单元中的每个存储单元中存储的完整性校验值进行校验运算得到第一校验值;将所述第一校验值存储到第一存储单元,将所述M个存储单元中除所述N个存储单元外的L个存储单元的每个存储单元中存储的完整性校验值进行校验运算得到第三校验值;将所述第三校验值存储到第三存储单元。其中,所述N个存储单元为M个存储单元中的任意N个存储单元,N的取值为大于等于1且小于M的整数。L的取值大于等于1并且小于M,并且N+L不大于M。其中,第一存储单元为所述M个存储单元中除所述N个存储单元外的一个或多个存储单元,所述第三存储单元为所述M个存储单元中除所述L个存储单元外的一个或多个存储单元。
另一种实现方式,存储设备除M个存储单元外,还包括R个存储单元,存储设备将所述M个存储单元中的每个存储单元中存储的完整性校验值进行校验运算得到第四校验值,将所述第四校验值存储到第四存储单元。R为大于等于1的整数。其中,所述第四存储单元为所述R个存储单元中的一个或多个。具体实现可参见前面实施例描述。
上述存储设备可以为存储阵列,硬盘等。
附图说明
图1为现有技术提供的一种ANSI T10标准定义的数据结构示意图;
图2为现有技术提供的一种采用RAID技术存储的数据结构示意图;
图3为本申请实施例提供的一种存储阵列的结构示意图;
图4为本申请实施例提供的一种数据存储的方法的流程示意图;
图5为本申请实施例提供的另一种数据存储的方法的流程示意图;
图6为本申请实施例提供的一种存储设备的结构示意图;
图7为本申请实施例提供的另一种存储设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述。
本申请实施例提供一种存储数据的方法,可应用于存储设备。如图3所示,该存储设备包括M个存储单元。该M个存储单元中的每一个存储单元存储有数据及该数据的完整性校验值,并且,这M个存储单元中存储的数据之间存在校验关系。
其中,本申请所指的存储设备,例如可以为多个盘组成的存储阵列,则每一个盘为该存储阵列中的一个存储单元,存储单元可以为硬盘,如机械硬盘、固态硬盘等。存储阵列会将待写入的数据切分成多个更小粒度的数据,并对这些更小粒度的数据进行冗余校验计算,得到校验数据;再将这些更小粒度的数据(以下称为“数据”)和校验数据分别存储在不同的存储设备中。具体的,当采用RAID 6的方式对数据进行冗余检验计算时,可以将这些数据存储到存储设备1至存储设备M-2中,将校验数据存储到存储设备M-1和存储设备M中。当采用RAID 5的方式对数据进行冗余检验计算时,可以将这些数据存储到存储设备1至存储设备M-1中,将校验数据存储到存储设备M中。在该存储阵列中采用的冗余校验算法可以为RAID运算或纠删码(Erasure Code,EC)运算。RIAD运算包括RAID5、RAID6等算法。RAID运算和EC运算的具体实现可参考现有技术,本申请不再赘述。
在该存储阵列中存储的完整性校验值可以为ANSI制定的T10标准中采用CRC算法得到的校验值,具体实现可参考现有技术,本申请不再赘述。
在存储单元中存储数据的完整性校验值,是为了对存储的数据进行完整性检查,具体的,当从存储单元中读出该数据时,可先计算读出的数据完整性校验值,并与存储单元中存储的完整性校验值进行比较。当二者相同时,则读出的数据没有损坏。当二者不同时,则说明读出的数据或者存储的完整性校验值已损坏。
由于在现有技术中,对存储的数据进行了冗余校验保护,却没有对完整性校验值进行冗余校验保护,因此,当完整性校验值丢失,无法对完整性校验值进行重构修复,从而无法对重构修复的数据进行完整性校验,进而可能会造成重构修复的数据错误地重写入存储单元中。
为了对完整性校验值进行冗余保护,本申请实施例提供的一种数据存储方法,可应用于存储设备中,存储设备包含M个存储单元。例如,存储设备可以为如图3所示的存储阵列。如图4所示,该方法具体包括:
101、将N个存储单元中的每个存储单元中存储的完整性校验值进行校验运算得到第一校验值;将所述第一校验值存储到第一存储单元。
其中,所述N个存储单元为M个存储单元中的任意N个存储单元,N的取值为大于等于1且小于M的整数。
所述校验运算可采用RAID运算或EC运算。采用不同的校验算法得到的第一校验值的个数不同,因此,用于存储第一校验值的第一存储单元可能为所述M个存储单元中除所述N个存储单元外的一个或多个存储单元。
示例性的,当校验运算为RAID5运算时,所述第一存储单元为除所述N个存储单元外的1个存储单元。当校验运算为RAID6运算时,所述第一存储单元为除所述N个存储单元外的2个存储单元。当校验运算为EC运算时,所述第一存储单元为除所述N个存储单元外的多个存储单元。
图4中分别以101a和101b示出了步骤101中的各个过程。
102、将所述M个存储单元中除所述N个存储单元外每个存储单元中存储的完整性校验值进行校验运算得到第二校验值;将所述第二校验值存储到第二存储单元。
其中,本步骤中所指的校验运算可以为RAID运算或EC运算。具体实现时,该校验运算可以和步骤101中的校验运算相同,也可以和步骤101中的校验运算不同。采用不同的校验算法得到的第二校验值的个数不同,因此,用于存储第二校验值的第二存储单元可能为所述N个存储单元中的一个或多个存储单元。
图4中分别以102a和102b示出了步骤102中的各个过程。
需要说明的是,在执行本申请实施例所述的数据存储方法时,可以先执行步骤101再执行步骤102,也可以先执行步骤102,再执行步骤101,还可以同时执行步骤101和步骤102。本申请实施例不限定步骤101和步骤102的执行顺序。
本申请实施例提供的数据存储方法,通过对一部分存储单元中存储的完整性校验值进行校验运算,得到对应的校验值,并将得到的校验值存储至其余存储单元中;同理,对所述其余存储单元中的存储的完整性校验值进行校验运算,得到对应的校验值,并将得到的校验值存储至所述一部分存储单元中。相比于现有技术,本申请增加了对存储单元存储的完整性校验值进行冗余保护的过程,因此,当有存储单元损坏导致该存储单元中的数据和完整性校验值均丢失时,可通过其他存储单元中的校验值对丢失的完整性校验值进行修复,进而修复后的完整性校验值可用于检查数据是否损坏,并在检查到数据损坏时进行数据重构以恢复数据。
可选的,在重构或修复损坏的数据后,该完整性校验值还能够验证修复后的数据是否有误,在验证修复后的数据无误的情况下,保证将正确的数据重写入存储单元中。
在本申请实施例的一种应用场景中,M个存储单元中的数据采用的校验关系可以为RAID校验关系。则相应的,M个存储单元中包含P个数据单元和M-P个校验单元。其中,M-P个校验单元用于存储P个数据单元的校验数据。P的取值为大于1小于等于M的整数。
结合该应用场景,在一种可能的实现方式中,在对完整性校验值进行RAID校验运算时,可以采用与对数据进行校验计算时相同的校验算法。则本申请提供的数据存储的方法具体可为:将M个存储单元中的P个存储单元中的完整性校验值进行RAID校验计算,得到第一校验值,并将得到的第一校验值存入其余M-P个存储单元中;同理,将其余M-P个存储单元中的完整性校验值进行RAID校验计算,得到第二校验值,并将得到的第二校验值存入P个存储单元中。
示例性的,存储阵列中包含5个存储单元,其中包含3个数据单元和2个校验单元,该3个数据单元和2个校验单元之间为RAID6的校验方式。则当第一校验值和第二校验值的计算方法相同时,本申请提供的数据存储方法具体为:首先,从5个存储单元中任选3个存储单元,将这3个存储单元中存储的完整性校验值进行RAID6校验计算后,得到2个第一校验值,将这2个第一校验值存储至剩余2个存储单元,其中,每个存储单元存储一个第一校验值。同理,将所述剩余2个存储单元中存储的完整性校验值进行RAID6校验运算,运算得到2个第二校验值。将这2个第二校验值分别存储到所述3个存储单元中的任意2个存储单元中。
可选的,第一校验值和第二校验值的计算方法可以不同,则本申请提供的数据存储方法具体还可以为:首先,从5个存储单元中任选3个存储单元,将这3个存储单元中存储的完整性校验值进行RAID6校验计算后,得到2个第一校验值,将这2个第一校验值存储至剩余2个存储单元,其中,每个存储单元存储一个第一校验值。同理,将所述剩余2个存储单元中存储的完整性校验值进行RAID5校验运算,运算得到1个第二校验值。将这1个第二校验值存储到所述3个存储单元中的任意1个存储单元中。
可选的,在存储阵列中包含5个存储单元,其中包含4个数据单元和1个校验单元,该4个数据单元和1个校验单元之间为RAID5的校验方式的场景下,本申请实施例提供的数据存储方法具体还可以为:首先,从5个存储单元中任选4个存储单元,将这4个存储单元中存储的完整性校验值进行RAID5校验计算后,得到1个第一校验值并存储到剩余1个存储单元中;同时,再从这5个存储单元中选取4个存储单元(包含上述剩余的1个存储单元)中存储的完整性校验值进行RAID5校验计算,得到1个第二校验值,并将该1个第二校验值存储到上述4个存储单元中。
可以理解的是,也可以仅对上述剩余的1个存储单元中存储的完整性校验值采用其他冗余校验算法进行计算得到第二校验值,并将得到的第二校验值存储到上述4个存储单元中。
可选的,本申请实施例中的每个存储单元包括第一存储区和第二存储区,且第一存储区用于存储数据,第二存储区用于存储数据对应的附加信息,该附加信息包括所述完整性校验值。例如:该第二存储区为DIF,则在本申请实施例的一种实现方式中,存储单元中的完整性校验值可以采用ANSI制定的T10标准定义的CRC校验值。相应的,第一校验值存储在第一存储单元;同理,第二校验值可存储在第二存储单元的DIF区内。具体的,可存储在DIF区内的LBR标签内的任两个字节。
为了减少运算量,本申请实施例中所指的完整性校验值还可以采用自定义算法计算得到,则在步骤101之前,本申请实施例提供的方法,如图5所示,具体包括:
201、对存储阵列中每一个存储单元内的数据采用自定义算法计算完整性校验值,并存储在DIF区。
具体的,自定义的算法通常选择较为简单的算法,例如:异或(Exclusive OR,XOR)算法,该自定义的完整性校验值可存储在DIF区内。可选的,具体可存储在LBR标签内除用于存储第一校验值和第二校验值的2个字节的另外2个字节内。
图5中分别以201a和201b示出了步骤201中的各个过程。
在本步骤之后,执行步骤101和102中对完整性校验值进行校验运算时,可以直接对自定义的完整性校验值进行校验运算,得到第一校验值和第二校验值,并分别存储在第一存储单元和第二存储单元中。这样,当有存储单元中有数据或者自定义的完整性校验值损坏时,可通过第一校验值或第二校验值对丢失的自定义的完整性校验值进行重构修复,采用修复后的自定义的完整性校验值对重构后的数据进行完整性检查,确保重构后的数据正确的重写入存储阵列中。
由于自定义的完整性校验值的算法简单,从而能够减少存储阵列的校验运算量,也降低了对自定义的完整性校验值进行重构修复的运算量,进而减轻存储阵列的数据处理量,有利于提高存储阵列的性能。
另一种实现方式,将N个存储单元中的每个存储单元中存储的完整性校验值进行校验运算得到第一校验值;将所述第一校验值存储到第一存储单元,将所述M个存储单元中除所述N个存储单元外的L个存储单元的每个存储单元中存储的完整性校验值进行校验运算得到第三校验值;将所述第三校验值存储到第三存储单元。其中,所述N个存储单元为M个存储单元中的任意N个存储单元,N的取值为大于等于1且小于M的整数。L的取值大于等于1并且小于M,并且N+L不大于M。其中,第一存储单元为所述M个存储单元中除所述N个存储单元外的一个或多个存储单元,所述第三存储单元为所述M个存储单元中除所述L个存储单元外的一个或多个存储单元。具体实现可参见前面实施例描述。
另一种实现方式,存储设备除M个存储单元外,还包括R个存储单元,存储设备将所述M个存储单元中的每个存储单元中存储的完整性校验值进行校验运算得到第四校验值,将所述第四校验值存储到第四存储单元。R的为大于等于1的整数。其中,所述第四存储单元为所述R个存储单元中的一个或多个。具体实现可参见前面实施例描述。
在采用对应各个功能划分各个功能模块的情况下,图6示出了上述实施例中所涉及的存储设备一种可能的结构示意图,存储设备60包括M个存储单元601,M个存储单元601中的每一个存储单元用于存储数据以及数据的完整性校验值。存储设备60还包括运算单元602和存储执行单元603。其中,运算单元602用于支持存储设备执行图4中的过程101a和102a,图5中的过程201a。存储执行单元603用于支持存储设备执行图4中的过程101b和102b,图5中的过程201b。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应上述单元的实现,在此不再赘述。具体实现中,上述单元可以为软件实现,也可以为硬件实现,还可以为两者的结合,本发明实施例对此不作限定。存储设备60各单元用于支持存储设备实施本发明各实施例中的步骤是指存储设备60各单元用于或被配置于执行本发明各实施例中的步骤。
图7示出了存储设备的另一种可能的结构示意图。存储设备70包括处理器701和存储单元702,其中,处理器701可以是中央处理器(Central Processing Unit,CPU)与存储器的组合,还可以是通用处理器,数字信号处理器(Digital Signal Processor,DSP),专用集成电路(Application-Specific Integrated Circuit,ASIC),现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者上述任意合适的组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。当存储设备70为存储阵列时,存储单元702可以为硬盘。当存储设备70为硬盘时,存储单元702可以为组件硬盘的存储组件。存储设备70还可以为其他存储形态的设备,本发明实施例对此不作限定。处理器701用于执行上述实施例所描述的方法或步骤,以实现数据存储。
结合本申请公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(Random Access Memory,RAM)、闪存、只读存储器(ReadOnly Memory,ROM)、可擦除可编程只读存储器(Erasable Programmable ROM,EPROM)、电可擦可编程只读存储器(Electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、只读光盘(CD-ROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。

Claims (25)

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所述的存储设备,其特征在于,每个存储单元包括第一存储区和第二存储区,所述第一存储区用于存储数据,所述第二存储区用于存储所述数据对应的附加信息,所述附加信息包括所述完整性校验值。
13.根据权利要求12所述的存储设备,其特征在于,所述存储执行单元具体用于将所述运算单元运算得到的所述第一校验值存储到所述第一存储单元的所述第二存储区,将所述运算单元运算得到的所述第二校验值存储到所述第二存储单元的所述第二存储区。
14.根据权利要求13所述的存储设备,其特征在于,所述第二存储区为数据完整性域。
15.根据权利要求14所述的存储设备,其特征在于,所述存储执行单元具体用于将所述运算单元运算得到的第一校验值存储到所述第一存储单元的数据完整性域的逻辑块参考标签的预设字节;将所述运算单元运算得到的所述第二校验值存储到所述第二存储单元的数据完整性域的逻辑块参考标签的预设字节。
16.根据权利要求10所述的存储设备,其特征在于,所述完整性校验值为循环冗余校验值。
17.根据权利要求15所述的存储设备,其特征在于,所述完整性校验值为对所述数据进行异或计算后得到。
18.根据权利要求17所述的存储设备,其特征在于,所述完整性校验值位于所述数据完整性域的逻辑块参考标签的除所述预设字节外的其他字节。
19.一种存储设备,其特征在于,所述存储设备包括处理器和M个存储单元,所述M个存储单元中的每一个存储单元用于存储数据以及数据的完整性校验值,且所述M个存储单元中存储的数据之间存在校验关系;
所述处理器,用于将N个存储单元中的每个存储单元中存储的完整性校验值进行校验运算得到第一校验值;将所述第一校验值存储到第一存储单元;所述第一存储单元为所述M个存储单元中除所述N个存储单元外的一个或多个存储单元;
将所述M个存储单元中除所述N个存储单元外每个存储单元中存储的完整性校验值进行校验运算得到第二校验值;将所述第二校验值存储到第二存储单元;所述第二存储单元为所述N个存储单元中的一个或多个存储单元;
其中,M为大于等于2的整数,N为大于等于1小于M的整数。
20.根据权利要求19所述的存储设备,其特征在于,所述M个存储单元包括P个数据单元和M-P个校验单元,所述P个数据单元用于存储所述存储设备接收的数据;所述M-P个校验单元用于存储所述P个数据单元的校验数据。
21.根据权利要求19或20所述的存储设备,其特征在于,每个存储单元包括第一存储区和第二存储区,所述第一存储区用于存储数据,所述第二存储区用于存储所述数据对应的附加信息,所述附加信息包括所述完整性校验值。
22.根据权利要求21所述的存储设备,其特征在于,所述处理器将所述第一校验值存储到第一存储单元包括:
所述处理器将所述第一校验值存储到所述第一存储单元的第二存储区;
所述处理器将所述第二校验值存储到第二存储单元包括:
所述处理器将所述第二校验值存储到所述第二存储单元的第二存储区。
23.根据权利要求22所述的存储设备,其特征在于,所述第二存储区为数据完整性域。
24.根据权利要求23所述的存储设备,其特征在于,所述处理器将第一校验值存储到所述第一存储单元的第二存储区,具体包括:
所述处理器将所述第一校验值存储到所述第一存储单元的数据完整性域的逻辑块参考标签的预设字节;
所述处理器将第二校验值存储到所述第二存储单元的第二存储区,具体包括:
所述处理器将所述第二校验值存储到所述第二存储单元的数据完整性域的逻辑块参考标签的预设字节。
25.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述1至9任一项所述的方法。
CN201710142980.2A 2017-03-10 2017-03-10 一种数据存储的方法及存储设备 Active CN108572882B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710142980.2A CN108572882B (zh) 2017-03-10 2017-03-10 一种数据存储的方法及存储设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710142980.2A CN108572882B (zh) 2017-03-10 2017-03-10 一种数据存储的方法及存储设备

Publications (2)

Publication Number Publication Date
CN108572882A true CN108572882A (zh) 2018-09-25
CN108572882B CN108572882B (zh) 2020-07-14

Family

ID=63577915

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710142980.2A Active CN108572882B (zh) 2017-03-10 2017-03-10 一种数据存储的方法及存储设备

Country Status (1)

Country Link
CN (1) CN108572882B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111161448A (zh) * 2018-11-07 2020-05-15 北京燧昀科技有限公司 数据存储方法、数据校验方法、装置、设备及存储介质
CN117193672A (zh) * 2023-11-07 2023-12-08 苏州元脑智能科技有限公司 存储设备的数据处理方法及装置、存储介质及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1016967A2 (en) * 1998-12-31 2000-07-05 Lsi Logic Corporation Multiple drive failure tolerant RAID method and apparatus
DE10316951A1 (de) * 2003-04-12 2004-10-21 Daimlerchrysler Ag Verfahren zur Überprüfung der Datenintegrität von Software in Steuergeräten
EP0967552A3 (en) * 1998-06-23 2006-08-23 Hewlett-Packard Company, A Delaware Corporation Disk array controller to provide coherent memory map across hot-plug interface
CN1825269A (zh) * 2005-02-24 2006-08-30 日本电气株式会社 盘阵列设备和数据备份方法
CN101923441A (zh) * 2009-06-17 2010-12-22 成都市华为赛门铁克科技有限公司 混合磁盘冗余阵列的写请求处理方法、控制器和存储系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0967552A3 (en) * 1998-06-23 2006-08-23 Hewlett-Packard Company, A Delaware Corporation Disk array controller to provide coherent memory map across hot-plug interface
EP1016967A2 (en) * 1998-12-31 2000-07-05 Lsi Logic Corporation Multiple drive failure tolerant RAID method and apparatus
DE10316951A1 (de) * 2003-04-12 2004-10-21 Daimlerchrysler Ag Verfahren zur Überprüfung der Datenintegrität von Software in Steuergeräten
CN1825269A (zh) * 2005-02-24 2006-08-30 日本电气株式会社 盘阵列设备和数据备份方法
CN101923441A (zh) * 2009-06-17 2010-12-22 成都市华为赛门铁克科技有限公司 混合磁盘冗余阵列的写请求处理方法、控制器和存储系统

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111161448A (zh) * 2018-11-07 2020-05-15 北京燧昀科技有限公司 数据存储方法、数据校验方法、装置、设备及存储介质
CN117193672A (zh) * 2023-11-07 2023-12-08 苏州元脑智能科技有限公司 存储设备的数据处理方法及装置、存储介质及电子设备
CN117193672B (zh) * 2023-11-07 2024-02-09 苏州元脑智能科技有限公司 存储设备的数据处理方法及装置、存储介质及电子设备

Also Published As

Publication number Publication date
CN108572882B (zh) 2020-07-14

Similar Documents

Publication Publication Date Title
US5826001A (en) Reconstructing data blocks in a raid array data storage system having storage device metadata and raid set metadata
CN108733314B (zh) 用于独立冗余阵列(raid)重建的方法、设备和计算机可读存储介质
US6161192A (en) Raid array data storage system with storage device consistency bits and raidset consistency bits
US8171379B2 (en) Methods, systems and media for data recovery using global parity for multiple independent RAID levels
CN106201338B (zh) 数据存储方法及装置
US8751859B2 (en) Monitoring lost data in a storage system
CN103699494B (zh) 一种数据存储方法、数据存储设备和分布式存储系统
US9652408B2 (en) System and method for providing data integrity
EP1828899B1 (en) Method and system for syndrome generation and data recovery
CN107807792A (zh) 一种基于副本存储系统的数据处理方法及相关装置
CN109308238A (zh) 一种存储系统磁盘阵列坏盘调节的方法、装置及设备
CN104765693A (zh) 一种用于存储数据的方法、装置和系统
CN105468479B (zh) 一种磁盘阵列raid坏块处理方法及装置
CN102165407B (zh) 与独立磁盘冗余阵列相关的操作
EP0768604A2 (en) Promoting device level error to RAIDset level error to restore redundancy in a RAID array data storage system
CN106557143A (zh) 用于数据存储设备的装置和方法
CN107391307A (zh) 存储区域网络存储设备快照功能的测试方法及装置
US20070174670A1 (en) Unique response for puncture drive media error
CN108141229A (zh) 损坏数据的高效检测
CN108572882A (zh) 一种数据存储的方法及存储设备
CN103176859A (zh) 一种flash数据备份/恢复方法、设备及信号源
JP4469822B2 (ja) ディスクアレイ装置およびディスクアレイ装置のデータ管理方法
GB2343265A (en) Data storage array rebuild
Rozier et al. A framework for efficient evaluation of the fault tolerance of deduplicated storage systems
CN114442953B (zh) 一种数据校验的方法、系统、芯片和电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant