一种数据存储方法、装置、电子设备及存储介质与流程

未命名 08-03 阅读:88 评论:0

1.本发明实施例涉及数据处理技术领域,特别是涉及一种数据存储方法、装置、电子设备及存储介质。


背景技术:

2.在数据存储领域,纠删码技术可基于目标数据计算得到校验数据,将目标数据分为m个目标数据段,将校验数据分为n个校验数据段,并将m个目标数据段与n个校验数据段分别存放在m+n个磁盘上,每一个磁盘上存放一个目标数据段或一个校验数据段,当不超过n个磁盘发生故障时,只需任意选取m个正常的数据段便能恢复目标数据。
3.相关的纠删码技术将数据段写入纠删码条带中,其中,一个纠删码条带由若干大小相同的用于存储数据的分片组成,例如可由m个数据分片与n个校验分片组成,数据分片存储目标数据,校验分片存储校验数据,各个分片分别位于不同的磁盘中。
4.由于相关纠删码技术中仅能对固定长度的目标数据进行计算得到校验数据,例如,固定长度可以为m个数据分片能够容纳的数据的长度,在目标数据未达到固定长度的情况下,现有的纠删码技术中会对目标数据补0,以使得补0后的目标数据达到固定长度。但对目标数据进行补0,使得目标数据的长度增加,额外占用了纠删码条带中用于存储目标数据的空间。因此,基于当前的纠删码技术存储数据的情况下存在存储空间利用率不高的问题。


技术实现要素:

