CN105528183A - 一种存储数据的方法及存储设备 - Google Patents
一种存储数据的方法及存储设备 Download PDFInfo
- Publication number
- CN105528183A CN105528183A CN201610053075.5A CN201610053075A CN105528183A CN 105528183 A CN105528183 A CN 105528183A CN 201610053075 A CN201610053075 A CN 201610053075A CN 105528183 A CN105528183 A CN 105528183A
- Authority
- CN
- China
- Prior art keywords
- data
- crc code
- data block
- byte
- memory device
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
Abstract
本申请公开了一种存储数据的方法及存储设备,涉及存储领域,用以解决现有技术将内存中的数据写入硬盘的效率低下的问题。该方法包括:存储设备获取内存中存储的M个数据块,以及每个该数据块的CRC码;该存储设备根据M个该CRC码以及预处理表计算得到该M个数据块组成的整体数据的目标CRC码,该目标CRC码与该CRC码的字节大小相同,该预处理表包括各种可能的中间数据的CRC码,其中,每个该数据块的字节大小为L1,每个该数据块的CRC码的字节大小为L2,每个该中间数据的字节大小为L1,且每个该中间数据的后L1-L2个字节均为零;该存储设备将该M个数据块,以及该目标CRC码存储到硬盘的一个扇区中。
Description
技术领域
本发明涉及存储领域,尤其涉及一种存储数据的方法及存储设备。
背景技术
现有的存储业务中,通常采用循环冗余校验(英文全称:CyclicRedundancyCheck,简称:CRC)码来实现数据的完整性保护,CRC码是根据存储的数据块通过复杂的计算产生一个查错检验值,其大小可以是8比特、16比特或者32比特等。在具体存储时,存储设备同时存储数据块以及该数据块的数据完整性字段(英文全称:dataintegrityfield,简称DIF),其中,数据完整性字段包括了该数据块的CRC码、逻辑块寻址(英文全称:logicalblockaddressing,简称:LBA)信息及其他自定义信息,这样,该存储设备在后续读该数据块时,将读出来的数据块重新计算CRC码,将重新计算得到的CRC码和原始存储的CRC码进行对比校验,即可识别出该数据块是否出错。
但是,现有技术中,存储设备的内存中一个扇区的大小和硬盘中一个扇区的大小可能不同,因此,存储设备在内存中存储数据和在硬盘中存储数据时,计算CRC码的数据粒度可能不同。
例如,存储设备的内存中一个扇区的大小通常为520字节,并且一个扇区中通常采用512+8的方式存储数据块,即一个扇区中包括512字节大小的数据块以及8字节大小的数据完整性字段,其中,该数据完整性字段中的CRC码占用2个字节,在此种情况下,若该存储设备的硬盘中的一个扇区大小为4104字节,则该存储设备在将内存的数据块写入硬盘时,需要将内存的8个扇区中存储的8个512字节的数据合并为4096字节大小的数据,并重新遍历每个字节计算该4096个字节大小的数据的CRC码,并将该4096字节大小的数据以及包括重新计算得到的该CRC码的8字节大小的数据完整性字段写入硬盘的一个扇区中。
由上述可知,由于存储设备的内存与硬盘的扇区大小不一致,现有技术中,该存储设备在将内存中的数据写入硬盘时,可能需要重新遍历数据计算CRC码,效率低下。
发明内容
本发明的目的是提供一种存储数据的方法及存储设备,用以解决现有技术由于存储设备的内存与硬盘的扇区大小不一致,导致将内存中的数据写入硬盘的效率低下的问题。
上述目的将通过独立权利要求中的特征来达成。进一步的实现方式在从属权利要求、说明书和附图中体现。
第一方面,提供一种存储数据的方法,用于存储数据的存储设备包括内存和硬盘,所述内存中存储有数据块,以及每个所述数据块的循环冗余校验CRC码,其中,每个所述数据块的字节大小为L1,每个所述CRC码的字节大小为L2,所述方法包括:所述存储设备获取所述内存中存储的M个数据块,以及所述M个数据块中的每个数据块的CRC码,M是大于1的正整数;所述存储设备根据M个所述CRC码以及预处理表计算得到目标CRC码,所述目标CRC码是所述M个数据块组成的整体数据的CRC码,所述目标CRC码的字节大小为L2,所述预处理表包括中间数据的CRC码,其中,每个所述中间数据的字节大小为L1,且每个所述中间数据的后L1-L2个字节均为零;所述存储设备将所述M个数据块,以及所述目标CRC码存储到硬盘的一个扇区中。
采用上述方案,该存储设备可以通过内存中的CRC码以及预处理表中的中间数据的CRC码计算得到目标CRC码,无需重新遍历数据计算,降低了算法的复杂度,提高了计算效率,进而提高了将内存数据写入硬盘的效率。
在结合第一方面的第一种可能的实现方式中,所述存储设备将所述M个数据块,以及所述目标CRC码存储到硬盘的一个扇区中,包括:所述存储设备将所述M个数据块进行合并,并将合并后的数据块存储到所述扇区的数据字段;所述存储设备将所述目标CRC码写入所述扇区的数据完整性字段;所述扇区的大小为所述数据字段的字节大小M×L1与所述数据完整性字段的字节大小L3之和,其中,L3大于L2。也就是说,存储设备从内存写入硬盘的数据刚好确保硬盘的一个扇区中存储多个等份的数据以及每等份数据的CRC码。
结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述存储设备根据M个所述CRC码以及预处理表计算得到目标CRC码,包括:所述存储设备根据所述预处理表通过直接查表的方式获取中间数据Rk的CRC码Rkcrc,并计算Ck+1^Rkcrc得到计算结果,将该计算结果的末尾补零,得到与所述数据块的字节大小相同的中间数据Rk+1;其中,k依次取数值区间[1,M-1)中的正整数,Ck+1是所述M个数据块中的第k+1个数据块的CRC码,R1是将所述M个数据块中的第1个数据块的CRC码C1的末尾补零,得到的与所述数据块的字节大小相同的数据,当k=M-2时,得到中间数据RM-1;所述存储设备查询所述预处理表获取所述中间数据RM-1的CRC码R(M-1)crc,并计算CM^R(M-1)crc得到所述目标CRC码,CM是所述M个数据块中的第M个数据块的CRC码。
结合第一方面,或者以上第一方面的任一种可能的实现方式,在第一方面的第三种可能的实现方式中,L1等于512,L2等于2字节,M等于8,L3等于8。
第二方面,提供一种存储设备,所述存储设备包括内存以及硬盘,所述内存中存储有数据块,以及每个所述数据块的循环冗余校验CRC码,其中,每个所述数据块的字节大小为L1,每个所述CRC码的字节大小为L2,所述存储设备还包括处理器,所述处理器与所述内存以及所述硬盘相连,所述处理器用于:获取所述内存中存储的M个数据块,以及所述M个数据块中的每个数据块的CRC码,M是大于1的正整数;根据M个所述CRC码以及预处理表计算得到目标CRC码,所述目标CRC码是所述M个数据块组成的整体数据的CRC码,所述目标CRC码的字节大小为L2,所述预处理表包括中间数据的CRC码,其中,每个所述中间数据的字节大小为L1,且每个所述中间数据的后L1-L2个字节均为零;将所述M个数据块,以及所述目标CRC码存储到硬盘的一个扇区中。
在结合第二方面的第一种可能的实现方式中,所述处理器具体用于:将所述M个数据块进行合并,并将合并后的数据块存储到所述扇区的数据字段;将所述目标CRC码写入所述扇区的数据完整性字段;其中,所述扇区的大小为所述数据字段的字节大小M×L1与所述数据完整性字段的字节大小L3之和,其中,L3大于L2。
结合第二方面,或者第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述处理器具体用于:根据所述预处理表通过直接查表的方式获取中间数据Rk的CRC码Rkcrc,并计算Ck+1^Rkcrc得到计算结果,将该计算结果的末尾补零,得到与所述数据块的字节大小相同的中间数据Rk+1;其中,k依次取数值区间[1,M-1)中的正整数,Ck+1是所述M个数据块中的第k+1个数据块的CRC码,R1是将所述M个数据块中的第1个数据块的CRC码C1的末尾补零,得到的与所述数据块的字节大小相同的数据,当k=M-2时,得到中间数据RM-1;所述存储设备查询所述预处理表获取所述中间数据RM-1的CRC码R(M-1)crc,并计算CM^R(M-1)crc得到所述目标CRC码,CM是所述M个数据块中的第M个数据块的CRC码。
结合第二方面,或者以上第二方面的任一种可能的实现方式,在第二方面的第三种可能的实现方式中,L1等于512,L2等于2字节,M等于8,L3等于8。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的内存中的一个扇区的示意图;
图2为本发明实施例提供的存储设备将内存中的数据写入硬盘的示意图;
图3为本发明实施例提供的一种存储数据的方法的流程示意图;
图4为本发明实施例提供的另一种存储数据的方法的流程示意图;
图5为本发明实施例提供的一种存储设备的结构示意图。
具体实施方式
为了使本领域的技术人员更容易理解本发明实施例对现有技术进行改进的部分,下面首先对现有技术中的方案进行简单介绍。
图1为内存中的一个扇区的示意图,如图所示,内存的扇区中包括数据字段以及数据完整性字段,其中,该数据字段的字节大小为512,该数据完整性字段的字节大小为8,该扇区的字节大小等于数据字段的字节大小与该数据完整性字段的字节大小之和,也就是说,图1所示扇区的大小为520字节。
基于图1所示的内存扇区,若存储设备的硬盘的扇区大小为520字节,则该存储设备可以直接将内存的一个扇区中所有的数据直接写入硬盘的一个扇区,若该硬盘的扇区大小为4160字节,则该存储设备可以将内存的8个扇区中的所有数据直接写入该硬盘的一个扇区。
但是,若该硬盘的扇区大小不是内存扇区大小的整数倍,在此种情况下,该存储设备需要重新计算CRC码,示例地,图2为存储设备将内存中的数据写入硬盘的示意图,其中,该硬盘的扇区大小为4104字节,这样,该存储设备将内存的8个扇区中每个扇区的数据字段中的数据进行合并,并通过逐字节遍历合并后的数据块的方式计算得到CRC码,并将合并后的数据块存储到该硬盘的扇区的数据字段,将重新计算得到的CRC码写入该硬盘的扇区的数据完整性字段。
由上可知,现有技术中,在存储设备的硬盘的扇区大小不是内存扇区大小的整数倍的情况下,该存储设备将内存中的数据写入硬盘时,需要逐字节遍历数据计算CRC码,降低了内存数据写入硬盘的效率。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述,其中,本文中的‘^’用于表示二进制的异或算法,‘%’用于表示模2除法求余。
本发明实施例提供一种存储数据的方法,该方法应用于存储设备,该存储设备包括内存和硬盘,该内存中包括数据块,以及每个该数据块的循环冗余校验CRC码,其中,每个该数据块的字节大小为L1,每个该CRC码的字节大小为L2,如图3所示,该方法包括:
S301、该存储设备获取该内存中存储的M个数据块,以及该M个数据块中的每个数据块的CRC码,M是大于1的正整数。
其中,该M个数据块可以是该内存的一个扇区中的数据块,也可以是多个扇区中的数据块,本发明对此不作限定。
S302、该存储设备根据M个该CRC码以及预处理表计算得到目标CRC码。
其中,该目标CRC码与该CRC码的字节大小相同,该预处理表包括中间数据的CRC码,其中,每个该中间数据的字节大小为L1,且每个该中间数据的后L1-L2个字节均为零。该目标CRC码为该M个数据块的整体数据的CRC码,也就是说,若第一数据块D1为1010100,第二数据块为1010010,则该目标CRC码即为数据10101001010010的CRC码。
本领域的技术人员应该了解到,计算某一数据块的CRC码的数学原理是模2除法,其本质是对数据块中的二进制数据进行异或运算,每次处理掉1个字节后都把当前结果及时异或到后面的字节,按顺序处理完所有字节后最终结果即该数据块的CRC码。
并且,二进制的异或运算具有如下特性:
数据块A和数据块B异或后对K进行模2除的余数等于数据块A和数据块B分别对K进行模2除的余数进行异或的值。也就是说,(A^B)%K=(A%K)^(B%K),这样,对于数据块A,若其前半部分数据为A1,后半部分数据为A2,且A1的CRC码为R,通过对R的末尾补零,得到与A2的字节长度相同的R’,则有数据块A的CRC码等于A2的CRC码与R’的CRC码的异或值。
因此,步骤S302具体包括,该存储设备根据该预处理表通过直接查表的方式获取中间数据Rk的CRC码Rkcrc,并计算Ck+1^Rkcrc得到计算结果,将该计算结果的末尾补零,得到与该数据块的字节大小相同的中间数据Rk+1;其中,Ck+1是所述M个数据块中的第k+1个数据块的CRC码,k依次取数值区间[1,M-1)中的正整数,R1是将该M个数据块中的第1个数据块的CRC码的末尾补零,得到的与该数据块的字节大小相同的数据,由于k依次取数值区间[1,M-1)中的正整数,也就是说,在k小于M-1时,该存储设备每次计算得到一个中间数据Rk+1,令k=k+1,再次根据该预处理表通过直接查表的方式获取中间数据Rk的CRC码Rkcrc,并计算Ck+1^Rkcrc,直到k=M-2时,该存储设备计算得到RM-1,进一步地,该存储设备查询该预处理表获取中间数据RM-1的CRC码R(M-1)crc,并计算CM^R(M-1)crc得到该目标CRC码,CM是所述M个数据块中的第M个数据块的CRC码。
示例地,M等于3,该M个数据块分别为D1=101001,D2=011101,D3=100011,D1的CRC码为C1=101001000%1010=010,D2的CRC码为C2=011101000%1010=110,D3的CRC码为C3=100011000%1010=010,存储设备中的预处理表包括XXX000的CRC码,其中,XXX000中每一位的X可以为0,也可以为1。这样,该存储设备对C1进行末尾补零,得到与D1相同字节长度的中间数据R1=010000,查询该预处理表获得R1的CRC码R1crc=010,进一步地,该存储设备计算C2^R1crc=110^010=100,将100末尾补零得到R2=100000,查询该预处理表获得R2的CRC码R2crc=100,进一步地,该存储设备计算C3^R2crc=010^100得到110,该110即为该目标CRC码,即数据的101001011101100011的CRC码,上述过程相比直接计算101001011101100011000%1010=110,由于无需遍历每个字节的数据,直接通过查询预处理表即可获知中间数据的CRC码,因此,本发明实施例的存储效率更高。
S303、该存储设备将该M个数据块,以及该目标CRC码存储到硬盘的一个扇区中。
具体地,该存储设备将该M个数据块进行合并,并将合并后的数据块存储到该硬盘的扇区的数据字段,并将该目标CRC码写入该硬盘的扇区的数据完整性字段。
值得说明的是,该硬盘的扇区大小可以是M×L1+L3的整数倍,其中L3为硬盘扇区的数据完整性字段的字节大小,L3大于L2。也就是说,存储设备从内存写入硬盘的数据刚好确保硬盘的一个扇区中存储多个等份的数据以及每等份数据的CRC码。
这样,采用上述方案,该存储设备可以通过内存中的CRC码以及预处理表中的中间数据的CRC码计算得到目标CRC码,无需重新遍历数据计算,降低了算法的复杂度,提高了计算效率,进而提高了将内存数据写入硬盘的效率。
为了使本领域技术人员更加理解本发明实施例提供的技术方案,下面以内存扇区大小为512+8,硬盘扇区大小为4096+8为例详细说明本发明实施例提供的存储数据的方法,如图4所示,该方法包括:
S401、存储设备获取内存的八个扇区中,每个扇区的数据字段中存储的字节大小为512的数据块,以及每个扇区的数据完整性字段中存储的字节大小为2的CRC码。
S402、该存储设备将第一个扇区的数据完整性字段中的CRC码C1的末尾补零,得到512字节大小的R1。
S403、该存储设备查询预处理表中R1的CRC码R1crc,并计算C2^R1crc得到计算结果,并对计算结果的末尾补零,得到512字节大小的R2。
值得说明的是,由于中间数据的构成可以理解为是2字节的CRC码后面添加510字节的零,2字节是16个比特位,因此,预处理表中可以包括2的16次方个中间数据的CRC码,即所有可能的中间数据的CRC码均包括在该预处理表中。
S404、该存储设备查询预处理表中Rj的CRC码Rjcrc,并计算Cj+1^Rjcrc得到计算结果,并对计算结果的末尾补零,得到512字节大小的Rj+1,j为大于1小于7的正整数。
S405、该存储设备查询预处理表中R7的CRC码R7crc,并计算C8^R7crc得到目标CRC码。
S406、该存储设备将八个扇区中,每个扇区的数据字段中存储的字节大小为512的数据块合并为字节大小为4096的数据块,并将合并后的数据块写入硬盘扇区的数据字段,将该目标CRC码写入该硬盘扇区的数据完整性字段。
在具体实施时,也可以通过以下程序代码实现对目标CRC码的计算:
值得说明的是,上述程序用于计算所有可能的中间数据的CRC码,T10是CRC16的一种算法。
其中,CRC(4K)即为上述目标CRC码。
由上述程序可知,采用本发明实施例提供的存储数据的方法,整个计算总共只需8轮迭代即可完成,其中,第1轮迭代结果直接就是第1个数据块的CRC码,从第2轮迭代开始一直到最后一轮迭代,每轮迭代的结果都是用上一轮迭代的结果在预处理表中的查询值与该轮对应数据块的CRC码异或的结果,最后一轮迭代的结果即为4096字节的整体数据的CRC码,相比现有技术中通过遍历数据内容来计算4096字节的整体数据的CRC码,本发明实施例的计算方法直接将迭代次数从4096次降为8次,性能提升512倍,提升了计算效率,进而提高了存储设备将内存中的数据存储到硬盘的效率。
另一个例子,若存储设备的内存扇区大小为510+8,硬盘扇区大小为4080+16,此时,CRC码的长度可以选用4字节,这样,该存储设备即可将内存的八个扇区中存储的8个510字节的数据合并后存储到硬盘扇区的4080字节大小的数据字段中,并参照图4所示的方法步骤计算出目标CRC码写入硬盘扇区的数据完整性字段中,具体可以参照图4中的描述,此处不再赘述。
通过上述两个具体的示例可知,由于CRC码的长度可以任意选定,因此,本发明实施例提供的数据存储方法对于任意内存扇区大小与硬盘扇区大小的组合均适用,此处不再一一罗列。
另外,需要说明的是,对于上述方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明所必须的。
本发明实施例还提供一种存储设备50,用于实施上述方法实施例提供的一种存储数据的方法,如图5所示,该存储设备50包括:内存51以及硬盘52,所述内存51中包括数据块,以及每个所述数据块的循环冗余校验CRC码,其中,每个所述数据块的字节大小为L1,每个所述CRC码的字节大小为L2,所述存储设备50还包括处理器53,所述处理器53与所述内存51以及所述硬盘52相连,所述处理器53用于:
获取所述内存中存储的M个数据块,以及所述M个数据块中的每个数据块的CRC码,M是大于1的正整数;
根据M个所述CRC码以及预处理表计算得到目标CRC码,所述目标CRC码是所述M个数据块组成的整体数据的CRC码,所述目标CRC码与所述CRC码的字节大小相同,所述预处理表包括中间数据的CRC码,其中,每个所述中间数据的字节大小为L1,且每个所述中间数据的后L1-L2个字节均为零;
将所述M个数据块,以及所述目标CRC码存储到硬盘的一个扇区中。
可选地,所述处理器53具体用于:
将所述M个数据块进行合并,并将合并后的数据块存储到所述扇区的数据字段;
将所述目标CRC码写入所述扇区的数据完整性字段;其中,所述扇区的大小为所述数据字段的字节大小M×L1与所述数据完整性字段的字节大小L3之和,其中,L3大于L2。
可选地,所述处理器53具体用于:
根据所述预处理表通过直接查表的方式获取中间数据Rk的CRC码Rkcrc,并计算Ck+1^Rkcrc得到计算结果,将该计算结果的末尾补零,得到与所述数据块的字节大小相同的中间数据Rk+1;其中,k依次取数值区间[1,M-1)中的正整数,Ck+1是所述M个数据块中的第k+1个数据块的CRC码,R1是将所述M个数据块中的第1个数据块的CRC码C1的末尾补零,得到的与所述数据块的字节大小相同的数据;所述存储设备查询所述预处理表获取中间数据RM-1的CRC码R(M-1)crc,并计算CM^R(M-1)crc得到所述目标CRC码,CM是所述M个数据块中的第M个数据块的CRC码。
可选地,L1等于512,L2等于2字节,M等于8,L3等于8。参照方法实施例中对应图4的描述,此处不再赘述。
所属本领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的存储设备的具体工作过程和描述,可以参考前述方法实施例中的对应过程,在此不再赘述。
本发明实施例中的处理器53可以是中央处理单元(英文全称:CenterProcessingUnit,简称:CPU)。另外,为节省CPU的计算资源,处理器53也可以是现场可编程门阵列(英文全称:FieldProgrammableGateArray,简称:FPGA)或其他硬件,以实现本发明实施例中存储数据的全部操作,或者,处理器53也可以是CPU和FPGA或其他硬件,则FPGA或其他硬件与CPU分别执行本发明实施例存储数据的部分操作。为方便描述,本发明实施例统一描述为存储设备的处理器53实现本发明实施例存储数据操作。
采用上述存储设备,该存储设备可以通过内存中的CRC码以及预处理表中的中间数据的CRC码计算得到目标CRC码,无需重新遍历数据计算,降低了算法的复杂度,提高了计算效率,进而提高了将内存数据写入硬盘的效率。
在本申请所提供的几个实施例中,应该理解到,所公开的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、随机存取存储器(英文全称:RandomAccessMemory,简称:RAM)、磁碟或者光盘等各种可以存储数据的介质。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (8)
1.一种存储数据的方法,其特征在于,用于存储数据的存储设备包括内存和硬盘,所述内存中存储有数据块,以及每个所述数据块的循环冗余校验CRC码,其中,每个所述数据块的字节大小为L1,每个所述CRC码的字节大小为L2,所述方法包括:
所述存储设备获取所述内存中存储的M个数据块,以及所述M个数据块中的每个数据块的CRC码,M是大于1的正整数;
所述存储设备根据M个所述CRC码以及预处理表计算得到目标CRC码,所述目标CRC码是所述M个数据块组成的整体数据的CRC码,所述目标CRC码的字节大小为L2,所述预处理表包括中间数据的CRC码,其中,每个所述中间数据的字节大小为L1,且每个所述中间数据的后L1-L2个字节均为零;
所述存储设备将所述M个数据块,以及所述目标CRC码存储到硬盘的一个扇区中。
2.根据权利要求1所述的方法,其特征在于,所述存储设备将所述M个数据块,以及所述目标CRC码存储到硬盘的一个扇区中,包括:
所述存储设备将所述M个数据块进行合并,并将合并后的数据块存储到所述扇区的数据字段;
所述存储设备将所述目标CRC码写入所述扇区的数据完整性字段;所述扇区的大小为所述数据字段的字节大小M×L1与所述数据完整性字段的字节大小L3之和,其中,L3大于L2。
3.根据权利要求1或2所述的方法,其特征在于,所述存储设备根据M个所述CRC码以及预处理表计算得到目标CRC码,包括:
所述存储设备根据所述预处理表通过直接查表的方式获取中间数据Rk的CRC码Rkcrc,并计算Ck+1^Rkcrc得到计算结果,将该计算结果的末尾补零,得到与所述数据块的字节大小相同的中间数据Rk+1;其中,k依次取数值区间[1,M-1)中的正整数,Ck+1是所述M个数据块中的第k+1个数据块的CRC码,R1是将所述M个数据块中的第1个数据块的CRC码C1的末尾补零,得到的与所述数据块的字节大小相同的数据,当k=M-2时,得到中间数据RM-1;
所述存储设备查询所述预处理表获取所述中间数据RM-1的CRC码R(M-1)crc,并计算CM^R(M-1)crc得到所述目标CRC码,CM是所述M个数据块中的第M个数据块的CRC码。
4.根据权利要求2所述的方法,其特征在于,L1等于512,L2等于2字节,M等于8,L3等于8。
5.一种存储设备,所述存储设备包括内存以及硬盘,所述内存中存储有数据块,以及每个所述数据块的循环冗余校验CRC码,其中,每个所述数据块的字节大小为L1,每个所述CRC码的字节大小为L2,其特征在于,所述存储设备还包括处理器,所述处理器与所述内存以及所述硬盘相连,所述处理器用于:
获取所述内存中存储的M个数据块,以及所述M个数据块中的每个数据块的CRC码,M是大于1的正整数;
根据M个所述CRC码以及预处理表计算得到目标CRC码,所述目标CRC码是所述M个数据块组成的整体数据的CRC码,所述目标CRC码的字节大小为L2,所述预处理表包括中间数据的CRC码,其中,每个所述中间数据的字节大小为L1,且每个所述中间数据的后L1-L2个字节均为零;
将所述M个数据块,以及所述目标CRC码存储到硬盘的一个扇区中。
6.根据权利要求5所述的存储设备,其特征在于,所述处理器具体用于:
将所述M个数据块进行合并,并将合并后的数据块存储到所述扇区的数据字段;
将所述目标CRC码写入所述扇区的数据完整性字段;其中,所述扇区的大小为所述数据字段的字节大小M×L1与所述数据完整性字段的字节大小L3之和,其中,L3大于L2。
7.根据权利要求5或6所述的存储设备,其特征在于,所述处理器具体用于:
根据所述预处理表通过直接查表的方式获取中间数据Rk的CRC码Rkcrc,并计算Ck+1^Rkcrc得到计算结果,将该计算结果的末尾补零,得到与所述数据块的字节大小相同的中间数据Rk+1;其中,k依次取数值区间[1,M-1)中的正整数,Ck+1是所述M个数据块中的第k+1个数据块的CRC码,R1是将所述M个数据块中的第1个数据块的CRC码C1的末尾补零,得到的与所述数据块的字节大小相同的数据,当k=M-2时,得到中间数据RM-1;
所述存储设备查询所述预处理表获取所述中间数据RM-1的CRC码R(M-1)crc,并计算CM^R(M-1)crc得到所述目标CRC码,CM是所述M个数据块中的第M个数据块的CRC码。
8.根据权利要求6所述的存储设备,其特征在于,L1等于512,L2等于2字节,M等于8,L3等于8。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610053075.5A CN105528183B (zh) | 2016-01-26 | 2016-01-26 | 一种存储数据的方法及存储设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610053075.5A CN105528183B (zh) | 2016-01-26 | 2016-01-26 | 一种存储数据的方法及存储设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105528183A true CN105528183A (zh) | 2016-04-27 |
CN105528183B CN105528183B (zh) | 2019-01-18 |
Family
ID=55770437
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610053075.5A Active CN105528183B (zh) | 2016-01-26 | 2016-01-26 | 一种存储数据的方法及存储设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105528183B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108762973A (zh) * | 2018-04-17 | 2018-11-06 | 华为技术有限公司 | 存储数据的方法和存储设备 |
CN109542329A (zh) * | 2017-09-21 | 2019-03-29 | 阿里巴巴集团控股有限公司 | 日志写入方法、装置及系统 |
CN110719494A (zh) * | 2019-09-06 | 2020-01-21 | 烽火通信科技股份有限公司 | 一种实现cdn流媒体数据防篡改的方法及系统 |
WO2022204971A1 (zh) * | 2021-03-30 | 2022-10-06 | 华为技术有限公司 | 存储方法及存储控制器 |
CN115208516A (zh) * | 2022-07-11 | 2022-10-18 | 上海恩阶电子科技有限公司 | 一种基于crc校验码的数据存储及校验方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1431594A (zh) * | 2003-01-27 | 2003-07-23 | 西安电子科技大学 | 一种多通道多位并行计算crc码的方法 |
CN1480953A (zh) * | 2002-09-07 | 2004-03-10 | 鸿富锦精密工业(深圳)有限公司 | 在内存中存放校验码的方法及装置 |
US20050005224A1 (en) * | 2003-06-19 | 2005-01-06 | Jeremy Ridgeway | Configurable, fast, 32-bit CRC generator for 1-byte to 16-bytes variable width input data |
CN1604515A (zh) * | 2003-09-30 | 2005-04-06 | 国际商业机器公司 | 为具有n块数据的消息产生循环冗余检验的方法和装置 |
-
2016
- 2016-01-26 CN CN201610053075.5A patent/CN105528183B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1480953A (zh) * | 2002-09-07 | 2004-03-10 | 鸿富锦精密工业(深圳)有限公司 | 在内存中存放校验码的方法及装置 |
CN1431594A (zh) * | 2003-01-27 | 2003-07-23 | 西安电子科技大学 | 一种多通道多位并行计算crc码的方法 |
US20050005224A1 (en) * | 2003-06-19 | 2005-01-06 | Jeremy Ridgeway | Configurable, fast, 32-bit CRC generator for 1-byte to 16-bytes variable width input data |
CN1604515A (zh) * | 2003-09-30 | 2005-04-06 | 国际商业机器公司 | 为具有n块数据的消息产生循环冗余检验的方法和装置 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109542329A (zh) * | 2017-09-21 | 2019-03-29 | 阿里巴巴集团控股有限公司 | 日志写入方法、装置及系统 |
CN109542329B (zh) * | 2017-09-21 | 2022-04-12 | 阿里云计算有限公司 | 日志写入方法、存储管理设备及系统 |
CN108762973A (zh) * | 2018-04-17 | 2018-11-06 | 华为技术有限公司 | 存储数据的方法和存储设备 |
CN108762973B (zh) * | 2018-04-17 | 2021-05-14 | 华为技术有限公司 | 存储数据的方法和存储设备 |
CN110719494A (zh) * | 2019-09-06 | 2020-01-21 | 烽火通信科技股份有限公司 | 一种实现cdn流媒体数据防篡改的方法及系统 |
CN110719494B (zh) * | 2019-09-06 | 2022-01-07 | 烽火通信科技股份有限公司 | 一种实现cdn流媒体数据防篡改的方法及系统 |
WO2022204971A1 (zh) * | 2021-03-30 | 2022-10-06 | 华为技术有限公司 | 存储方法及存储控制器 |
CN115208516A (zh) * | 2022-07-11 | 2022-10-18 | 上海恩阶电子科技有限公司 | 一种基于crc校验码的数据存储及校验方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105528183B (zh) | 2019-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9407286B2 (en) | Data compression apparatus, data compression method, and memory system including the data compression apparatus | |
CN105528183A (zh) | 一种存储数据的方法及存储设备 | |
US8732538B2 (en) | Programmable data storage management | |
JP5216915B2 (ja) | ストレージ装置 | |
US9195541B2 (en) | Controlling nonvolatile memory device and nonvolatile memory system | |
KR101867282B1 (ko) | 비휘발성 메모리 장치의 가비지 컬렉션 방법 | |
US20150019834A1 (en) | Memory hierarchy using page-based compression | |
US9811419B2 (en) | Validation bits and offsets to represent logical pages split between data containers | |
CN108027713B (zh) | 用于固态驱动器控制器的重复数据删除 | |
CN104765693A (zh) | 一种用于存储数据的方法、装置和系统 | |
US9477605B2 (en) | Memory hierarchy using row-based compression | |
US9231615B2 (en) | Method to shorten hash chains in Lempel-Ziv compression of data with repetitive symbols | |
CN111125033B (zh) | 一种基于全闪存阵列的空间回收方法及系统 | |
CN111625181B (zh) | 数据处理方法、独立硬盘冗余阵列控制器和数据存储系统 | |
KR20200043676A (ko) | 메모리 시스템 및 메모리 시스템의 동작방법 | |
CN103677674A (zh) | 一种数据处理方法及装置 | |
EP3051700A1 (en) | Hardware efficient fingerprinting | |
CN105242879A (zh) | 一种数据存储方法以及协议服务器 | |
CN109412604A (zh) | 一种基于语言模型的数据压缩方法 | |
CN104572917A (zh) | 数据锁定方法、装置及分布式存储系统 | |
CN110504002B (zh) | 一种硬盘数据一致性测试方法与装置 | |
US9594629B2 (en) | Data error correction from cached error correction information | |
US9424262B2 (en) | Computing system and data management method thereof | |
CN111625180A (zh) | 数据写入方法及装置、存储介质 | |
CN106919340B (zh) | 提高raid读取性能的系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220908 Address after: No. 1899 Xiyuan Avenue, high tech Zone (West District), Chengdu, Sichuan 610041 Patentee after: Chengdu Huawei Technologies Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TR01 | Transfer of patent right |