CN117632572A - 数据存储方法、装置及存储介质 - Google Patents
数据存储方法、装置及存储介质 Download PDFInfo
- Publication number
- CN117632572A CN117632572A CN202210988713.8A CN202210988713A CN117632572A CN 117632572 A CN117632572 A CN 117632572A CN 202210988713 A CN202210988713 A CN 202210988713A CN 117632572 A CN117632572 A CN 117632572A
- Authority
- CN
- China
- Prior art keywords
- data
- check
- unit
- units
- disk
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 71
- 238000013500 data storage Methods 0.000 title claims abstract description 47
- 239000012634 fragment Substances 0.000 claims abstract description 268
- 230000015654 memory Effects 0.000 claims description 96
- 230000008569 process Effects 0.000 abstract description 21
- 238000012545 processing Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 15
- 238000012795 verification Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 13
- 230000002085 persistent effect Effects 0.000 description 9
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000013075 data extraction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 230000008929 regeneration Effects 0.000 description 1
- 238000011069 regeneration method Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种数据存储方法、装置及存储介质,属于数据存储领域。在本申请实施例中,同一个数据盘中不同条带中相同排序的数据分片将连续存储。同一个校验盘中不同条带中相同排序的校验分片将连续存储。这样,如果m个数据盘和n个校验盘中少于n个的硬盘发生故障,则在进行数据重构时,对于任一待读取数据的未故障硬盘,通过一个IO请求就能从该未故障硬盘中读取到连续存储的属于不同条带的多个数据分片或校验分片,以实现数据重构,减少了数据重构过程中的IO操作的数量,降低了对读写带宽的占用,提升了重构性能。
Description
技术领域
本申请涉及数据存储技术领域,特别涉及一种数据存储方法、装置及存储介质。
背景技术
纠删码(erasure code,EC)技术主要是通过EC算法将原始数据进行编码得到冗余数据,并将该原始数据和冗余数据一起存储,以达到容错的目的。例如,里德-所罗门((reed-solomon,RS)码技术即为纠删码技术的一种。目前,由于RS码技术中硬盘故障后进行数据重构时所需传输的数据量较大,所以业界提出了再生码(regenerating code,RC)技术,以减少数据重构时所需传输的数据量。
目前,在RC技术中,获取m个数据单元,每个数据单元包括多个数据分片,利用该m个数据单元包含的数据分片进行编码,得到n个校验单元,其中,每个校验单元包括多个校验分片。将该m个数据单元和n个校验单元存储至m+n个硬盘中。其中,m+n个硬盘中的每个硬盘上存储一个数据单元或一个校验单元,这样,该m个数据单元和n个校验单元组成一个条带。当m+n个硬盘中的任一个硬盘发生故障,则可以通过读取其他硬盘中的部分数据分片和校验分片来重构各个条带中位于故障设备上的数据。然而,在从其他硬盘中读取数据分片和校验分片时,同一个硬盘中用于重构不同条带中的数据的数据分片或校验分片的物理存储地址可能并不连续,在这种情况下,则需要通过多次的输入输出(input/output,IO)操作从该硬盘中读取分片,这将占用大量读写带宽,影响前台业务的每秒读写次数(input/output operations per second,IOPS)。
发明内容
本申请实施例提供了一种数据存储方法、装置及存储介质,可以减少RC解码过程中的IO操作的次数,降低对读写带宽的占用,并改善重构性能。所述技术方案如下:
第一方面,提供了数据存储方法,所述方法包括:获取m个第一数据单元和m个第二数据单元,每个数据单元包括k个数据分片,所述m和所述k均为不小于2的整数;对所述m个第一数据单元中的数据分片进行再生码RC编码,得到n个第一校验单元,对所述m个第二数据单元中的数据分片进行RC编码,得到n个第二校验单元,每个校验单元包括k个校验分片,所述n为小于所述m的正整数;将所述m个第一数据单元和所述m个第二数据单元存储至m个数据盘,并将所述n个第一校验单元和所述n个第二校验单元存储至n个校验盘,其中,每个数据盘存储有一个第一数据单元和一个第二数据单元,且每个数据盘中的第一数据单元的第i个数据分片与第二数据单元中的第i个数据分片的物理存储地址连续,每个校验盘存储有一个第一校验单元和一个第二校验单元,且每个校验盘中的第一校验单元的第i个校验分片与第二校验单元的第i个校验分片的物理存储地址连续。
其中,m为预设的EC配比中数据单元的数量,n为预设的EC配比中校验单元的数量。
在本申请实施例中,对m个第一数据单元进行RC编码,得到n个第一校验单元,对m个第二数据单元进行RC编码,得到n个第二校验单元。之后,将m个第一数据单元和m个第二数据单元存储至m个数据盘,并将n个第一校验单元和n个第二校验单元存储至n个校验盘。这样,m个第一数据单元和n个第一校验单元将组成一个逻辑条带,而m个第二数据单元和n个第二校验单元则组成了另一个逻辑条带。在此基础上,每个数据盘中的第一数据单元的第i个数据分片和第二数据单元的第i个数据分片的物理存储地址连续,也即,同一个数据盘中不同条带中相同排序的数据分片将连续存储。每个校验盘中的第一校验单元中的第i个校验分片和第二校验单元中的第i个校验分片的物理存储地址连续,也即,同一个校验盘中不同条带中相同排序的校验分片将连续存储。这样,如果m个数据盘和n个校验盘中少于n个的硬盘发生故障,则在进行数据重构时,对于任一待读取数据的未故障硬盘,通过一个IO请求就能从该未故障硬盘中读取到连续存储的属于不同条带的多个数据分片或校验分片,以实现数据重构,减少了数据重构过程中的IO操作的数量,降低了对读写带宽的占用,提升了重构性能。
可选地,每个数据盘中同一个数据单元的第i个数据分片的物理存储地址与第i+1个数据分片的物理存储地址不连续,每个校验盘中的同一个校验单元的第i个校验分片的物理存储地址与第i+1个校验分片的物理存储地址不连续。
也即,每个数据盘中的同一个数据单元中数据分片间隔存储。由于一个数据盘中的一个数据单元属于一个逻辑条带,因此,当每个数据盘中该数据单元的数据分片间隔存储时,则说明该数据单元所属的逻辑条带中位于同一个数据盘上的的数据分片间隔存储。
可选地,所述获取m个第一数据单元和m个第二数据单元的实现过程可以为:获取m个数据块,每个数据块的数据量相同;从所述m个数据块中的每个数据块中获取一个第一数据单元和一个第二数据单元,得到所述m个第一数据单元和所述m个第二数据单元。
可选地,各个数据块的数据量也可以不相同,在此基础上,从m个数据块中获得m个第一数据单元的大小也不相同,m个第二数据单元的大小也不同。
可选地,所述从所述m个数据块中的每个数据块中获取一个第一数据单元和一个第二数据单元的实现过程可以为:基于第一数据量,将第一数据块划分为多个数据分片,所述第一数据块为所述m个数据块中的任一个,每个数据分片的数据量等于所述第一数据量;按照所述多个数据分片的先后顺序,将所述第一数据块划分为k个数据子块,每个数据子块包括r个数据分片,所述r等于任一数据块的数据量与任一数据单元的数据量的比值,且所述r为不小于2的整数;获取所述k个数据子块中的每个数据子块的第j个数据分片,以得到一个第一数据单元;获取所述k个数据子块中的每个数据子块的第j+1个数据分片,以得到一个第二数据单元。在这种情况下,第一数据单元和第二数据单元即为相邻的数据单元,所谓相邻的数据单元是指这两个数据单元中相同排位的数据分片相邻,后续,在将第一数据单元和第二数据单元存储至数据盘时,该第一数据单元和第二数据单元中相同排位的数据分片也将连续存储。
可选地,所述m个数据块与所述m个数据盘一一对应,所述将所述m个第一数据单元和所述m个第二数据单元存储至m个数据盘的实现过程可以为:将从所述第一数据块中获得的第一数据单元和第二数据单元存储至所述第一数据块对应的第一数据盘。
可选地,所述第一数据盘中的第一数据单元的第i个数据分片的物理存储地址与第i+1个数据分片的物理存储地址之间存储有r-1个数据分片,所述r-1个数据分片为所述k个数据子块中第i个数据子块中的第j个数据分片与第i+1个数据子块中的第j个数据分片之间的数据分片,每个校验盘中的第一校验单元的第i个校验分片的物理存储地址与第i+1个校验分片的物理存储地址之间存储有r-1个校验分片,所述r-1个校验分片与所述r-1个数据分片一一对应。
可选地,所述n个第一校验单元和所述n个第二校验单元对应n种校验类型,每种校验类型对应一个校验盘,在此基础上,将n个第一校验单元和n个第二校验单元存储至n个校验盘时,属于同一种校验类型的第一校验单元和第二校验单元存储于对应的校验盘上。
可选地,所述获取m个第一数据单元和m个第二数据单元的实现过程也可以为:当接收到m个数据单元时,将该m个数据单元作为m个第一数据单元,之后,当再次接收到m个数据单元时,将再次接收到的m个数据单元作为m个第二数据单元。
可选地,在通过上述方式进行数据存储之后,如果m个数据盘和n个校验盘中的有t个硬盘发生故障时,则通过其他未故障的硬盘上的数据来恢复故障盘上的数据。其中,t为不大于n的正整数。
可选地,当发生故障的t个硬盘均为数据盘时,向剩余的每个数据盘发送第一读取请求,并向所述n个校验盘中的每个校验盘发送第二读取请求,所述t为不大于n的正整数;接收剩余的每个数据盘基于所述第一读取请求发送的所述第一数据单元和所述第二数据单元的数据分片,并接收每个校验盘基于所述第二读取请求发送的所述第一校验单元和所述第二校验单元的校验分片;基于接收到的数据分片和校验分片,确定所述t个数据盘存储的第一数据单元和第二数据单元。
当t个数据盘故障时,通过其他数据盘存储的各个逻辑条带中的至少一个排位的数据分片和校验盘存储的各个逻辑条带中的至少一个排位的校验分片即能恢复出故障盘上存储的各个逻辑条带中的数据。而由前述介绍的数据单元在数据盘中的存储方式以及校验单元在校验盘中的存储方式可知,每个数据盘中各个逻辑条带中相同排位的数据分片连续存储,每个校验盘中各个逻辑条带中相同排位的校验分片连续存储。因此,对于任一数据盘或校验盘,引擎通过一个读取请求即能够从相应的硬盘上读取到连续的存储空间内存储的多个逻辑条带的某个排位的分片,从而基于读取到的分片重构出故障盘上的多个逻辑条带中的数据。由此可见,本申请实施例在重构故障盘上的数据时,引擎在从其他未故障的硬盘中读取重构所需的数据时,对于任意一个硬盘,均只需一次IO操作即可以完成数据的读取,减少了数据重构过程中的IO操作的数量,降低了对读写带宽的占用,提升了重构性能。
第二方面,提供了一种数据存储装置,所述数据存储装置包括至少一个模块,所述至少一个模块用于实现第一方面所述的数据存储方法。示例性地,所述至少一个模块包括获取模块、编码模块和存储模块。
其中,获取模块,用于获取m个第一数据单元和m个第二数据单元,每个数据单元包括k个数据分片,所述m和所述k均为不小于2的整数;编码模块,用于对所述m个第一数据单元中的数据分片进行再生码RC编码,得到n个第一校验单元,对所述m个第二数据单元中的数据分片进行RC编码,得到n个第二校验单元,每个校验单元包括k个校验分片,所述n为小于所述m的正整数;存储模块,用于将所述m个第一数据单元和所述m个第二数据单元存储至m个数据盘,并将所述n个第一校验单元和所述n个第二校验单元存储至n个校验盘,其中,每个数据盘存储有一个第一数据单元和一个第二数据单元,且每个数据盘中的第一数据单元的第i个数据分片与第二数据单元中的第i个数据分片的物理存储地址连续,每个校验盘存储有一个第一校验单元和一个第二校验单元,且每个校验盘中的第一校验单元的第i个校验分片与第二校验单元的第i个校验分片的物理存储地址连续。
可选地,每个数据盘中同一个数据单元的第i个数据分片的物理存储地址与第i+1个数据分片的物理存储地址不连续,每个校验盘中的同一个校验单元的第i个校验分片的物理存储地址与第i+1个校验分片的物理存储地址不连续。
可选地,所述获取模块主要用于:获取m个数据块,每个数据块的数据量相同;从所述m个数据块中的每个数据块中获取一个第一数据单元和一个第二数据单元,得到所述m个第一数据单元和所述m个第二数据单元。
可选地,所述获取模块主要用于:基于第一数据量,将第一数据块划分为多个数据分片,所述第一数据块为所述m个数据块中的任一个,每个数据分片的数据量等于所述第一数据量;按照所述多个数据分片的先后顺序,将所述第一数据块划分为k个数据子块,每个数据子块包括r个数据分片,所述r等于任一数据块的数据量与任一数据单元的数据量的比值,且所述r为不小于2的整数;获取所述k个数据子块中的每个数据子块的第j个数据分片,以得到一个第一数据单元;获取所述k个数据子块中的每个数据子块的第j+1个数据分片,以得到一个第二数据单元。
可选地,所述m个数据块与所述m个数据盘一一对应,所述存储模块主要用于:将从所述第一数据块中获得的第一数据单元和第二数据单元存储至所述第一数据块对应的第一数据盘。
可选地,所述第一数据盘中的第一数据单元的第i个数据分片的物理存储地址与第i+1个数据分片的物理存储地址之间存储有r-1个数据分片,所述r-1个数据分片为所述k个数据子块中第i个数据子块中的第j个数据分片与第i+1个数据子块中的第j个数据分片之间的数据分片,每个校验盘中的第一校验单元的第i个校验分片的物理存储地址与第i+1个校验分片的物理存储地址之间存储有r-1个校验分片,所述r-1个校验分片与所述r-1个数据分片一一对应。
可选地,所述装置还包括:发送模块,用于当所述m个数据盘中的t个数据盘故障时,向剩余的每个数据盘发送第一读取请求,并向所述n个校验盘中的每个校验盘发送第二读取请求,所述t为不大于n的正整数;接收模块,用于接收剩余的每个数据盘基于所述第一读取请求发送的所述第一数据单元和所述第二数据单元的数据分片,并接收每个校验盘基于所述第二读取请求发送的所述第一校验单元和所述第二校验单元的校验分片;解码模块,用于基于接收到的数据分片和校验分片,确定所述t个数据盘存储的第一数据单元和第二数据单元。
第三方面,提供了一种计算设备,所述计算设备的结构中包括处理器和存储器,所述存储器用于存储支持所述计算设备执行上述第一方面所提供的数据存储方法的至少一条程序指令或代码,以及存储用于实现上述第一方面所提供的数据存储方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序指令或代码。
第四方面,提供了一种存储系统,所述存储系统包括计算设备和多个硬盘;其中,所述多个硬盘包括数据盘和校验盘,所述计算设备用于执行第一方面所述的数据存储方法,以实现将数据单元和对应的校验单元分别存储至数据盘和校验盘中。
需要说明的是,所述存储系统为集中式存储系统,所述计算设备为所述集中式存储系统中的引擎,所述多个硬盘插接在所述引擎的硬盘槽位上,或者,所述多个硬盘位于硬盘框中,所述硬盘框与所述引擎连接。
可选地,所述存储系统为分布式存储系统,所述计算设备为所述分布式存储系统中的计算节点,所述多个硬盘为所述分布式存储系统中的存储节点上的硬盘。或者,所述计算设备为所述分布式存储系统中的任一服务器中的处理组件,所述多个硬盘为所述分布式存储系统中的多个服务器中的硬盘。
第五方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的数据存储方法。
第六方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的数据存储方法。
上述第二方面、第三方面、第四方面、第五方面和第六方面所获得的技术效果与第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
本申请实施例提供的技术方案至少具有如下有益效果:
在本申请实施例中,对m个第一数据单元进行RC编码,得到n个第一校验单元,对m个第二数据单元进行RC编码,得到n个第二校验单元。之后,将m个第一数据单元和m个第二数据单元存储至m个数据盘,并将n个第一校验单元和n个第二校验单元存储至n个校验盘。这样,m个第一数据单元和n个第一校验单元将组成一个逻辑条带,而m个第二数据单元和n个第二校验单元则组成了另一个逻辑条带。在此基础上,每个数据盘中的第一数据单元的第i个数据分片和第二数据单元的第i个数据分片的物理存储地址连续,也即,同一个数据盘中不同条带中相同排序的数据分片将连续存储。每个校验盘中的第一校验单元中的第i个校验分片和第二校验单元中的第i个校验分片的物理存储地址连续,也即,同一个校验盘中不同条带中相同排序的校验分片将连续存储。这样,如果m个数据盘和n个校验盘中少于n个的硬盘发生故障,则在进行数据重构时,对于任一待读取数据的未故障硬盘,通过一个IO请求就能从该未故障硬盘中读取到连续存储的属于不同条带的多个数据分片或校验分片,以实现数据重构,减少了数据重构过程中的IO操作的数量,降低了对读写带宽的占用,提升了重构性能。
附图说明
图1是本申请实施例提供的数据存储方法所应用的一种集中式存储系统的结构示意图;
图2是本申请实施例提供的数据存储方法所应用的一种分布式存储系统的结构示意图;
图3是本申请实施例提供的一种相关技术中RS码编码和解码的示意图;
图4是本申请实施例提供的一种相关技术中RC编码和解码的示意图;
图5是本申请实施例提供的一种数据存储方法的流程图;
图6是本申请实施例提供的一种从数据块中获取各个条带中的数据单元的示意图;
图7是本申请实施例提供的一种RC编码、数据单元和校验单元存储以及RC解码的示意图;
图8是本申请实施例提供的一种数据存储装置的结构示意图;
图9是本申请实施例提供的另一种数据存储装置的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本申请实施例进行详细的解释说明之前,先对本申请实施例的实施环境进行介绍。
本申请实施例提供的数据存储方法可以应用于集中式存储系统,也可以应用于分布式存储系统。
图1是本申请实施例示出的一种集中式存储系统的架构图。如图1所示,该存储系统包括引擎10和硬盘框11。其中,集中式存储系统的特点是有一个统一的入口,所有从外部设备来的数据都要经过这个入口,这个入口就是集中式存储系统的引擎10。引擎10是集中式存储系统中最为核心的部件,许多存储系统的高级功能都在其中实现。
如图1所示,引擎10包括一个或多个控制器,图1以引擎包含两个控制器为例予以说明。控制器0与控制器1之间具有镜像通道,那么当控制器0将一份数据写入其内存102后,可以通过该镜像通道将该数据的副本发送给控制器1,控制器1将副本存储在自己本地的内存102中。由此,控制器0和控制器1互为备份,当控制器0发生故障时,控制器1可以接管控制器0的业务,当控制器1发生故障时,控制器0可以接管控制器1的业务,从而避免硬件故障导致整个存储系统的不可用。当引擎10中部署有4个控制器时,任意两个控制器之间都具有镜像通道,因此任意两个控制器互为备份。
引擎10还包含其中前端接口103用于与应用服务器通信,从而为应用服务器提供存储服务。而后端接口104用于与硬盘112通信,以扩充存储系统的容量。通过后端接口104,引擎10可以连接更多的硬盘112,从而形成一个非常大的存储资源池。
在硬件上,如图1所示,控制器0至少包括处理器101、内存102、前端接口103和后端接口104。
其中,前端接口103用于与应用服务器通信,从而为应用服务器提供存储服务。而后端接口104用于与硬盘112通信,以扩充存储系统的容量。通过后端接口104,引擎10可以连接更多的硬盘112,从而形成一个非常大的存储资源池。
处理器101是一个中央处理器(central processing unit,CPU),用于处理来自存储系统外部(服务器或者其他存储系统)的数据访问请求,也用于处理存储系统内部生成的请求。示例性的,处理器101通过前端端口103接收应用服务器100发送的写数据请求时,会将这些写数据请求中的数据暂时保存在内存102中。当内存102中的数据总量达到一定阈值时,处理器101可以采用本申请实施例中提供的方法对数据进行RC编码,进而将编码后的数据通过后端端口104发送给硬盘112进行持久化存储。
内存102是指与处理器直接交换数据的内部存储器,它可以随时读写数据,而且速度很快,作为操作系统或其他正在运行中的程序的临时数据存储器。内存包括至少两种存储器,例如内存既可以是随机存取存储器,也可以是只读存储器(read only memory,ROM)。举例来说,随机存取存储器是动态随机存取存储器(dynamic random access memory,DRAM),或者存储级存储器(storage class memory,SCM)。DRAM是一种半导体存储器,与大部分随机存取存储器(random access memory,RAM)一样,属于一种易失性存储器(volatile memory)设备。SCM是一种同时结合传统储存装置与存储器特性的复合型储存技术,存储级存储器能够提供比硬盘更快速的读写速度,但存取速度上比DRAM慢,在成本上也比DRAM更为便宜。然而,DRAM和SCM在本实施例中只是示例性的说明,内存还可以包括其他随机存取存储器,例如静态随机存取存储器(static random access memory,SRAM)等。而对于只读存储器,举例来说,可以是可编程只读存储器(programmable read only memory,PROM)、可抹除可编程只读存储器(erasable programmable read only memory,EPROM)等。另外,内存102还可以是双列直插式存储器模块或双线存储器模块(dual in-line memorymodule,简称DIMM),即由动态随机存取存储器(DRAM)组成的模块,还可以是固态硬盘(solid state disk,SSD)。实际应用中,控制器0中可配置多个内存102,以及不同类型的内存102。本实施例不对内存113的数量和类型进行限定。此外,可对内存102进行配置使其具有保电功能。保电功能是指系统发生掉电又重新上电时,内存102中存储的数据也不会丢失。具有保电功能的内存被称为非易失性存储器。
内存102中存储有软件程序,处理器101运行内存102中的软件程序可实现对硬盘的管理。例如将硬盘抽象化为存储资源池,然后划分为LUN提供给服务器使用等。这里的LUN其实就是在服务器上看到的硬盘。当然,一些集中式存储系统本身也是文件服务器,可以为服务器提供共享文件服务。
控制器1(以及其他图1中未示出的控制器)的硬件组件和软件结构与控制器0类似,这里不再赘述。
另外,图1所示的是一种盘控分离的集中式存储系统。在该系统中,引擎10可以不具有硬盘槽位,硬盘112需要放置在硬盘框11中,后端接口104与硬盘框11通信。后端接口104以适配卡的形态存在于引擎10中,一个引擎10上可以同时使用两个或两个以上后端接口104来连接多个硬盘框。或者,适配卡也可以集成在主板上,此时适配卡可通过PCIE总线与处理器101通信。
需要说明的是,图1中只示出了一个引擎10,然而在实际应用中,存储系统中可包含两个或两个以上引擎10,多个引擎10之间做冗余或者负载均衡。
硬盘框11包括控制单元111和若干个硬盘112。控制单元111可具有多种形态。一种情况下,硬盘框11属于智能盘框,其中,控制单元111包括CPU和内存。CPU用于执行地址转换以及读写数据等操作。内存用于临时存储将要写入硬盘112的数据,或者从硬盘112读取出来将要发送给控制器的数据。另一种情况下,控制单元111是一个可编程的电子部件,例如数据处理单元(data processing unit,DPU)。DPU具有CPU的通用性和可编程性,但更具有专用性,可以在网络数据包,存储请求或分析请求上高效运行。DPU通过较大程度的并行性(需要处理大量请求)与CPU区别开来。可选的,这里的DPU也可以替换成图形处理单元(graphics processing unit,GPU)、嵌入式神经网络处理器(neural-network processingunits,NPU)等处理芯片。通常情况下,控制单元111的数量可以是一个,也可以是两个或两个以上。当硬盘框11包含至少两个控制单元111时,硬盘112与控制单元111之间可具有归属关系。如果硬盘112与控制单元111之间具有归属关系,那么每个控制单元只能访问归属于它的硬盘,这往往涉及到在控制单元111之间转发读/写数据请求,导致数据访问的路径较长。另外,如果存储空间不足,在硬盘框11中增加新的硬盘112时需要重新绑定硬盘112与控制单元111之间的归属关系,操作复杂,导致存储空间的扩展性较差。因此在另一种实施方式中,控制单元111的功能可以卸载到网卡113上。换言之,在该种实施方式中,硬盘框11内部可以不具有控制单元111,而是由网卡113来完成数据读写、地址转换以及其他计算功能。此时,网卡113是一个智能网卡。它可以包含CPU和内存。在某些应用场景中,网卡113也可能具有持久化内存介质,如持久性内存(persistent memory,PM),或者非易失性随机访问存储器(non-volatile random access memory,NVRAM),或者相变存储器(phase changememory,PCM)等。硬盘框11中的网卡113和硬盘112之间没有归属关系,网卡113可访问该硬盘框11中任意一个硬盘112,因此在存储空间不足时扩展硬盘会较为便捷。
按照引擎10与硬盘框11之间通信协议的类型,硬盘框11可能是SAS硬盘框,也可能是NVMe硬盘框,IP硬盘框以及其他类型的硬盘框。SAS硬盘框,采用SAS3.0协议,每个框支持25块SAS硬盘。引擎10通过板载SAS接口或者SAS接口模块与硬盘框11连接。NVMe硬盘框,更像一个完整的计算机系统,NVMe硬盘插在NVMe硬盘框内。NVMe硬盘框再通过RDMA端口与引擎10连接。
图1所示的是一种盘控分离的集中式存储系统,在一些可能的实现方式中,本申请实施例提供的数据存储方法也可以应用于盘控一体的集中式存储系统。与盘控分离的集中式存储系统不同的是,在盘控一体的集中式存储系统中,引擎具有硬盘槽位,硬盘可直接部署在引擎中,后端接口属于可选配置,当系统的存储空间不足时,可通过后端接口连接更多的硬盘或硬盘框。
图2是本申请实施例提供的一种分布式存储系统的架构图。如图2所示,该存储系统包括计算节点集群和存储节点集群。计算节点集群包括一个或多个计算节点20(图2中示出了三个计算节点20,但不限于三个计算节点20),各个计算节点20之间可以相互通信。计算节点20是一种计算设备,如服务器、台式计算机或者存储阵列的控制器等。在硬件上,如图2所示,计算节点20至少包括处理器201、内存202和网卡203。其中,处理器201是一个中央处理器(central processing unit,CPU),用于处理来自计算节点20外部的数据访问请求,或者计算节点20内部生成的请求。示例性的,处理器201接收用户发送的写数据请求时,会将这些写数据请求中的数据暂时保存在内存202中。当内存202中的数据总量达到一定阈值时,处理器201通过本申请实施例提供的方法对内存202中存储的数据进行RC编码,之后,将编码后的数据发送给存储节点21进行持久化存储。除此之外,处理器201还用于对数据进行其他计算或处理,例如元数据管理、重复数据删除、数据压缩、虚拟化存储空间以及地址转换等。图2中仅示出了一个CPU 201,在实际应用中,CPU 201的数量往往有多个,其中,一个CPU 201又具有一个或多个CPU核。本实施例不对CPU的数量,以及CPU核的数量进行限定。
内存202是指与处理器直接交换数据的内部存储器,它可以随时读写数据,而且速度很快,作为操作系统或其他正在运行中的程序的临时数据存储器。内存包括至少两种存储器,例如内存既可以是随机存取存储器,也可以是ROM。举例来说,随机存取存储器可以是DRAM或SCM。然而,DRAM和SCM在本实施例中只是示例性的说明,内存还可以包括其他随机存取存储器,例如SRAM等。而对于ROM,举例来说,可以是PROM、EPROM等。另外,内存202还可以是DIMM,即由DRAM组成的模块,还可以是SSD。实际应用中,计算节点20中可配置多个内存202,以及不同类型的内存202。本实施例不对内存202的数量和类型进行限定。此外,可对内存202进行配置使其具有保电功能。保电功能是指系统发生掉电又重新上电时,内存202中存储的数据也不会丢失。具有保电功能的内存被称为非易失性存储器。
网卡203用于与存储节点21通信。例如,当内存202中的数据总量达到一定阈值时,计算节点20可通过网卡203向存储节点21发送请求以对所述数据进行持久化存储。另外,计算节点20还可以包括总线,用于计算节点20内部各组件之间的通信。在功能上,由于图2中的计算节点20的主要功能是计算业务,在存储数据时可以利用远程存储器来实现持久化存储,因此它具有比常规服务器更少的本地存储器,从而实现了成本和空间的节省。但这并不代表计算节点20不能具有本地存储器,在实际实现中,计算节点20也可以内置少量的硬盘,或者外接少量硬盘。
任意一个计算节点20可通过网络访问存储节点集群中的任意一个存储节点21。存储节点集群包括多个存储节点21(图4中示出了三个存储节点21,但不限于三个存储节点21)。一个存储节点21包括一个或多个控制器211、网卡212与多个硬盘213。网卡212用于与计算节点20通信。硬盘213用于存储数据,可以是磁盘或者其他类型的存储介质,例如固态硬盘或者叠瓦式磁记录硬盘等。控制器211用于根据计算节点20发送的读/写数据请求,往硬盘213中写入数据或者从硬盘213中读取数据。在读写数据的过程中,控制器211需要将读/写数据请求中携带的地址转换为硬盘能够识别的地址。由此可见,控制器211也具有一些简单的计算功能。
在实际应用中,控制器211可具有多种形态。一种情况下,控制器211包括CPU和内存。CPU用于执行地址转换以及读写数据等操作。内存用于临时存储将要写入硬盘213的数据,或者从硬盘213读取出来将要发送给计算节点20的数据。另一种情况下,控制器211是一个可编程的电子部件,例如DPU、GPU或NPU等处理芯片。通常情况下,控制器211的数量可以是一个,也可以是两个或两个以上。
在另一种实施方式中,控制器211的功能可以卸载到网卡212上。换言之,存储节点21内部不具有控制器211,而是由网卡212来完成数据读写、地址转换以及其他计算功能。此时,网卡212是一个智能网卡。它可以包含CPU和内存。存储节点21中的网卡212和硬盘213之间没有归属关系,网卡212可访问该存储节点21中任意一个硬盘213,因此在存储空间不足时扩展硬盘会较为便捷。
图2所示的分布式存储系统为存算分离的分布式存储系统,也即,计算功能和存储功能分布在不同节点上的存储系统。在一些可能的实现方式中,本申请实施例提供的数据存储方法也可以应用于存算一体的分布式存储系统中,与存算分离的分布式存储系统不同的是,在存算一体的分布式存储系统中的各个节点为同时具有计算能力和存储能力的设备。也即,各个节点均包括处理器、内存和多个硬盘,且各个节点之间可以相互通信。本申请实施例对此不再赘述。
由前述对存储系统的介绍可知,当存储系统中的引擎的CPU或计算节点中的CPU在接收到写数据请求时,可以将这些写数据请求中的数据暂时保存在内存102中。当内存102中的数据总量达到一定阈值时,CPU可以将内存中的数据发送至硬盘或存储节点进行持久化存储。其中,CPU在将内存中的数据发送至硬盘或存储节点中进行持久化存储之前,可以利用EC技术对数据进行编码,以便后续在硬盘或存储节点故障的情况下,进行数据重构。
EC技术是一种数据冗余技术,相对于多副本策略,EC具有更高的磁盘利用率。EC技术主要是通过EC算法将原始的数据单元进行编码得到校验单元,并将数据单元和校验单元一并存储起来,以达到容错的目的。EC的基本思想是将m块原始的数据单元通过一定的计算,得到n块校验单元,磁盘利用率为m/(m+n)。对于这m+n块的单元,当其中任意的n块单元出错(包括原始的数据单元和冗余的校验单元)时,均可以通过对应的重构算法恢复出原来的n块单元。生成校验单元的过程被成为编码(encoding),恢复丢失的单元的过程被称为解码(decoding)。m与n的比值称为EC配比。
例如,里德-所罗门(reed-solomon,RS)码就是一种常见的纠删码。图3是本申请实施例示出的一种RS码编码和解码的示意图。如图3所示,EC配比为4:2,每当接收到4个数据单元时,例如,当接收到A、B、C和D这四个数据单元,可以基于这四个数据单元计算得到对应的两个校验单元,分别为A+B+C+D和A+2B+4C+8D。之后,将四个数据单元分别存储到4个数据盘D1至D4上,将两个校验单元分别存储到对应的校验盘P和Q上。此时,位于数据盘D1至D4上的A、B、C和D这四个数据单元以及位于校验盘P和Q上的两个校验单元即组成了一个逻辑条带S1。之后,当接收到E至H这4个数据单元时,可以参考上述方式进行编码和存储,从而得到逻辑条带S2。
当上述四个数据盘和两个校验盘中的任一个盘故障时,可以基于其他盘上的数据来恢复故障盘上的数据,也即,进行解码。例如,当D1故障时,可以从D2至D4中读取B、C和D,并从任一校验盘中读取一个校验单元,例如,从P中读取校验单元A+B+C+D,基于读取到的数据单元B、C、D以及校验单元A+B+C+D,可以恢复出D1上的A。同理,通过从D2至D4中读取的数据单元F、G、H和从P中读取的E+F+G+H,可以恢复出D1上的E。由此可见,在上述解码过程中,在恢复任一条带中位于D1上的数据单元时,均需要读取该条带在其他盘上的至少4个单元,传输量较大,重构开销较高。
针对RS码重构开销较高的问题,目前业界提出了重构开销较低的RC。RC是在RS码的基础上,将数据单元进行分片,利用数据单元的分片进行编码,以此来减少解码时所需传输的数据量,从而降低重构开销。
图4是本申请实施例示出的一种相关技术中的RC编码和解码的示意图。仍以EC配比为4:2为例,当接收到四个数据单元时,将每个数据单元切分为两个数据分片,分别为上数据分片和下数据分片,从而得到4个上数据分片A至D和4个下数据分片E至H。之后,基于4个上数据分片和4个下数据分片计算得到2个校验单元,每个校验单元包括1个上校验分片和1个下校验分片。其中,1个校验单元的上校验分片为A+B+C+D,下校验分片为E+F+G+H,另一个校验单元的上校验分片为A+2B+4G+8H,下校验分片为E+2F+4C+8D。之后,将四个数据单元分别存储到4个数据盘D1至D4上,将两个校验单元分别存储到对应的校验盘P和Q上。其中,任一数据单元中的两个数据分片存储在对应的数据盘中连续的物理存储地址上,同样,任一校验单元的两个校验分片也存储在对应的校验盘中连续的物理存储地址上。此时,位于数据盘D1至D4上的这四个数据单元以及位于校验盘P和Q上的两个校验单元即组成了一个逻辑条带S1。之后,当再次接收到4个数据单元时,可以参考上述方式进行编码和存储,从而得到逻辑条带S2。
在采用RC进行编码存储之后,当上述四个数据盘和两个校验盘中的任一个盘故障时,可以基于其他盘上的分片来恢复故障盘上的数据,也即,进行解码。例如,当D1故障时,可以从D2至D4中读取B、C、D和F四个数据分片,并从P中读取校验分片A+B+C+D,从Q中读取校验分片E+2F+4C+8D,基于读取到的数据分片B、C、D、F以及校验分片A+B+C+D、E+2F+4C+8D,即可以恢复出逻辑条带S1中位于D1上的数据单元的两个数据分片A和E。同理,通过从D2至D4中读取的数据分片J、K、L、N、从P中读取的I+J+K+L以及从Q中读取的校验分片M+2N+4K+8L,即可以恢复出逻辑条带S2中位于D1上的数据单元的两个数据分片I和M。由此可见,相较于图3所示的RS码解码,RC解码过程中,在恢复任一条带中位于D1上的数据单元时,不需要读取该条带在其他盘上的4个单元,只需读取其他盘上该条带的6个数据分片即可,所需传输的数据量减少,重构开销降低。
但是,由上述解码过程可以看出,由于同一条带中的数据单元的数据分片在对应的数据盘上是连续存储的,且同一条带中的校验单元的校验分片在对应的校验盘上也是连续存储的,因此,在恢复故障盘上的多个条带时,读取数据分片可能会存在间隔读的情况,例如,在从D3上读取数据分片C和K时,由于C和K间隔存储,所以,需要通过两个读请求来读取,同理,D4和P上也均需要两个读请求来读取。由此可见,RC技术虽然相较于RS码技术减少了数据传输量重构开销,但是增加了读请求的数量,这样,将会占用大量的读写带宽,从而影响前台业务的IOPS,同时还会影响重构性能。
基于上述RC解码过程中的读请求数量大幅增加的问题,本申请实施例提出了一种数据存储方法。将同一个数据存储设备中不同条带中相同排序的数据分片连续存储,同一个校验存储设备中不同条带中相同排序的校验分片也连续存储。这样,当m个数据存储设备和n个校验存储设备中有设备发生故障时,则在进行数据重构时,可以从至少m个未故障的设备中的每个设备中通过一个读请求读取连续存储的属于不同条带的多个数据分片或校验分片来恢复故障设备中数据,减少了数据重构过程中的IO操作的数量,降低了对读写带宽的占用,提升了重构性能。
接下来对本申请实施例提供的数据存储方法进行详细的解释说明。
图5是本申请实施例提供的一种数据存储方法的流程图。该方法可以应用于集中式存储系统或分布式存储系统,例如,可以应用于图1或图2所示的存储系统中,当该方法应用于图1所示的集中式存储系统中时,该方法的执行主体可以为集中式存储系统中的引擎,当该方法应用于图2所述的分布式存储系统中,该方法的执行主体可以为计算节点。接下来以该方法应用于图1所示的集中式存储系统为例予以说明。参见图5,该方法包括以下步骤:
步骤501:获取m个第一数据单元和m个第二数据单元,每个数据单元包括k个数据分片,m和k均为不小于2的整数。
在本申请实施例中,引擎可以接收来自存储系统之外的外部设备的写请求,并将写请求中携带的数据存储至自身的内存中。当内存中缓存的数据达到参考阈值时,引擎可以从内存中获取m个数据块,并从该m个数据块中的每个数据块中获取一个第一数据单元和一个第二数据单元,从而得到m个第一数据单元和m个第二数据单元。其中,m为预设的EC配比中数据单元的数量,例如,预设的EC配比为4:2,则m等于4。另外,每个数据块的大小相同,也即,每个数据块的数据量相同。
需要说明的是,引擎可以基于预设的数据块大小,获取内存中一块连续的存储空间内的数据作为一个数据块,该连续的存储空间的存储容量等于预设的数据块大小。当然,引擎也可以基于预设的数据块大小,获取内存中不连续的存储空间内的数据作为一个数据块。本申请实施例对此不做限定。
在获得m个数据块之后,引擎可以基于第一数据量,将每个数据块划分为多个数据分片,之后,基于预设的分片数k,从每个数据块中获取一个第一数据单元和一个第二数据单元。其中,第一数据量为预设的数据分片大小。
示例性地,以任一数据块为例,为了方便说明,将该数据块称为第一数据块。引擎可以按照第一数据量将第一数据块划分为多个数据分片,每个数据分片的大小就等于该第一数据量。之后,基于预设的分片数k,按照该多个数据分片的先后顺序,将第一数据块划分为k个数据子块,每个数据子块包括r个数据分片,r等于任一数据块的数据量与任一数据单元的数据量的比值,且r为不小于2的整数;获取k个数据子块中的每个数据子块的第j个数据分片,以得到一个第一数据单元;获取k个数据子块中的每个数据子块的第j+1个数据分片,以得到一个第二数据单元。
其中,引擎可以从第一数据块的起始物理存储地址开始,按照第一数据量,依次将第一数据块划分为多个数据分片,每个数据分片为连续存储空间内存储的数据。
例如,参见图6,以8KB大小的一个数据块为例,假设第一数据量为512B,也即0.5KB,则引擎可以从该数据块的起始物理存储地址开始,将从该起始物理存储地址开始的512B的存储空间内的数据作为一个数据分片,之后,将与该存储空间连续的后一个512B的存储空间内的数据作为下一个数据分片,以此类推,从而得到8KB/0.5KB=16个数据分片。
可选地,引擎也可以不按照物理存储地址来进行连续的划分,也即,引擎可以每次从第一数据块中抽取第一数据量的数据作为一个数据分片,以此得到多个数据分片。在这种情况下,在得到多个数据分片之后,引擎还可以将该多个数据分片按照抽取先后顺序或者是其他原则进行排序。
在获得多个数据分片之后,引擎可以按照多个数据分片的先后顺序,基于预设的分片数k将该多个数据分片划分为k个数据子块,此时,每个数据子块将包括r个数据分片。
其中,多个数据分片的先后顺序可以是指该多个数据分片划分的顺序,例如,当按照前述的物理存储地址连续划分的方式进行划分时,该多个数据分片的划分顺序即为多个数据分片对应的物理存储地址的先后顺序。当按照前述抽取数据得到数据分片的方式,该多个数据分片的划分数据即为抽取先后顺序。
另外,预设的分片数k即为每个数据单元包括的分片数量,在此基础上,每个数据子块包括的数据分片的数量r就等于该数据块所能划分得到的数据单元的数量,也即,等于该数据块的大小与数据单元的大小的比值。
例如,仍以图6为例,当k等于2时,引擎可以将数据块包括的16个数据分片中的前8个数据分片划分为一个数据子块,将后8个数据分片划分为另一个数据子块,从而得到2个数据子块,其中,每个数据子块包括8个数据分片。此时,r等于8,也即,该数据块按照每个数据单元包括2个数据分片的原则来划分,可以划分得到8个数据单元。
在划分得到k个数据子块之后,引擎可以获取每个数据子块中的第j个数据分片,从而得到一个第一数据单元,其中,k个数据子块中的第i个数据子块中的第j个数据分片为第一数据单元中的第i个数据分片。获取每个数据子块中的第j+1个数据分片,从而得到一个第二数据单元。其中,k个数据子块中的第i个数据子块中的第j+1个数据分片为第二数据单元中的第i个数据分片。
例如,仍以图6为例,引擎可以获取第1个数据子块中的第1个数据分片和第2个数据子块中的第1个数据分片,由这两个数据分片组成一个数据单元,即第一数据单元。其中,第1个数据子块中的第1个数据分片为该第一数据单元中的第1个数据分片,第2个数据子块中的第1个数据分片为该第一数据单元中的第2个数据分片。获取第1个数据子块中的第2个数据分片和第2个数据子块中的第2个数据分片,由这两个数据分片组成一个数据单元,即第二数据单元。其中,第1个数据子块中的第2个数据分片为该第二数据单元中的第1个数据分片,第2个数据子块中的第2个数据分片为该第二数据单元中的第2个数据分片。
对于m个数据块中的每个数据块,引擎均可以参考对上述第一数据块的处理方式,将相应数据块划分为k个数据子块,并获取每个数据子块中的第j个数据分片组成一个第一数据单元,获取每个数据子块中的第j+1个数据分片组成一个第二数据单元。如此,从m个数据块中即能够获得m个第一数据单元和m个第二数据单元。
需要说明的是,由前述介绍可知,每个数据块可能不止能够被划分为2个数据单元,例如,对于图6所示的8KB的数据块,在每个数据单元包括2个数据分片,每个数据分片为512B的情况下,一个数据块将可以被划分为8个数据单元。也即,通过前述介绍的获取第一数据单元或第二数据单元的实现方式,还可以从该数据块中获取得到另外的6个数据单元。其中,每个数据单元均包括k个数据块中处于相同排位上的数据分片。在本申请实施例中,仅以获取数据块中任意两个相邻的数据单元为例进行说明,其他数据单元的获取方式可以参考上述实现方式,本申请实施例对此不再赘述。其中,任意两个相邻的数据单元是指这两个数据单元中的第i个数据分片是数据块中相邻的数据分片。
步骤502:对m个第一数据单元中的数据分片进行RC编码,得到n个第一校验单元,对m个第二数据单元中的数据分片进行RC编码,得到n个第二校验单元,每个校验单元包括k个校验分片,n为小于m的正整数。
在获得m个第一数据单元之后,引擎基于m个第一数据单元中的各个数据分片进行RC编码,从而得到n个第一校验单元。其中,n为预设的EC配比中的校验单元的数量,例如,预设的EC配比为4:2,则n等于2。每个第一校验单元包括k个校验分片,且任一第一校验单元中的第i个校验分片与m个第一数据单元中的第i个数据分片对应。
需要说明的是,n个第一校验单元中的每个第一校验单元对应一种运算规则,在这种情况下,相应校验单元中包括的校验分片均为通过对应的运算规则计算得到。换句话说,本申请实施例中的n个校验单元实际上是n种类型的校验单元。示例性地,当n等于2时,计算得到的校验单元则可以包括p校验单元和q校验单元两种。
例如,参见图7,以4个2KB的数据块1至4为例,每个数据分片的大小为512B,每个数据块可以划分为4个数据分片,每个数据单元包括2个数据分片,每个数据块可以划分为2个数据子块。其中,4个数据块中的第1个数据子块中的第1数据分片A至D和第2个数据子块中的第1个数据分片E至H组成了4个第一数据单元,其中,A至D为4个第一数据单元中的第1个数据分片,E至H为4个第一数据单元中的第2个数据分片。基于4个第一数据单元中的第1个数据分片确定得到p校验单元中的第1个校验分片A+B+C+D,基于4个第一数据单元中的第2个数据分片确定得到p校验单元中的第2个校验分片E+F+G+H。之后,基于前两个第一数据单元中的第1个数据分片和后两个第一数据单元中的第2个数据分片,计算得到q校验单元中的第1个校验分片A+2B+4G+8H,基于前两个第一数据单元中的第2个数据分片和后两个第一校验单元中的第1个数据分片,计算得到q校验单元中的第2个校验分片E+2F+4C+8D。
对于m个第二数据单元,引擎可以参考上述介绍的方法对该m个第二数据单元进行RC编码,从而得到n个第二校验单元。
步骤503:将m个第一数据单元和m个第二数据单元存储至m个数据盘,并将n个第一校验单元和n个第二校验单元存储至n个校验盘,其中,每个数据盘存储有一个第一数据单元和一个第二数据单元,且每个数据盘中的第一数据单元的第i个数据分片与第二数据单元中的第i个数据分片的物理存储地址连续,每个校验盘存储有一个第一校验单元和一个第二校验单元,且每个校验盘中的第一校验单元的第i个校验分片与第二校验单元的第i个校验分片的物理存储地址连续。
在本申请实施例中,存储系统中的硬盘可以分为数据盘和校验盘,其中,数据盘用于存储数据单元,校验盘用于存储校验单元。当EC配比为m:n时,则该存储系统中包括m个数据盘和n个校验盘。基于此,引擎可以将m个第一数据单元分布存储至m个数据盘,每个数据盘存储一个第一数据单元,同时,将n个第一校验单元分布存储至n个校验盘,每个校验盘存储一个第一校验单元。此时,m个第一数据单元和n个第一校验单元组成一个逻辑条带,将该逻辑条带称为第一条带。同理,引擎将m个第二数据单元分布存储至m个数据盘,将n个第二校验单元分布存储至n个校验盘,此时,m个第二数据单元和n个第二校验单元组成一个逻辑条带,将该逻辑条带称为第二条带。
需要说明的是,m个数据块中的每个数据块可以对应一个数据盘。基于此,引擎可以将m个第一数据单元和m个第二数据单元中来自同一数据块中的第一数据单元和第二数据单元发送至该数据块对应的数据盘上进行持久化存储。
其中,在将来自任一数据块的第一数据单元和第二数据单元分布存储至对应的数据盘时,在该数据盘上,第一数据单元和第二数据单元中处于相同排位上的数据分片连续存储,而第一数据单元中的k个数据分片中任意两个相邻的数据分片间隔存储,第二数据单元中的k个数据分片中任意两个相邻的数据分片间隔存储。换句话说,各个数据盘上任一逻辑条带中的数据分片间隔存储,而不同逻辑条带中相同排位上的数据分片连续存储。其中,所谓的连续存储则是指物理存储地址连续,也即,用于存储两个数据分片的存储空间连续。而间隔存储是指物理存储地址不连续,也即,用于存储两个数据分片的存储空间不连续。
值得注意的是,在该数据盘上,任一数据单元中的第i个数据分片和第i+1个数据分片之间可以存储有r-1个数据分片。可选地,第i个数据分片、该r-1个数据分片和第i+1个数据分片的物理存储地址连续。也即,第i个数据分片的存储空间、该r-1个数据分片的存储空间和第i+1个数据分片的存储空间组成连续的存储空间。
由前述介绍可知,r实际上就是每个数据块能够划分的数据单元的数量,所以,上述的数据单元中的第i个数据分片和第i+1个数据分片之间的r-1个数据分片即为从该数据盘对应的数据块中获取的除该数据单元之外的其他数据单元中的第i个数据分片和/或第i+1个数据分片。
以第一数据单元为例,第一数据单元中的第i个数据分片即为数据块的k个数据子块中第i个数据子块中的第j个数据分片,第一数据单元中的第i+1个数据分片即为数据块的k个数据子块中第i+1个数据子块中的第j个数据分片,因此,该第一数据单元中的第i个数据分片和第i+1个数据分片之间的r-1个数据分片即为数据块中的k个数据子块中第i个数据子块中的第j个数据分片与第i+1个数据子块中的第j个数据分片之间的数据分片。而数据块中第i个数据子块中第j个数据分片之后的任一数据分片均为其他数据单元的第i个数据分片,第i+1个数据子块中第j个数据分片之前的任一数据分片均为其他数据单元的第i+1个数据分片。
例如,仍以图7为例,数据块1对应数据盘D1,在该数据盘D1中,来自数据块1的第一数据单元中的第1个数据分片A和第二数据单元中的第1个数据分片I连续存储,第一数据单元中的第2个数据分片E和第二数据单元中的第2个数据分片M连续存储。但是,第一数据单元中的第1个数据分片A和第2个数据分片E间隔存储,第二数据单元中的第1个数据分片I和第2个数据分片M也间隔存储。并且,由图7可以看出,每个数据块可以划分为2个数据单元,也即,r等于2,而第一数据单元中的第1个数据分片和第2个数据分片之间即间隔1个数据分片,该数据分片即为除第一数据单元之外的其他数据单元(也即第二数据单元)的第1个数据分片。对于数据块2至4中的第一数据单元和第二数据单元中的数据分片在对应的数据盘D2至D4的存储方式,与数据块1在数据盘D1上的存储方式的原理相同,本申请实施例在此不再赘述。
由前述介绍可知,在进行RC编码时,基于m个数据单元生成的n个校验单元实际上是n种不同类型的校验单元。基于此,在本申请实施例中,每种校验单元可以对应一个校验盘,该校验盘即用于存储该类型的校验单元。例如,当n个校验单元为p校验单元和q校验单元时,则p校验单元对应校验盘P,q校验单元对应校验盘Q。在此基础上,引擎在将n个第一校验单元和n个第二校验单元分布存储至n个校验盘时,可以将n个第一校验单元和n个第二校验单元中同种类型的校验单元发送至对应的校验盘进行存储。
其中,在将任一类型的第一校验单元和第二校验单元分布存储至对应的校验盘时,在该校验盘上,第一校验单元和第二校验单元中处于相同排位上的校验分片连续存储,而第一校验单元中的k个校验分片中任意两个相邻的校验分片间隔存储,第二校验单元中的k个校验分片中任意两个相邻的校验分片间隔存储。换句话说,各个校验盘上任一逻辑条带中的校验分片间隔存储,而不同逻辑条带中相同排位上的校验分片连续存储。
值得注意的是,在该校验盘上,任一校验单元中的第i个校验分片和第i+1个校验分片之间可以存储有r-1个校验分片。可选地,第i个校验分片、该r-1个校验分片和第i+1个校验分片的物理存储地址连续。也即,第i个校验分片的存储空间、该r-1个校验分片的存储空间和第i+1个校验分片的存储空间组成连续的存储空间。
以基于m个第一数据单元计算得到的任一第一校验单元为例,该第一校验单元中的第i个校验分片与m个第一数据单元中的第i个数据分片对应,第一校验单元中的第i+1个校验分片与m个第一数据单元中的第i+1个数据分片对应,因此,该第一校验单元中的第i个校验分片和第i+1个校验分片之间的r-1个校验分片与m个第一数据单元中的第i个数据分片和第i+1个数据分片之间的r-1个数据分片一一对应。
例如,仍以图7为例,基于4个第一数据单元中的数据分片计算得到2个第一校验单元,基于4个第二数据单元中的数据分片计算得到2个第二校验单元,校验单元的类型有两种,为p校验单元和q校验单元。其中,第1个第一校验单元为p校验单元p1,p1中的第1个校验分片为A+B+C+D,第2个校验分片为E+F+G+H。第2个第一校验单元为q校验单元q1,q 1的第1个校验分片为A+2B+4G+8H,第2个校验分片为E+2F+4C+8D。其中,p1和q1中的第1个数据分片A+B+C+D、A+2B+4G+8H,与4个第一数据单元中的第1个数据分片A至D对应,p1和q1中的第2个数据分片E+F+G+H、E+2F+4C+8D与4个第一数据单元中的第2个数据分片E至H对应。同理,第1个第二校验单元p2和第2个第二校验单元q2中的第1个数据分片I+J+K+L、I+2J+4O+8P,与4个第二数据单元中的第1个数据分片I至L对应。第1个第二校验单元p2和第2个第二校验单元q2中的第2个数据分片M+N+O+P、M+2N+4K+8L,与4个第二数据单元中的第2个数据分片M至P对应。引擎可以将p校验单元存储至校验盘P,将q校验单元存储至校验盘Q。其中,p1和p2中的第1个校验分片A+B+C+D和I+J+K+L连续存储,p1和p2中的第2个校验分片E+F+G+H和M+N+O+P连续存储,而p1中的两个校验分片A+B+C+D和E+F+G+H则间隔存储,且二者之间间隔的1个校验分片I+J+K+L与第一数据单元的第1个数据分片和第二数据单元的第1个数据分片之间的数据分片I至J对应。同理,q1和q2在校验盘Q上的存储也是相同的原理,本申请实施例在此不再赘述。
在将m个第一数据单元和m个第二数据单元存储至m个数据盘,并将n个第一校验单元和n个第二校验单元存储至n个校验盘之后,当m个数据盘和n个校验盘中的t个硬盘故障时,则可以通过其他未故障的硬盘上的数据来恢复故障盘上的数据。其中,t为不大于n的正整数。
示例性地,当m个数据盘中的t个数据盘故障时,引擎向剩余的每个数据盘发送第一读取请求,并向n个校验盘中的每个校验盘发送第二读取请求;接收每个数据盘基于第一读取请求发送的第一数据单元和第二数据单元的数据分片,并接收每个校验盘基于第二读取请求发送的所述第一校验单元和第二校验单元的校验分片;基于接收到的数据分片和校验分片,确定t个数据盘存储的第一数据单元和第二数据单元。
当t个数据盘故障时,通过其他数据盘存储的各个逻辑条带中的至少一个排位的数据分片和校验盘存储的各个逻辑条带中的至少一个排位的校验分片即能恢复出故障盘上存储的各个逻辑条带中的数据。而由前述介绍的数据单元在数据盘中的存储方式以及校验单元在校验盘中的存储方式可知,每个数据盘中各个逻辑条带中相同排位的数据分片连续存储,每个校验盘中各个逻辑条带中相同排位的校验分片连续存储。因此,对于任一数据盘或校验盘,引擎通过一个读取请求即能够从相应的硬盘上读取到连续的存储空间内存储的多个逻辑条带的某个排位的分片,从而基于读取到的分片重构出故障盘上的多个逻辑条带中的数据。由此可见,本申请实施例在重构故障盘上的数据时,引擎在从其他未故障的硬盘中读取重构所需的数据时,对于任意一个硬盘,均只需一次IO操作即可以完成数据的读取,减少了数据重构过程中的IO操作的数量,降低了对读写带宽的占用,提升了重构性能。
例如,仍以图7为例,通过读取数据盘D2至D4上的数据分片B、C、D、F、校验盘P上的校验分片A+B+C+D以及校验盘Q上的E+2F+4C+8D即能够恢复出故障盘上第一数据单元中的数据分片A和E,通过读取数据盘D2至D4上的数据分片J、K、L、N、校验盘P上的I+J+K+L以及校验盘Q上的M+2N+4K+8L即能够恢复出故障盘上第二数据单元中的数据分片I和M。由此可见,引擎从D2中需要读取的数据分片为B、J、F和N,由于这四个数据分片连续存储,因此,引擎通过一个读请求即能从D2中一次性的获得上述四个数据分片。同理,引擎通过一个读请求能从D3中获得连续存储的数据分片C和K。通过一个读请求能够从D4中获得连续存储的数据分片D和L,通过一个读请求能从校验盘P中获得连续存储的校验分片A+B+C+D和I+J+K+L。通过一个读请求能够校验盘Q中获得连续存储的校验分片E+2F+4C+8D和M+2N+4K+8L。综上可见,通过5个读请求可以分别从5个硬盘中获得重构所需的数据,相较于图4所示的相关技术中RC数据重构过程中所需的读请求的数量大幅减少。
上述是以数据盘发生故障为例进行的说明,当校验盘发生故障时,在进行数据重构时,所需读取的硬盘的数量可能等于或小于对数据盘进行数据重构时所需读取的硬盘的数量,但是,对于任一待读取的硬盘,同样可以通过一个读请求即能读取到所需的数据,本申请实施例对此不再赘述。
在本申请实施例中,每个数据盘中的第一数据单元的第i个数据分片和第二数据单元的第i个数据分片的物理存储地址连续,也即,同一个数据盘中不同条带中相同排序的数据分片将连续存储。每个校验盘中的第一校验单元中的第i个校验分片和第二校验单元中的第i个校验分片的物理存储地址连续,也即,同一个校验盘中不同条带中相同排序的校验分片将连续存储。这样,如果m个数据盘和n个校验盘中少于n个的硬盘发生故障,则在进行数据重构时,对于任一待读取数据的未故障硬盘,通过一个IO请求就能从该未故障硬盘中读取到连续存储的属于不同条带的多个数据分片或校验分片,以实现数据重构,减少了数据重构过程中的IO操作的数量,降低了对读写带宽的占用,提升了重构性能。
上述是以本申请实施例的数据存储方法应用于集中式存储系统中,执行主体为集中式存储系统中的引擎为例进行的说明。当该数据存储方法应用于分布式存储系统中时,执行主体可以为计算节点。在这种情况下,上述的各个数据盘和各个校验盘分布在不同的存储节点上。也即,可以从该分布式存储系统中的m个存储节点中的每个存储节点中选取一个硬盘作为数据盘,从另外n个存储节点中的每个存储节点中选取一个硬盘作为校验盘。可选地,m个数据盘和n个校验盘中的部分或全部硬盘也可以分布在相同的存储节点上,本申请实施例对此不做限定。
接下来对本申请实施例提供的数据存储装置进行介绍。
图8是本申请实施例提供的一种数据存储装置的结构示意图。如图8所示,该数据存储装置包括:获取模块801、编码模块802和存储模块803。
获取模块801,用于执行上述实施例中的步骤501;
编码模块802,用于执行上述实施例中的步骤502;
存储模块803,用于执行上述实施例中的步骤50。
其中,上述的获取模块801、编码模块802和存储模块803可以部署于前述图1所示的集中式存储系统中的引擎的处理器中,也可以部署于图2所述的分布式存储系统中的计算节点的处理器中,本申请实施例对此不做限定。
可选地,每个数据盘中同一个数据单元的第i个数据分片的物理存储地址与第i+1个数据分片的物理存储地址不连续,每个校验盘中的同一个校验单元的第i个校验分片的物理存储地址与第i+1个校验分片的物理存储地址不连续。
可选地,获取模块801主要用于:
获取m个数据块,每个数据块的数据量相同;
从m个数据块中的每个数据块中获取一个第一数据单元和一个第二数据单元,得到m个第一数据单元和m个第二数据单元。
可选地,获取模块801主要用于:
基于第一数据量,将第一数据块划分为多个数据分片,第一数据块为m个数据块中的任一个,每个数据分片的数据量等于第一数据量;
按照多个数据分片的先后顺序,将第一数据块划分为k个数据子块,每个数据子块包括r个数据分片,r等于任一数据块的数据量与任一数据单元的数据量的比值,且r为不小于2的整数;
获取k个数据子块中的每个数据子块的第j个数据分片,以得到一个第一数据单元;
获取k个数据子块中的每个数据子块的第j+1个数据分片,以得到一个第二数据单元。
可选地,m个数据块与m个数据盘一一对应,存储模块803主要用于:
将从第一数据块中获得的第一数据单元和第二数据单元存储至第一数据块对应的第一数据盘。
可选地,第一数据盘中的第一数据单元的第i个数据分片的物理存储地址与第i+1个数据分片的物理存储地址之间存储有r-1个数据分片,r-1个数据分片为k个数据子块中第i个数据子块中的第j个数据分片与第i+1个数据子块中的第j个数据分片之间的数据分片,每个校验盘中的第一校验单元的第i个校验分片的物理存储地址与第i+1个校验分片的物理存储地址之间存储有r-1个校验分片,r-1个校验分片与r-1个数据分片一一对应。
可选地,参见图9,该装置800还包括:
发送模块804,用于当m个数据盘中的t个数据盘故障时,向剩余的每个数据盘发送第一读取请求,并向n个校验盘中的每个校验盘发送第二读取请求,t为不大于n的正整数;
接收模块805,用于接收剩余的每个数据盘基于第一读取请求发送的第一数据单元和第二数据单元的数据分片,并接收每个校验盘基于第二读取请求发送的第一校验单元和第二校验单元的校验分片;
解码模块806,用于基于接收到的数据分片和校验分片,确定t个数据盘存储的第一数据单元和第二数据单元。
需要说明的是:上述实施例提供的数据存储装置在进行数据存储时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据存储装置与数据存储方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(digital subscriber line,DSL))或无线(例如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(digital versatile disc,DVD))、或者半导体介质(例如:固态硬盘(solid state disk,SSD))等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述并不用以限制本申请实施例,凡在本申请实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请实施例的保护范围之内。
Claims (15)
1.一种数据存储方法,其特征在于,所述方法包括;
获取m个第一数据单元和m个第二数据单元,每个数据单元包括k个数据分片,所述m和所述k均为不小于2的整数;
对所述m个第一数据单元中的数据分片进行再生码RC编码,得到n个第一校验单元,对所述m个第二数据单元中的数据分片进行RC编码,得到n个第二校验单元,每个校验单元包括k个校验分片,所述n为小于所述m的正整数;
将所述m个第一数据单元和所述m个第二数据单元存储至m个数据盘,并将所述n个第一校验单元和所述n个第二校验单元存储至n个校验盘,其中,每个数据盘存储有一个第一数据单元和一个第二数据单元,且每个数据盘中的第一数据单元的第i个数据分片与第二数据单元中的第i个数据分片的物理存储地址连续,每个校验盘存储有一个第一校验单元和一个第二校验单元,且每个校验盘中的第一校验单元的第i个校验分片与第二校验单元的第i个校验分片的物理存储地址连续。
2.根据权利要求1所述的方法,其特征在于,每个数据盘中同一个数据单元的第i个数据分片的物理存储地址与第i+1个数据分片的物理存储地址不连续,每个校验盘中的同一个校验单元的第i个校验分片的物理存储地址与第i+1个校验分片的物理存储地址不连续。
3.根据权利要求1或2所述的方法,其特征在于,所述获取m个第一数据单元和m个第二数据单元,包括:
获取m个数据块,每个数据块的数据量相同;
从所述m个数据块中的每个数据块中获取一个第一数据单元和一个第二数据单元,得到所述m个第一数据单元和所述m个第二数据单元。
4.根据权利要求3所述的方法,其特征在于,所述从所述m个数据块中的每个数据块中获取一个第一数据单元和一个第二数据单元,包括:
基于第一数据量,将第一数据块划分为多个数据分片,所述第一数据块为所述m个数据块中的任一个,每个数据分片的数据量等于所述第一数据量;
按照所述多个数据分片的先后顺序,将所述第一数据块划分为k个数据子块,每个数据子块包括r个数据分片,所述r等于任一数据块的数据量与任一数据单元的数据量的比值,且所述r为不小于2的整数;
获取所述k个数据子块中的每个数据子块的第j个数据分片,以得到一个第一数据单元;
获取所述k个数据子块中的每个数据子块的第j+1个数据分片,以得到一个第二数据单元。
5.根据权利要求4所述的方法,其特征在于,所述m个数据块与所述m个数据盘一一对应,所述将所述m个第一数据单元和所述m个第二数据单元存储至m个数据盘,包括:
将从所述第一数据块中获得的第一数据单元和第二数据单元存储至所述第一数据块对应的第一数据盘。
6.根据权利要求5所述的方法,其特征在于,所述第一数据盘中的第一数据单元的第i个数据分片的物理存储地址与第i+1个数据分片的物理存储地址之间存储有r-1个数据分片,所述r-1个数据分片为所述k个数据子块中第i个数据子块中的第j个数据分片与第i+1个数据子块中的第j个数据分片之间的数据分片,每个校验盘中的第一校验单元的第i个校验分片的物理存储地址与第i+1个校验分片的物理存储地址之间存储有r-1个校验分片,所述r-1个校验分片与所述r-1个数据分片一一对应。
7.根据权利要求1-6任一所述的方法,其特征在于,所述方法还包括:
当所述m个数据盘中的t个数据盘故障时,向剩余的每个数据盘发送第一读取请求,并向所述n个校验盘中的每个校验盘发送第二读取请求,所述t为不大于n的正整数;
接收剩余的每个数据盘基于所述第一读取请求发送的所述第一数据单元和所述第二数据单元的数据分片,并接收每个校验盘基于所述第二读取请求发送的所述第一校验单元和所述第二校验单元的校验分片;
基于接收到的数据分片和校验分片,确定所述t个数据盘存储的第一数据单元和第二数据单元。
8.一种数据存储装置,其特征在于,所述装置包括;
获取模块,用于获取m个第一数据单元和m个第二数据单元,每个数据单元包括k个数据分片,所述m和所述k均为不小于2的整数;
编码模块,用于对所述m个第一数据单元中的数据分片进行再生码RC编码,得到n个第一校验单元,对所述m个第二数据单元中的数据分片进行RC编码,得到n个第二校验单元,每个校验单元包括k个校验分片,所述n为小于所述m的正整数;
存储模块,用于将所述m个第一数据单元和所述m个第二数据单元存储至m个数据盘,并将所述n个第一校验单元和所述n个第二校验单元存储至n个校验盘,其中,每个数据盘存储有一个第一数据单元和一个第二数据单元,且每个数据盘中的第一数据单元的第i个数据分片与第二数据单元中的第i个数据分片的物理存储地址连续,每个校验盘存储有一个第一校验单元和一个第二校验单元,且每个校验盘中的第一校验单元的第i个校验分片与第二校验单元的第i个校验分片的物理存储地址连续。
9.根据权利要求8所述的装置,其特征在于,每个数据盘中同一个数据单元的第i个数据分片的物理存储地址与第i+1个数据分片的物理存储地址不连续,每个校验盘中的同一个校验单元的第i个校验分片的物理存储地址与第i+1个校验分片的物理存储地址不连续。
10.根据权利要求8或9所述的装置,其特征在于,所述获取模块主要用于:
获取m个数据块,每个数据块的数据量相同;
从所述m个数据块中的每个数据块中获取一个第一数据单元和一个第二数据单元,得到所述m个第一数据单元和所述m个第二数据单元。
11.根据权利要求10所述的装置,其特征在于,所述获取模块主要用于:
基于第一数据量,将第一数据块划分为多个数据分片,所述第一数据块为所述m个数据块中的任一个,每个数据分片的数据量等于所述第一数据量;
按照所述多个数据分片的先后顺序,将所述第一数据块划分为k个数据子块,每个数据子块包括r个数据分片,所述r等于任一数据块的数据量与任一数据单元的数据量的比值,且所述r为不小于2的整数;
获取所述k个数据子块中的每个数据子块的第j个数据分片,以得到一个第一数据单元;
获取所述k个数据子块中的每个数据子块的第j+1个数据分片,以得到一个第二数据单元。
12.根据权利要求11所述的装置,其特征在于,所述m个数据块与所述m个数据盘一一对应,所述存储模块主要用于:
将从所述第一数据块中获得的第一数据单元和第二数据单元存储至所述第一数据块对应的第一数据盘。
13.根据权利要求12所述的装置,其特征在于,所述第一数据盘中的第一数据单元的第i个数据分片的物理存储地址与第i+1个数据分片的物理存储地址之间存储有r-1个数据分片,所述r-1个数据分片为所述k个数据子块中第i个数据子块中的第j个数据分片与第i+1个数据子块中的第j个数据分片之间的数据分片,每个校验盘中的第一校验单元的第i个校验分片的物理存储地址与第i+1个校验分片的物理存储地址之间存储有r-1个校验分片,所述r-1个校验分片与所述r-1个数据分片一一对应。
14.根据权利要求8-13任一所述的装置,其特征在于,所述装置还包括:
发送模块,用于当所述m个数据盘中的t个数据盘故障时,向剩余的每个数据盘发送第一读取请求,并向所述n个校验盘中的每个校验盘发送第二读取请求,所述t为不大于n的正整数;
接收模块,用于接收剩余的每个数据盘基于所述第一读取请求发送的所述第一数据单元和所述第二数据单元的数据分片,并接收每个校验盘基于所述第二读取请求发送的所述第一校验单元和所述第二校验单元的校验分片;
解码模块,用于基于接收到的数据分片和校验分片,确定所述t个数据盘存储的第一数据单元和第二数据单元。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括指令,当所述指令在计算机上运行时,使得所述计算机执行权利要求1至7任一项所述的数据存储方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210988713.8A CN117632572A (zh) | 2022-08-17 | 2022-08-17 | 数据存储方法、装置及存储介质 |
PCT/CN2023/088987 WO2024037010A1 (zh) | 2022-08-17 | 2023-04-18 | 数据存储方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210988713.8A CN117632572A (zh) | 2022-08-17 | 2022-08-17 | 数据存储方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117632572A true CN117632572A (zh) | 2024-03-01 |
Family
ID=89940541
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210988713.8A Pending CN117632572A (zh) | 2022-08-17 | 2022-08-17 | 数据存储方法、装置及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117632572A (zh) |
WO (1) | WO2024037010A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010519814A (ja) * | 2007-02-19 | 2010-06-03 | フリースケール セミコンダクター インコーポレイテッド | データ通信ユニット、データ通信ネットワーク、及び復号化方法 |
CN103746774B (zh) * | 2014-01-03 | 2017-07-14 | 中国人民解放军国防科学技术大学 | 一种高效数据读取的容错编码方法 |
CN110427156B (zh) * | 2019-07-16 | 2020-09-08 | 华中科技大学 | 一种基于分片的mbr的并行读方法 |
CN110750382B (zh) * | 2019-09-18 | 2020-10-30 | 华中科技大学 | 用于提高数据修复性能的最小存储再生码编码方法及系统 |
-
2022
- 2022-08-17 CN CN202210988713.8A patent/CN117632572A/zh active Pending
-
2023
- 2023-04-18 WO PCT/CN2023/088987 patent/WO2024037010A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2024037010A1 (zh) | 2024-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8560879B1 (en) | Data recovery for failed memory device of memory device array | |
CN110427156B (zh) | 一种基于分片的mbr的并行读方法 | |
CN109814807B (zh) | 一种数据存储方法及装置 | |
CN111400083B (zh) | 数据存储方法及系统、存储介质 | |
US11593000B2 (en) | Data processing method and apparatus | |
WO2017140262A1 (zh) | 数据更新技术 | |
US20210026731A1 (en) | Method and system for enhancing throughput of big data analysis in a nand-based read source storage | |
CN113360093B (zh) | 内存系统和设备 | |
US11630729B2 (en) | Reliability coding with reduced network traffic | |
WO2021139571A1 (zh) | 存储系统中的数据存储方法、数据读取方法、装置及系统 | |
US20230137007A1 (en) | Data storage method, storage system, storage device, and storage medium | |
US20240070120A1 (en) | Data processing method and apparatus | |
CN116501553B (zh) | 数据恢复方法、装置、系统、电子设备及存储介质 | |
WO2023020136A1 (zh) | 存储系统中的数据存储方法及装置 | |
CN117632572A (zh) | 数据存储方法、装置及存储介质 | |
CN116774911A (zh) | 内存管理方法和装置 | |
CN117348789A (zh) | 数据访问方法、存储设备、硬盘、存储系统及存储介质 | |
CN111831230A (zh) | 一种面向高性能计算及大数据的智能存储系统 | |
Dong | Coop-u: a cooperative update scheme for erasure-coded storage systems | |
CN115793957A (zh) | 写数据的方法、装置及计算机存储介质 | |
CN111984443A (zh) | 一种分布式系统环境下的编码方法、解码方法和对应装置 | |
Thomasian | RAID Organizations for Improved Reliability and Performance: A Not Entirely Unbiased Tutorial | |
US11347409B1 (en) | Method and apparatus for selective compression of data during initial synchronization of mirrored storage resources | |
CN115391093B (zh) | 一种数据处理方法及系统 | |
KR102477051B1 (ko) | 네트워크를 이용한 스토리지 장치의 데이터 복구 방법 및 이를 수행하는 스토리지 장치 |
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 |