5.本发明实施例的目的在于提供一种数据存储方法、装置、电子设备及存储介质,以提高存储空间利用率。具体技术方案如下:第一方面,本发明实施例提供了一种数据存储方法,纠删码条带中包括数据分片与校验分片,每一校验分片中包含与所述数据分片的数目相同的数据块,每一校验分片中的各个数据块分别对应不同的数据分片,各个数据块与各个数据分片的存储空间大小相同,所述方法包括:确定目标数据待写入的目标数据分片;在所述目标数据分片和各个校验分片内的目标数据块中写入所述目标数据,其中,所述目标数据块与所述目标数据分片相对应,所述目标数据分片与所述目标数据块中写入所述目标数据的位置相同;在所述纠删码条带中各个数据分片均不存在空闲空间的情况下,基于所述纠删码条带中的校验分片中存储的数据计算得到校验数据;将所述校验数据中的各个校验数据段存储至不同的校验分片中;清空每一校验分片中除校验数据段之外的数据。
6.本发明一个实施例中,所述方法还包括:在接收到使用覆盖数据覆盖所述纠删码条带中的已有数据的指令的情况下,确定所述覆盖数据待写入的覆盖数据分片及在所述覆盖数据分片中空闲空间内的待写入位置;
在所述覆盖数据分片中的所述待写入位置中写入所述覆盖数据,并在各个校验分片内的覆盖数据块中写入所述覆盖数据,其中,所述覆盖数据块与所述覆盖数据分片相对应,所述覆盖数据分片与所述覆盖数据块中写入所述覆盖数据的位置相同;将所述已有数据确定为停用数据,并将所述已有数据的元数据中包含的所述已有数据的地址更新为所述覆盖数据的地址。
7.本发明一个实施例中,在所述清空每一校验分片中除校验数据段之外的数据之后,还包括:确定所包含的数据中停用数据的比例达到预设比例的停用纠删码条带;将所述停用纠删码条带中停用数据之外的其他数据写入其他纠删码条带中;清空所述停用纠删码条带中的数据。
8.本发明一个实施例中,所述在所述纠删码条带中各个数据分片均不存在空闲空间的情况下,基于所述纠删码条带中的校验分片中存储的数据计算得到校验数据,包括:在多个纠删码条带的各个数据分片均不存在空闲空间的情况下,一次性读取所述多个纠删码条带中的校验分片中的数据;分别基于所读取的每一纠删码条带对应的数据,计算得到该纠删码条带对应的校验数据。
9.本发明一个实施例中,所述基于所述纠删码条带中的校验分片中存储的数据计算得到校验数据,包括:针对所述纠删码条带中的每一校验分片,控制该校验分片所处的存储设备执行以下操作:读取该校验分片中存储的数据;基于所读取的数据计算得到校验数据;所述将所述校验数据中的各个校验数据段存储至不同的校验分片中,包括:向该校验分片中存储所述校验数据中预期存储于该校验分片中的校验数据段。
10.第二方面,本发明实施例提供了一种数据存储装置,纠删码条带中包括数据分片与校验分片,每一校验分片中包含与所述数据分片的数目相同的数据块,每一校验分片中的各个数据块分别对应不同的数据分片,各个数据块与各个数据分片的存储空间大小相同,所述装置包括:第一确定模块,用于确定目标数据待写入的目标数据分片;第一写入模块,用于在所述目标数据分片和各个校验分片内的目标数据块中写入所述目标数据,其中,所述目标数据块与所述目标数据分片相对应,所述目标数据分片与所述目标数据块中写入所述目标数据的位置相同;计算模块,用于在所述纠删码条带中各个数据分片均不存在空闲空间的情况下,基于所述纠删码条带中的校验分片中存储的数据计算得到校验数据;存储模块,用于将所述校验数据中的各个校验数据段存储至不同的校验分片中;第一清空模块,用于清空每一校验分片中除校验数据段之外的数据。
11.本发明一个实施例中,所述装置还包括:第二确定模块,用于在接收到使用覆盖数据覆盖所述纠删码条带中的已有数据的指令的情况下,确定所述覆盖数据待写入的覆盖数据分片及在所述覆盖数据分片中空闲空
间内的待写入位置;第二写入模块,用于在所述覆盖数据分片中的所述待写入位置中写入所述覆盖数据,并在各个校验分片内的覆盖数据块中写入所述覆盖数据,其中,所述覆盖数据块与所述覆盖数据分片相对应,所述覆盖数据分片与所述覆盖数据块中写入所述覆盖数据的位置相同;停用模块,用于将所述已有数据确定为停用数据,并将所述已有数据的元数据中包含的所述已有数据的地址更新为所述覆盖数据的地址。
12.本发明一个实施例中,所述装置还包括:第三确定模块,用于确定所包含的数据中停用数据的比例达到预设比例的停用纠删码条带;第三写入模块,用于将所述停用纠删码条带中停用数据之外的其他数据写入其他纠删码条带中;第二清空模块,用于清空所述停用纠删码条带中的数据。
13.本发明一个实施例中,所述计算模块,具体用于:在多个纠删码条带的各个数据分片均不存在空闲空间的情况下,一次性读取所述多个纠删码条带中的校验分片中的数据;分别基于所读取的每一纠删码条带对应的数据,计算得到该纠删码条带对应的校验数据。
14.本发明一个实施例中,所述计算模块,具体用于:针对所述纠删码条带中的每一校验分片,控制该校验分片所处的存储设备执行以下操作:读取该校验分片中存储的数据;基于所读取的数据计算得到校验数据;所述存储模块,具体用于:向该校验分片中存储所述校验数据中预期存储于该校验分片中的校验数据段。
15.第三方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现第一方面任一项所述的方法步骤。
16.第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面任一项所述的方法步骤。
17.本发明实施例有益效果:本发明实施例提供一种数据存储方法,纠删码条带中包括数据分片与校验分片,每一校验分片中包含与上述数据分片的数目相同的数据块,每一校验分片中的各个数据块分别对应不同的数据分片,各个数据块与各个数据分片的存储空间大小相同,上述方法包括:确定目标数据待写入的目标数据分片;在上述目标数据分片和各个校验分片内的目标数据块中写入上述目标数据,其中,上述目标数据块与上述目标数据分片相对应,上述目标
数据分片与上述目标数据块中写入上述目标数据的位置相同;在上述纠删码条带中各个数据分片均不存在空闲空间的情况下,基于上述纠删码条带中的校验分片中存储的数据计算得到校验数据;将上述校验数据中的各个校验数据段存储至不同的校验分片中; 清空每一校验分片中除校验数据段之外的数据。
18.由以上可见,在本发明实施例提供的方案中,向纠删码条带的数据分片中写入数据,在该纠删码条带的每一数据分片均被写满的情况下,再计算该纠删码条带的校验数据,从而无需在纠删码条带的数据分片中进行补0,提高了纠删码条带的存储空间利用率。尤其,在数据写入量小或小文件写入的情况下,应用本发明实施例提供的方案无需在纠删码条带的数据分片中大量补0,显著解决了在数据写入量小或小文件写入的场景下纠删码条带存储空间大量浪费的问题。
19.另外,若在还未计算得到纠删码条带的校验数据的情况下数据分片出现故障,由于在该纠删码条带的目标数据分片和各个校验分片内的目标数据块中均写入目标数据,在该纠删码条带包含n个校验分片的情况下,目标数据被存储n+1份,只要总计不超过n个数据分片或校验分片发生故障,便仍可恢复目标数据。
20.此外,本发明实施例清空每一校验分片中除校验数据段之外的数据,使得最终的纠删码计算结果与相关技术中的纠删码计算结果一致。
附图说明
21.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。
22.图1为相关纠删码技术中纠删码条带的一种结构示意图;图2为相关纠删码技术中写入目标数据后的纠删码条带的第一种结构示意图;图3为相关纠删码技术中写入目标数据后的纠删码条带的第二种结构示意图;图4为本发明实施例提供的第一种数据存储方法的流程示意图;图5为本发明实施例提供的纠删码条带的一种结构示意图;图6为本发明实施例提供的写入目标数据后的纠删码条带的第一种结构示意图;图7为本发明实施例提供的写入目标数据后的纠删码条带的第二种结构示意图;图8为本发明实施例提供的写入目标数据后的纠删码条带的第三种结构示意图;图9为本发明实施例提供的写入目标数据后的纠删码条带的第四种结构示意图;图10为本发明实施例提供的写入目标数据后的纠删码条带的第五种结构示意图;图11为本发明实施例提供的第二种数据存储方法的流程示意图;图12为本发明实施例提供的写入覆盖数据后的纠删码条带的一种结构示意图;图13为本发明实施例提供的第三种数据存储方法的流程示意图;图14为本发明实施例提供的第四种数据存储方法的流程示意图;图15为本发明实施例提供的第五种数据存储方法的流程示意图;图16为本发明实施例提供的第六种数据存储方法的流程示意图;图17为本发明实施例提供的第一种数据存储装置的结构示意图;
图18为本发明实施例提供的第二种数据存储装置的结构示意图;图19为本发明实施例提供的第三种数据存储装置的结构示意图;图20为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
23.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员基于本发明所获得的所有其他实施例,都属于本发明保护的范围。
24.相关纠删码技术中纠删码条带的一种结构示意图如图1所示,图1中示出了两个纠删码条带:纠删码条带1与纠删码条带2。从图1中可以看出,各纠删码条带均包含m个数据分片与n个校验分片,一个小长方形框表示一个分片。示例性的,数据分片1-1为纠删码条带1的第一个数据分片,数据分片1-2为纠删码条带1的第二个数据分片,数据分片1-m为纠删码条带1的第m个数据分片,校验分片1-1为纠删码条带1的第一个校验分片,校验分片1-n为纠删码条带1的第n个校验分片,以此类推。相关纠删码技术中,各个分片分别位于不同的线性空间中,不同的线性空间位于同一电子设备不同磁盘中,也可以位于不同电子设备(如服务器)的存储空间中,示例性的,从图1中可以看出,数据分片1-m与数据分片2-m均位于线性空间m,校验分片1-1与校验分片2-1均位于线性空间m+1,校验分片1-n与校验分片2-n均位于线性空间m+n,以此类推。
25.相关纠删码技术中,在一个纠删码条带中的所有数据分片正好能写满目标数据的情况下,无需在数据分片中进行补0。示例性的,参见图2,为相关纠删码技术中写入目标数据后的纠删码条带的第一种结构示意图,其中,小长方形框中的灰色表示在灰色所在区域写有数据,空白处表示该处还未写有数据。从图2中可以看出,目标数据的长度正好为纠删码条带1中所有数据分片能够容纳的数据的长度,故在纠删码条带1的数据分片中无需补0,直接基于写入纠删码条带1中的目标数据便能够计算得到校验数据,并将校验数据分为n个校验数据段,分别写入n个校验分片中。
26.相关纠删码技术中,若一个纠删码条带中写有目标数据,但存在数据分片未写满数据,便需要对该纠删码条带中未写满数据的数据分片进行补0,以使得该纠删码条带中的各数据分片均写满数据,进而计算该纠删码条带的校验数据。示例性的,如图3所示,为相关纠删码技术中写入目标数据后的纠删码条带的第二种结构示意图,从图3中可以看出,目标数据不足以写满纠删码条带1中所有的数据分片,因此,对纠删码条带1各数据分片中未写有目标数据的部分补0,使得纠删码条带1中的各数据分片均写满数据,进而计算得到纠删码条带1的校验数据。在这种情况下,补0额外占用了纠删码条带中用于存储目标数据的空间,因此,相关纠删码技术存在存储空间利用率不高的问题。
27.为了解决上述问题,本发明实施例提供了一种数据存储方法、装置、电子设备及存储介质,下面分别进行具体说明。
28.首先,对本发明实施例提供的一种数据存储方法进行说明。
29.参见图4,为本发明实施例提供的第一种数据存储方法的流程示意图,上述方法包括以下步骤s401至步骤s405。
30.本发明实施例中,纠删码条带中包括数据分片与校验分片,每一校验分片中包含与上述数据分片的数目相同的数据块,每一校验分片中的各个数据块分别对应不同的数据分片,各个数据块与各个数据分片的存储空间大小相同。
31.图5为本发明实施例提供的纠删码条带的一种结构示意图,从图5中可以看出,与图1所示的相关技术中纠删码条带的结构相比,在本发明实施例提供的纠删码条带中,一个纠删码条带包含m个数据分片,则该纠删码条带的每一个校验分片均包含m个数据块,每一个校验分片中的各个数据块分别对应不同的数据分片,各个数据块与各个数据分片的存储空间大小相同。
32.示例性的,图5中的校验分片1-1包含数据块1、数据块2等m个数据块,其中,校验分片1-1的数据块1对应数据分片1-1,校验分片1-1的数据块2对应数据分片1-2,校验分片1-1的数据块m对应数据分片1-m;图5中的校验分片1-n包含数据块1、数据块2等m个数据块,其中,校验分片1-n的数据块1对应数据分片1-1,校验分片1-n的数据块2对应数据分片1-2,校验分片1-n的数据块m对应数据分片1-m,以此类推。图5中示出的各线性空间可以是一块磁盘,也可以是一个服务器或一个本地文件系统内部的文件,各线性空间的地址在逻辑上是单调递增的,实际物理空间到逻辑空间的映射由存储的空间管理模块完成。
33.步骤s401:确定目标数据待写入的目标数据分片。
34.本发明实施例中,预先构建有多个纠删码条带,在将目标数据写入纠删码条带前,可根据目标数据的元数据信息确定目标数据待写入的纠删码条带、线性空间,在确定目标数据待写入的纠删码条带、线性空间后,便确定了目标数据待写入的目标数据分片。
35.示例性的,按照图5示出的纠删码条带结构示意图,若确定目标数据待写入的纠删码条带为纠删码条带1,目标数据待写入的线性空间为线性空间1,则确定目标数据待写入的目标数据分片为数据分片1-1。上述目标数据可以是i/o(input/output,输入/输出)数据。具体的,确定目标数据待写入的目标数据分片的具体方式可参考相关技术,在此不赘述。
36.步骤s402:在上述目标数据分片和各个校验分片内的目标数据块中写入上述目标数据。
37.其中,上述目标数据块与上述目标数据分片相对应,上述目标数据分片与上述目标数据块中写入上述目标数据的位置相同。具体的,在上述目标数据分片的空闲空间以及上述目标数据块的空闲空间内写入上述目标数据。
38.示例性的,参见图6,为本发明实施例提供的写入目标数据后的纠删码条带的第一种结构示意图。从图6中可以看出,将目标数据d1写入了数据分片1-1,也就是上述目标数据分片为数据分片1-1。在图6中,纠删码条带1中与数据分片1-1对应的各个校验分片内的目标数据块为各个校验分片各自的数据块1,因此,在纠删码条带1中各个校验分片各自的数据块1中也写入目标数据d1。并且,从图6中可以看出,在数据分片以及各数据块中写入目标数据d1的位置是相同的。
39.按照写入目标数据d1的方式,可继续向纠删码条带中写入后续的目标数据。示例性的,参见图7,为本发明实施例提供的写入目标数据后的纠删码条带的第二种结构示意图。从图7中可以看出,继续写入的目标数据d2、d4写入了数据分片1-2,继续写入的目标数据d3写入了数据分片1-m;并且,纠删码条带1中与数据分片1-2对应的各个校验分片内的目
标数据块为各个校验分片各自的数据块2,纠删码条带1中与数据分片1-m对应的各个校验分片内的目标数据块为各个校验分片各自的数据块m,因此,在纠删码条带1中各个校验分片各自的数据块2中写入目标数据d2、d4,在纠删码条带1中各个校验分片各自的数据块m中写入目标数据d3。从图7中可以看出,在数据分片以及各数据块中写入目标数据d2的位置是相同的,在数据分片以及各数据块中写入目标数据d4的位置是相同的,在数据分片以及各数据块中写入目标数据d3的位置是相同的。
40.另外,在图7中,在目标数据d2、d4写入数据分片1-2后,数据分片1-2中不存在空闲空间,在这种情况下,若确定目标数据d5写入线性空间2,由于数据分片1-2中不存在空闲空间,会在线性空间2内顺序往后写入目标数据d5,也就是将目标数据d5写入纠删码条带2的数据分片2-2。纠删码条带2中与数据分片2-2对应的各个校验分片内的目标数据块为各个校验分片各自的数据块2,因此,在纠删码条带2中各个校验分片各自的数据块2中写入目标数据d5,并且,在数据分片以及各数据块中写入目标数据d5的位置是相同的。
41.步骤s403:在上述纠删码条带中各个数据分片均不存在空闲空间的情况下,基于上述纠删码条带中的校验分片中存储的数据计算得到校验数据。
42.具体的,按照上述步骤s401以及步骤s402中描述的方式持续向上述纠删码条带的数据分片以及校验分片中写入数据,在上述纠删码条带中各个数据分片均写满数据,也就是不存在空闲空间的情况下,上述纠删码条带中各个校验分片也就写满了数据。示例性的,参见图8,为本发明实施例提供的写入目标数据后的纠删码条带的第三种结构示意图。在图8中,纠删码条带1中的各个数据分片及校验分片均写满了数据,不存在空闲空间。
43.在上述纠删码条带中各个数据分片均不存在空闲空间的情况下,读取上述纠删码条带中的校验分片中存储的数据,基于读取的数据计算得到校验数据。
44.本发明一个实施例中,在纠删码条带中各个数据分片均不存在空闲空间的情况下,纠删码条带的每一校验分片中存储的数据均与纠删码条带的所有数据分片存储的总的数据信息相同,因此,可以基于纠删码条带的任一校验分片中存储的数据计算得到校验数据。例如,可以基于图8中纠删码条带1的校验分片1-1中存储的数据计算得到校验数据。
45.本发明另一个实施例中,还可通过如下文图15中实施例所示的方式得到校验数据,在此暂不详述。
46.具体的,基于纠删码条带的所有数据分片存储的总的数据信息计算得到校验数据的具体方式可参考相关技术,在此不赘述。
47.步骤s404:将上述校验数据中的各个校验数据段存储至不同的校验分片中。
48.具体的,纠删码条带的各校验分片最终只存储其对应的校验数据段,各校验分片对应的校验数据段组合起来便是该纠删码条带的校验数据。
49.在计算得到上述校验数据后,会确定各个校验分片各自对应的上述校验数据中的校验数据段,并在各个校验分片中存储其对应的校验数据段。
50.本发明一个实施例中,在基于纠删码条带的校验分片中存储的数据计算得到校验数据后,将该校验数据分成不同的校验数据段,然后向纠删码条带的各个校验分片所在的存储设备发送对应的校验数据段,并针对每一校验分片,将该校验分片中的一个数据块清空,在清空的数据块中存储该校验分片对应的校验数据段。
51.在每一校验分片中存储其对应的校验数据段后,将每一校验分片中未存储校验数
据段的数据块标记为待清除数据块,可参照图9,为本发明实施例提供的写入目标数据后的纠删码条带的第四种结构示意图,在图9中,黑色的数据块表示该数据块被标记为待清除数据块。
52.具体的,将校验数据分成不同的校验数据段,以及确定不同校验分片对应的校验数据段的具体方式可参考相关技术,在此不赘述。
53.步骤s405:清空每一校验分片中除校验数据段之外的数据。
54.将每一校验分片中的所有待清除数据块中的数据清空,可将清空的数据块所对应的存储空间纳入空闲空间列表,以待后续使用。在清空每一校验分片中除校验数据段之外的数据后,更新每一校验分片的元数据,以表明该校验分片中存储有对应的校验数据段。
55.示例性的,参见图10,为本发明实施例提供的写入目标数据后的纠删码条带的第五种结构示意图。如图10所示,在将纠删码条带1中每一校验分片中除校验数据段之外的数据清空后,将纠删码条带1中清空的数据块所对应的存储空间纳入空闲空间列表,也就是纠删码条带1的每个校验分片均释放了m-1个数据块大小的存储空间。在这种情况下,纠删码条带1中各数据分片均写满数据,各校验分片只存储有对应的校验数据段,最终得到的纠删码条带1与相关纠删码技术得到的纠删码条带一致。
56.由以上可见,在本发明实施例提供的方案中,向纠删码条带的数据分片中写入数据,在该纠删码条带的每一数据分片均被写满的情况下,再计算该纠删码条带的校验数据,从而无需在纠删码条带的数据分片中进行补0,提高了纠删码条带的存储空间利用率。尤其,在数据写入量小或小文件写入的情况下,应用本发明实施例提供的方案无需在纠删码条带的数据分片中大量补0,显著解决了在数据写入量小或小文件写入的场景下纠删码条带存储空间大量浪费的问题。
57.另外,若在还未计算得到纠删码条带的校验数据的情况下数据分片出现故障,由于在该纠删码条带的目标数据分片和各个校验分片内的目标数据块中均写入目标数据,在该纠删码条带包含n个校验分片的情况下,目标数据被存储n+1份,只要总计不超过n个数据分片或校验分片发生故障,便仍可恢复目标数据。
58.此外,本发明实施例清空每一校验分片中除校验数据段之外的数据,使得最终的纠删码计算结果与相关技术中的纠删码计算结果一致。
59.相关的纠删码技术在使用覆盖数据覆盖纠删码条带中已有数据的过程中,需要将纠删码条带中所有数据分片中的数据全部读取出来,将想要覆盖的已有数据清除后,再在清除后的对应位置写入覆盖数据,然后重新计算校验数据,最后再在纠删码条带的数据分片与校验分片中写入对应的数据。在这一过程中,相关的纠删码技术存在写放大和带宽资源、计算资源浪费的问题;并且,在使用固态硬盘的情况下,相关的纠删码技术会使得固态硬盘擦除、写入数据的工作量增大,降低固态硬盘性能,减少固态硬盘使用寿命。为了解决以上问题,本发明实施例提供了下文图11所示的实施例。
60.参见图11,为本发明实施例提供的第二种数据存储方法的流程示意图,与图4所示的实施例相比,上述方法还包括以下步骤s406至步骤s408。
61.步骤s406:在接收到使用覆盖数据覆盖上述纠删码条带中的已有数据的指令的情况下,确定上述覆盖数据待写入的覆盖数据分片及在上述覆盖数据分片中空闲空间内的待写入位置。
62.具体的,在接收到使用覆盖数据覆盖上述纠删码条带中的已有数据的指令后,按照图4所示的实施例中确定目标数据待写入的目标数据分片的方式,确定上述覆盖数据待写入的覆盖数据分片,并进一步确定上述覆盖数据在上述覆盖数据分片中空闲空间内的写入位置。
63.步骤s407:在上述覆盖数据分片中的上述待写入位置中写入上述覆盖数据,并在各个校验分片内的覆盖数据块中写入上述覆盖数据。
64.其中,上述覆盖数据块与上述覆盖数据分片相对应,上述覆盖数据分片与上述覆盖数据块中写入上述覆盖数据的位置相同。
65.具体的,按照图4所示的实施例中往纠删码条带写入目标数据的方式,将上述覆盖数据写入纠删码条带中。
66.由上述对步骤s406、步骤s407的描述可知,在本发明实施例中,将上述覆盖数据作为新的目标数据写入纠删码条带中,也就是在本发明实施例中,上述覆盖数据相当于图4所示的实施例中的目标数据,上述覆盖数据分片相当于图4所示的实施例中的目标数据分片,上述覆盖数据块相当于图4所示的实施例中的目标数据块。
67.示例性的,参见图12,为本发明实施例提供的写入覆盖数据后的纠删码条带的一种结构示意图。在图12中,使用覆盖数据d2’覆盖已有数据d2,可以看出,确定的写入覆盖数据d2’的覆盖数据分片为数据分片1-2,在数据分片1-2以及各校验分片中与数据分片1-2对应的数据块内均写入了覆盖数据d2’。
68.步骤s408:将上述已有数据确定为停用数据,并将上述已有数据的元数据中包含的上述已有数据的地址更新为上述覆盖数据的地址。
69.具体的,在纠删码条带中写入覆盖数据后,将该覆盖数据所要覆盖的已有数据确定为停用数据。为了达到使用覆盖数据覆盖已有数据的效果,将上述已有数据的元数据中包含的该已有数据的地址更新为上述覆盖数据的地址,在这种情况下,访问上述已有数据所在的存储空间便实际上访问的是上述覆盖数据所在的存储空间,进而也就访问到了上述覆盖数据。
70.由以上可见,在本发明实施例提供的方案中,将覆盖数据作为新的目标数据写入纠删码条带中,即按照写入目标数据的方式,往纠删码条带中写入覆盖数据,因而也就避免了相关纠删码技术中将纠删码条带所有数据分片的数据全部读取出来,将要覆盖的已有数据清除,再在清除后的对应位置写入覆盖数据,然后重新计算校验数据,最后再在纠删码条带的数据分片与校验分片中写入对应的数据等一系列过程,从而避免了相关纠删码技术在使用覆盖数据覆盖已有数据过程中存在的写放大、带宽资源及计算资源浪费的问题,也减少了在使用固态硬盘的情况下固态硬盘擦除、写入数据的工作量,提升了固态硬盘性能,减少了固态硬盘的磨损,延长了固态硬盘使用寿命。并且,由于被覆盖的已有数据仍然存在于纠删码条带中,因此本发明实施例提供的方案还为无损快照提供了底层支持。
71.在图11所示的实施例中,使用覆盖数据覆盖纠删码条带中的已有数据后,会将该已有数据确定为停用数据,若纠删码条带中长时间存储停用数据,会造成存储空间的浪费,为了解决这一问题,本发明实施例提出了下文图13所示的实施例。
72.参见图13,为本发明实施例提供的第三种数据存储方法的流程示意图,与图11所示的实施例相比,上述方法还包括以下步骤s409至步骤s4011。
73.步骤s409:确定所包含的数据中停用数据的比例达到预设比例的停用纠删码条带。
74.具体的,在纠删码条带数据分片中的停用数据的数据量占该纠删码条带的所有数据分片所能存储的数据量的比例达到预设比例的情况下,将该纠删码条带确定为停用纠删码条带。
75.本发明一个实施例中,可以周期性地进行停用纠删码条带的确定;本发明另一个实施例中,可以在接收到停用纠删码条带确定指令的情况下进行停用纠删码条带的确定。
76.步骤s4010:将上述停用纠删码条带中停用数据之外的其他数据写入其他纠删码条带中。
77.在确定出停用纠删码条带后,便可将该停用纠删码条带中停用数据之外的其他数据写入其他纠删码条带的数据分片的空闲空间中。
78.具体的,可以从停用纠删码条带中读取其他数据,并按照图4所示的实施例将读取到的其他数据写入其他纠删码条带的数据分片的空闲空间中。
79.步骤s4011:清空上述停用纠删码条带中的数据。
80.在将上述停用纠删码条带中停用数据之外的其他数据写入其他纠删码条带后,便可以清空上述停用纠删码条带中的数据,上述停用纠删码条带便成为未写有数据的纠删码条带,可以用于后续新数据的写入。
81.由以上可见,在本发明实施例提供的方案中,在确定出纠删码条带中的停用数据达到预设比例后,便确定该纠删码条带为停用纠删码条带。将停用纠删码条带中停用数据之外的其他数据写入其他纠删码条带,并清空停用纠删码条带中的数据,以用于后续新数据的写入,从而释放了停用数据所占用的存储空间,提高了存储空间利用率。
82.若每当一纠删码条带的各数据分片中写满数据后,便紧接着计算该纠删码条带的校验数据,在这一过程中需要进行一次数据读取以进行校验数据的计算,也就是在计算得到一定数量纠删码条带各自的校验数据的情况下,需要进行数据读取的次数与纠删码条带的数量相同,每读取一次纠删码条带便要占用一次带宽资源。为了减少因计算校验数据而进行数据读取的次数,本发明实施例提供了下文图14所示的实施例。
83.参见图14,为本发明实施例提供的第四种数据存储方法的流程示意图,与图4所示的实施例相比,上述步骤s403可以通过以下步骤s403a与步骤s403b实现。
84.步骤s403a:在多个纠删码条带的各个数据分片均不存在空闲空间的情况下,一次性读取上述多个纠删码条带中的校验分片中的数据。
85.在本发明实施例中,并不在一个纠删码条带的各数据分片中写满数据后,便紧接着计算该纠删码条带的校验数据,而是在多个纠删码条带的各个数据分片均写满数据的情况下,再一次性读取上述多个纠删码条带中的校验分片中的数据。上述多个纠删码条带的具体数量可根据需要设置,本发明实施例在此并不限定。
86.步骤s403b:分别基于所读取的每一纠删码条带对应的数据,计算得到该纠删码条带对应的校验数据。
87.在一次性读取上述多个纠删码条带中的校验分片中的数据后,便可以基于每一纠删码条带对应的数据,计算得到该纠删码条带对应的校验数据。
88.由以上可见,在本发明实施例提供的方案中,在多个纠删码条带的各个数据分片
均写满数据的情况下,再一次性读取上述多个纠删码条带中的校验分片中的数据,进而计算得到各纠删码条带对应的校验数据,可有效减少因计算校验数据而进行数据读取的次数。
89.在计算纠删码条带的校验数据的过程中,若只选择纠删码条带中的一个校验分片,基于该校验分片中的数据计算得到校验数据,则还需将得到的校验数据分成若干不同的校验数据段,并从上述校验分片所在的线性空间向位于其他线性空间的校验分片发送相应的校验数据段,从而带来带宽资源的消耗,为此,本发明实施例提供了下文图15所示的实施例。
90.参见图15,为本发明实施例提供的第五种数据存储方法的流程示意图,与图4所示的实施例相比,上述步骤s403可以通过以下步骤s403c与步骤s403d实现,上述步骤s404可以通过以下步骤s404a实现。
91.步骤s403c:针对上述纠删码条带中的每一校验分片,控制该校验分片所处的存储设备读取该校验分片中存储的数据。
92.具体的,上述纠删码条带中的每一校验分片中存储的数据均相同,且均与该纠删码条带的各数据分片中存储的总的数据信息相同。
93.步骤s403d:基于所读取的数据计算得到校验数据。
94.由于上述纠删码条带中每一校验分片中存储的数据均与该纠删码条带的各数据分片中存储的总的数据信息相同,因而对于每一校验分片,可基于该校验分片中存储的数据计算得到校验数据。
95.步骤s404a:向该校验分片中存储上述校验数据中预期存储于该校验分片中的校验数据段。
96.在对于每一校验分片,均基于该校验分片中存储的数据计算得到校验数据后,从基于该校验分片得到的校验数据中选择出该校验分片预期存储的校验数据段,将该校验数据段存储于该校验分片中。具体的,从基于该校验分片得到的校验数据中选择出该校验分片预期存储的校验数据段的具体方式可参考相关技术,在此不赘述。
97.由以上可见,在本发明实施例提供的方案中,对于每一校验分片,基于该校验分片中存储的数据便可计算得到校验数据,该计算过程在本地完成,无网络资源消耗,且校验分片的各数据块只参与一次计算以得到校验数据,不会浪费计算资源;并且,对于纠删码条带中的每一校验分片,从基于该校验分片得到的校验数据中选择出该校验分片预期存储的校验数据段,将该校验数据段存储于该校验分片中,从而无需从一个线性空间向其他线性空间的校验分片发送相应的校验数据段,也就减少了对带宽资源的消耗。
98.参见图16,为本发明实施例提供的第六种数据存储方法的流程示意图,该方法包括以下步骤s1601至步骤s1606。
99.步骤s1601:获取目标数据。
100.步骤s1602:构建纠删码条带。
101.步骤s1603:根据目标数据的元数据信息确定目标数据待写入的线性空间及目标数据分片。
102.步骤s1604:在上述纠删码条带的上述目标数据分片和各个校验分片内的目标数据块中写入上述目标数据。
103.步骤s1605:记录上述目标数据的存储模式和空间索引。
104.具体的,在将上述目标数据写入上述纠删码条带后,记录上述目标数据的存储模式和空间索引,用以更新上述目标数据的元数据信息。
105.步骤s1606:在上述目标数据已写入上述纠删码条带的情况下,将写入结果返回给调用层。
106.具体的,将上述目标数据的写入结果返回给调用层,以便于之后在需要时可以快速调用上述目标数据。
107.具体的,图16所示实施例的具体实现方式可参照前文各实施例中描述的内容,在此不再赘述。
108.与前述的一种数据存储方法相对应,本发明实施例还提供了一种数据存储装置。
109.参见图17,为本发明实施例提供的第一种数据存储装置的结构示意图,纠删码条带中包括数据分片与校验分片,每一校验分片中包含与上述数据分片的数目相同的数据块,每一校验分片中的各个数据块分别对应不同的数据分片,各个数据块与各个数据分片的存储空间大小相同,上述装置包括:第一确定模块1701,用于确定目标数据待写入的目标数据分片。
110.第一写入模块1702,用于在上述目标数据分片和各个校验分片内的目标数据块中写入上述目标数据,其中,上述目标数据块与上述目标数据分片相对应,上述目标数据分片与上述目标数据块中写入上述目标数据的位置相同。
111.计算模块1703,用于在上述纠删码条带中各个数据分片均不存在空闲空间的情况下,基于上述纠删码条带中的校验分片中存储的数据计算得到校验数据。
112.存储模块1704,用于将上述校验数据中的各个校验数据段存储至不同的校验分片中。
113.第一清空模块1705,用于清空每一校验分片中除校验数据段之外的数据。
114.由以上可见,在本发明实施例提供的方案中,向纠删码条带的数据分片中写入数据,在该纠删码条带的每一数据分片均被写满的情况下,再计算该纠删码条带的校验数据,从而无需在纠删码条带的数据分片中进行补0,提高了纠删码条带的存储空间利用率。尤其,在数据写入量小或小文件写入的情况下,应用本发明实施例提供的方案无需在纠删码条带的数据分片中大量补0,显著解决了在数据写入量小或小文件写入的场景下纠删码条带存储空间大量浪费的问题。
115.另外,若在还未计算得到纠删码条带的校验数据的情况下数据分片出现故障,由于在该纠删码条带的目标数据分片和各个校验分片内的目标数据块中均写入目标数据,在该纠删码条带包含n个校验分片的情况下,目标数据被存储n+1份,只要总计不超过n个数据分片或校验分片发生故障,便仍可恢复目标数据。
116.此外,本发明实施例清空每一校验分片中除校验数据段之外的数据,使得最终的纠删码计算结果与相关技术中的纠删码计算结果一致。
117.参见图18,为本发明实施例提供的第二种数据存储装置的结构示意图,与图17所示的实施例相比,上述装置还包括:第二确定模块1706,用于在接收到使用覆盖数据覆盖上述纠删码条带中的已有数据的指令的情况下,确定上述覆盖数据待写入的覆盖数据分片及在上述覆盖数据分片中空
闲空间内的待写入位置。
118.第二写入模块1707,用于在上述覆盖数据分片中的上述待写入位置中写入上述覆盖数据,并在各个校验分片内的覆盖数据块中写入上述覆盖数据,其中,上述覆盖数据块与上述覆盖数据分片相对应,上述覆盖数据分片与上述覆盖数据块中写入上述覆盖数据的位置相同。
119.停用模块1708,用于将上述已有数据确定为停用数据,并将上述已有数据的元数据中包含的上述已有数据的地址更新为上述覆盖数据的地址。
120.由以上可见,在本发明实施例提供的方案中,将覆盖数据作为新的目标数据写入纠删码条带中,即按照写入目标数据的方式,往纠删码条带中写入覆盖数据,因而也就避免了相关纠删码技术中将纠删码条带所有数据分片的数据全部读取出来,将要覆盖的已有数据清除,再在清除后的对应位置写入覆盖数据,然后重新计算校验数据,最后再在纠删码条带的数据分片与校验分片中写入对应的数据等一系列过程,从而避免了相关纠删码技术在使用覆盖数据覆盖已有数据过程中存在的写放大、带宽资源及计算资源浪费的问题,也减少了在使用固态硬盘的情况下固态硬盘擦除、写入数据的工作量,提升了固态硬盘性能,减少了固态硬盘的磨损,延长了固态硬盘使用寿命。并且,由于被覆盖的已有数据仍然存在于纠删码条带中,因此本发明实施例提供的方案还为无损快照提供了底层支持。
121.参见图19,为本发明实施例提供的第三种数据存储装置的结构示意图,与图18所示的实施例相比,上述装置还包括:第三确定模块1709,用于确定所包含的数据中停用数据的比例达到预设比例的停用纠删码条带。
122.第三写入模块1710,用于将上述停用纠删码条带中停用数据之外的其他数据写入其他纠删码条带中。
123.第二清空模块1711,用于清空上述停用纠删码条带中的数据。
124.由以上可见,在本发明实施例提供的方案中,在确定出纠删码条带中的停用数据达到预设比例后,便确定该纠删码条带为停用纠删码条带。将停用纠删码条带中停用数据之外的其他数据写入其他纠删码条带,并清空停用纠删码条带中的数据,以用于后续新数据的写入,从而释放了停用数据所占用的存储空间,提高了存储空间利用率。
125.本发明一个实施例中,上述计算模块1703,具体用于:在多个纠删码条带的各个数据分片均不存在空闲空间的情况下,一次性读取上述多个纠删码条带中的校验分片中的数据;分别基于所读取的每一纠删码条带对应的数据,计算得到该纠删码条带对应的校验数据。
126.由以上可见,在本发明实施例提供的方案中,在多个纠删码条带的各个数据分片均写满数据的情况下,再一次性读取上述多个纠删码条带中的校验分片中的数据,进而计算得到各纠删码条带对应的校验数据,可有效减少因计算校验数据而进行数据读取的次数。
127.本发明另一个实施例中,上述计算模块1703,具体用于:针对上述纠删码条带中的每一校验分片,控制该校验分片所处的存储设备执行以下操作:
读取该校验分片中存储的数据;基于所读取的数据计算得到校验数据。
128.上述存储模块1704,具体用于:向该校验分片中存储上述校验数据中预期存储于该校验分片中的校验数据段。
129.由以上可见,在本发明实施例提供的方案中,对于每一校验分片,基于该校验分片中存储的数据便可计算得到校验数据,该计算过程在本地完成,无网络资源消耗,且校验分片的各数据块只参与一次计算以得到校验数据,不会浪费计算资源;并且,对于纠删码条带中的每一校验分片,从基于该校验分片得到的校验数据中选择出该校验分片预期存储的校验数据段,将该校验数据段存储于该校验分片中,从而无需从一个线性空间向其他线性空间的校验分片发送相应的校验数据段,也就减少了对带宽资源的消耗。
130.参见图20,为本发明实施例提供的一种电子设备的结构示意图,包括处理器2001、通信接口2002、存储器2003和通信总线2004,其中,处理器2001,通信接口2002,存储器2003通过通信总线2004完成相互间的通信;存储器2003,用于存放计算机程序;处理器2001,用于执行存储器2003上所存放的程序时,实现前述数据存储方法中任一项的步骤。
131.由以上可见,在本发明实施例提供的方案中,向纠删码条带的数据分片中写入数据,在该纠删码条带的每一数据分片均被写满的情况下,再计算该纠删码条带的校验数据,从而无需在纠删码条带的数据分片中进行补0,提高了纠删码条带的存储空间利用率。尤其,在数据写入量小或小文件写入的情况下,应用本发明实施例提供的方案无需在纠删码条带的数据分片中大量补0,显著解决了在数据写入量小或小文件写入的场景下纠删码条带存储空间大量浪费的问题。
132.另外,若在还未计算得到纠删码条带的校验数据的情况下数据分片出现故障,由于在该纠删码条带的目标数据分片和各个校验分片内的目标数据块中均写入目标数据,在该纠删码条带包含n个校验分片的情况下,目标数据被存储n+1份,只要总计不超过n个数据分片或校验分片发生故障,便仍可恢复目标数据。
133.此外,本发明实施例清空每一校验分片中除校验数据段之外的数据,使得最终的纠删码计算结果与相关技术中的纠删码计算结果一致。
134.上述电子设备提到的通信总线可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
135.通信接口用于上述电子设备与其他设备之间的通信。
136.存储器可以包括随机存取存储器(random access memory,ram),也可以包括非易失性存储器(non-volatile memory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
137.上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现
场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
138.在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一数据存储方法的步骤。
139.应用本发明实施例提供的计算机可读存储介质中存储的计算机程序进行数据存储时,向纠删码条带的数据分片中写入数据,在该纠删码条带的每一数据分片均被写满的情况下,再计算该纠删码条带的校验数据,从而无需在纠删码条带的数据分片中进行补0,提高了纠删码条带的存储空间利用率。尤其,在数据写入量小或小文件写入的情况下,应用本发明实施例提供的方案无需在纠删码条带的数据分片中大量补0,显著解决了在数据写入量小或小文件写入的场景下纠删码条带存储空间大量浪费的问题。
140.另外,若在还未计算得到纠删码条带的校验数据的情况下数据分片出现故障,由于在该纠删码条带的目标数据分片和各个校验分片内的目标数据块中均写入目标数据,在该纠删码条带包含n个校验分片的情况下,目标数据被存储n+1份,只要总计不超过n个数据分片或校验分片发生故障,便仍可恢复目标数据。
141.此外,本发明实施例清空每一校验分片中除校验数据段之外的数据,使得最终的纠删码计算结果与相关技术中的纠删码计算结果一致。
142.在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一数据存储方法。
143.应用本发明实施例提供的计算机程序产品进行数据存储时,向纠删码条带的数据分片中写入数据,在该纠删码条带的每一数据分片均被写满的情况下,再计算该纠删码条带的校验数据,从而无需在纠删码条带的数据分片中进行补0,提高了纠删码条带的存储空间利用率。尤其,在数据写入量小或小文件写入的情况下,应用本发明实施例提供的方案无需在纠删码条带的数据分片中大量补0,显著解决了在数据写入量小或小文件写入的场景下纠删码条带存储空间大量浪费的问题。
144.另外,若在还未计算得到纠删码条带的校验数据的情况下数据分片出现故障,由于在该纠删码条带的目标数据分片和各个校验分片内的目标数据块中均写入目标数据,在该纠删码条带包含n个校验分片的情况下,目标数据被存储n+1份,只要总计不超过n个数据分片或校验分片发生故障,便仍可恢复目标数据。
145.此外,本发明实施例清空每一校验分片中除校验数据段之外的数据,使得最终的纠删码计算结果与相关技术中的纠删码计算结果一致。
146.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或
数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk (ssd))等。
147.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
148.本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质及计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
149.以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

技术特征:
1.一种数据存储方法,其特征在于,纠删码条带中包括数据分片与校验分片,每一校验分片中包含与所述数据分片的数目相同的数据块,每一校验分片中的各个数据块分别对应不同的数据分片,各个数据块与各个数据分片的存储空间大小相同,所述方法包括:确定目标数据待写入的目标数据分片;在所述目标数据分片和各个校验分片内的目标数据块中写入所述目标数据,其中,所述目标数据块与所述目标数据分片相对应,所述目标数据分片与所述目标数据块中写入所述目标数据的位置相同;在所述纠删码条带中各个数据分片均不存在空闲空间的情况下,基于所述纠删码条带中的校验分片中存储的数据计算得到校验数据;将所述校验数据中的各个校验数据段存储至不同的校验分片中;清空每一校验分片中除校验数据段之外的数据。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:在接收到使用覆盖数据覆盖所述纠删码条带中的已有数据的指令的情况下,确定所述覆盖数据待写入的覆盖数据分片及在所述覆盖数据分片中空闲空间内的待写入位置;在所述覆盖数据分片中的所述待写入位置中写入所述覆盖数据,并在各个校验分片内的覆盖数据块中写入所述覆盖数据,其中,所述覆盖数据块与所述覆盖数据分片相对应,所述覆盖数据分片与所述覆盖数据块中写入所述覆盖数据的位置相同;将所述已有数据确定为停用数据,并将所述已有数据的元数据中包含的所述已有数据的地址更新为所述覆盖数据的地址。3.根据权利要求2所述的方法,其特征在于,在所述清空每一校验分片中除校验数据段之外的数据之后,还包括:确定所包含的数据中停用数据的比例达到预设比例的停用纠删码条带;将所述停用纠删码条带中停用数据之外的其他数据写入其他纠删码条带中;清空所述停用纠删码条带中的数据。4.根据权利要求1-3中任一项所述的方法,其特征在于,所述在所述纠删码条带中各个数据分片均不存在空闲空间的情况下,基于所述纠删码条带中的校验分片中存储的数据计算得到校验数据,包括:在多个纠删码条带的各个数据分片均不存在空闲空间的情况下,一次性读取所述多个纠删码条带中的校验分片中的数据;分别基于所读取的每一纠删码条带对应的数据,计算得到该纠删码条带对应的校验数据。5.根据权利要求1-3中任一项所述的方法,其特征在于,所述基于所述纠删码条带中的校验分片中存储的数据计算得到校验数据,包括:针对所述纠删码条带中的每一校验分片,控制该校验分片所处的存储设备执行以下操作:读取该校验分片中存储的数据;基于所读取的数据计算得到校验数据;所述将所述校验数据中的各个校验数据段存储至不同的校验分片中,包括:向该校验分片中存储所述校验数据中预期存储于该校验分片中的校验数据段。
6.一种数据存储装置,其特征在于,纠删码条带中包括数据分片与校验分片,每一校验分片中包含与所述数据分片的数目相同的数据块,每一校验分片中的各个数据块分别对应不同的数据分片,各个数据块与各个数据分片的存储空间大小相同,所述装置包括:第一确定模块,用于确定目标数据待写入的目标数据分片;第一写入模块,用于在所述目标数据分片和各个校验分片内的目标数据块中写入所述目标数据,其中,所述目标数据块与所述目标数据分片相对应,所述目标数据分片与所述目标数据块中写入所述目标数据的位置相同;计算模块,用于在所述纠删码条带中各个数据分片均不存在空闲空间的情况下,基于所述纠删码条带中的校验分片中存储的数据计算得到校验数据;存储模块,用于将所述校验数据中的各个校验数据段存储至不同的校验分片中;第一清空模块,用于清空每一校验分片中除校验数据段之外的数据。7.根据权利要求6所述的装置,其特征在于,所述装置还包括:第二确定模块,用于在接收到使用覆盖数据覆盖所述纠删码条带中的已有数据的指令的情况下,确定所述覆盖数据待写入的覆盖数据分片及在所述覆盖数据分片中空闲空间内的待写入位置;第二写入模块,用于在所述覆盖数据分片中的所述待写入位置中写入所述覆盖数据,并在各个校验分片内的覆盖数据块中写入所述覆盖数据,其中,所述覆盖数据块与所述覆盖数据分片相对应,所述覆盖数据分片与所述覆盖数据块中写入所述覆盖数据的位置相同;停用模块,用于将所述已有数据确定为停用数据,并将所述已有数据的元数据中包含的所述已有数据的地址更新为所述覆盖数据的地址。8.根据权利要求7所述的装置,其特征在于,所述装置还包括:第三确定模块,用于确定所包含的数据中停用数据的比例达到预设比例的停用纠删码条带;第三写入模块,用于将所述停用纠删码条带中停用数据之外的其他数据写入其他纠删码条带中;第二清空模块,用于清空所述停用纠删码条带中的数据。9.根据权利要求6-8中任一项所述的装置,其特征在于,所述计算模块,具体用于:在多个纠删码条带的各个数据分片均不存在空闲空间的情况下,一次性读取所述多个纠删码条带中的校验分片中的数据;分别基于所读取的每一纠删码条带对应的数据,计算得到该纠删码条带对应的校验数据。10.根据权利要求6-8中任一项所述的装置,其特征在于,所述计算模块,具体用于:针对所述纠删码条带中的每一校验分片,控制该校验分片所处的存储设备执行以下操作:读取该校验分片中存储的数据;基于所读取的数据计算得到校验数据;所述存储模块,具体用于:向该校验分片中存储所述校验数据中预期存储于该校验分片中的校验数据段。
11.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现权利要求1-5中任一项方法步骤。12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-5中任一项方法步骤。

技术总结
本发明实施例提供了一种数据存储方法、装置、电子设备及存储介质,涉及数据处理技术领域,纠删码条带每一校验分片包含与数据分片数目相同的数据块,每一校验分片中各数据块分别对应不同数据分片,各数据块与各数据分片的存储空间大小相同,上述方法包括:确定目标数据待写入的目标数据分片;在目标数据分片和各校验分片内的目标数据块中写入目标数据;在纠删码条带中各数据分片均不存在空闲空间的情况下,基于纠删码条带中的校验分片中存储的数据计算得到校验数据;将校验数据中的各校验数据段存储至不同的校验分片中;清空每一校验分片中除校验数据段之外的数据。应用本发明实施例提供的方案可以提高存储空间利用率。提供的方案可以提高存储空间利用率。提供的方案可以提高存储空间利用率。


技术研发人员:魏东
受保护的技术使用者:新华三信息技术有限公司
技术研发日:2023.06.19
技术公布日:2023/8/1
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