数据处理方法及分布式存储系统与流程

专利2022-05-10  29



1.本公开涉及数据处理领域,更具体地,涉及一种数据处理方法、数据处理装置、数据处理设备、计算机程序产品、计算机可读记录介质及分布式存储系统。


背景技术:

2.目前,存储数据的系统(如分布式存储系统)都支持副本/纠删码(erasure code,ec,其是一种数据保护方法,其将数据分割成片段并且根据原始数据计算出校验数据块并写入存储设备中,其与副本一样,都是一种实现数据冗余的方式)等冗余模式,保证在冗余范围内的节点/磁盘掉线时,仍然可以从其它服务节点获取数据,保证了存储数据的系统的高可用性。同时当产生故障时(如存储设备的软件或硬件设备故障时),也可以从冗余节点将故障节点的数据恢复出来,这种恢复通常以文件/对象为粒度。
3.由于当业务存在很多随机写时(即随机往存储设备中写入数据时),会在文件/对象等存储空间中存在部分空洞(即无数据区)。若在恢复数据时对整个存储空间进行恢复,一方面恢复的目标节点会比源节点消耗更多的空间,另一方面也会因为读取/写入了额外的数据、增加了不必要的网络传输量,使得恢复的性能不能做到最优。
4.此外,随着存储容量越来越大,故障单节点涉及的数据量会越来越大,上述恢复过程也会越来越长,这非常不利于业务的正常运行。
5.因此,需要一种新的数据处理的方法,该方法能够有效解决在上述存储空间中存在空洞时的数据的恢复问题。


技术实现要素:

6.针对上述问题,本公开提供了一种数据处理方法,该方法可以获取与待处理数据对应的元数据,其中,所述元数据包括与所述待处理数据对应的源存储空间中的空洞有关的信息。当需要对待处理数据进行恢复操作时就可以基于上述元数据而只恢复非空洞存储空间中的数据,这样不仅减少了数据恢复的时间而且提高了数据恢复速率,能够及时保证业务的正常运行。
7.本公开实施例提供了一种数据处理方法,其特征在于,包括:确定待处理数据;获取与所述待处理数据对应的元数据,其中,所述元数据包括与所述待处理数据对应的源存储空间中的空洞有关的信息;根据与所述空洞有关的信息,将所述待处理数据从所述源存储空间恢复至目标存储空间。
8.根据本公开实施例,其特征在于,其中,与所述空洞有关的信息包括与所述空洞的数量、位置和大小有关的属性信息。
9.根据本公开实施例,其特征在于,其中,所述根据与所述空洞有关的信息,将所述待处理数据从所述源存储空间恢复至目标存储空间,包括:当根据与所述空洞的有关的信息确定所述源存储空间中存在空洞、或者所述空洞的数量满足第一预定条件、或者空洞存储空间与 非空洞存储空间的容量比例满足第二预定条件时,根据与所述空洞的位置和大
小有关的信息仅从所述源存储空间的非空洞存储区域读取所述待处理数据,并将读取的数据写入所述目标存储空间;当根据与所述空洞有关的信息确定所述源存储空间中不存在空洞、或者所述空洞的数量满足第三预定条件、或者空洞存储空间与非空洞存储空间的容量比例满足第四预定条件时,直接从整个所述源存储空间读取所述待处理数据,并将读取的数据写入所述目标存储空间。
10.根据本公开实施例,其特征在于,其中,与所述空洞有关的信息随着所述待处理数据被写入所述源存储空间的写入过程 而动态地更新。
11.根据本公开实施例,其特征在于,其中,与所述空洞有关的信息随着所述待处理数据被写入所述源存储空间的写入过程而动态地更新,包括以下至少一项:在所述待处理数据的目录属性、命名格式、业务类型中的至少一项满足预定条件时,将与空洞的数量有关的属性信息的值设置为预定值;根据所述待处理数据的写入行为,对与所述空洞有关的信息进行更新;以及对于所述待处理数据,当预设的空洞识别禁用条件被满足时,将与空洞的数量有关的属性信息的值设置为预定值。
12.根据本公开实施例,其特征在于,其中,当预设的空洞识别禁用条件被满足时,将与空洞的数量有关的属性信息的值设置为预定值,包括以下至少一项:当所述待处理数据被写入所述源存储空间时产生的空洞的数量超过预设数量阈值时,将与空洞的数量有关的属性信息的值设置为预定值;以及当所述待处理数据被写入所述源存储空间时产生的空洞存储空间与非空洞存储空间的容量比例低于预设比例阈值时,将与空洞的数量有关的属性信息的值设置为预定值。
13.根据本公开实施例,其特征在于,其中,根据所述待处理数据的写入行为,对与所述空洞有关的信息进行更新,包括:在写入过程中确定出现新的空洞的情况下,增加所述与空洞的数量有关的属性信息的值,并且增加与新出现的空洞的位置和大小有关的属性信息;其中,在读取所述待处理数据时,根据与所述空洞有关的信息跳过对空洞存储空间的访问。
14.本公开实施例提供了一种数据处理装置,其特征在于,包括:确定模块,被配置为确定待处理数据;获取模块,被配置为获取与所述待处理数据对应的元数据,其中,所述元数据包括与所述待处理数据对应的源存储空间中的空洞有关的信息;恢复模块,被配置为根据与所述空洞有关的信息,将所述待处理数据从所述源存储空间恢复至目标存储空间。
15.本公开实施例提供了一种分布式存储系统,包括:多个存储节点,其中所述多个存储节点提供数据冗余存储,所述多个存储节点中的至少一个存储节点为故障节点,并且所述多个存储节点中存在与所述故障节点对应的冗余节点,目标存储节点,其用于替代所述故障节点;以及存储控制器,其从与所述故障节点对应的冗余节点将所述故障节点所存储的待处理数据恢复到所述目标存储节点,其中,所述存储控制器获取与所述待处理数据对应的元数据,其中,所述元数据包括所述冗余节点中与所述待处理数据对应的存储空间中的空洞有关的信息;并且根据与所述空洞有关的信息,将所述待处理数据从所述冗余节点恢复至所述目标存储节点。
16.根据本公开实施例,其特征在于,其中,与所述空洞有关的信息包括与所述空洞的数量、位置和大小有关的属性信息。
17.根据本公开实施例,其特征在于,其中,所述根据与所述空洞有关的信息,将所述
待处理数据从所述冗余节点恢复至所述目标存储节点,包括:当根据与所述空洞的有关的信息确定所述冗余节点中存在空洞、或者所述空洞的数量满足第一预定条件、或者空洞存储空间与非空洞存储空间的容量比例满足第二预定条件时,根据与所述空洞的位置和大小有关的信息仅从所述冗余节点的非空洞存储区域读取所述待处理数据,并将读取的数据写入所述目标存储节点;当根据与所述空洞的有关的信息确定所述冗余节点中不存在空洞、或者所述空洞的数量满足第三预定条件、或者空洞存储空间与非空洞存储空间的容量比例满足第四预定条件时,直接从整个所述冗余节点读取所述待处理数据,并将读取的数据写入所述目标存储节点。
18.根据本公开实施例,其特征在于,其中,与所述空洞有关的信息随着所述待处理数据被写入所述冗余节点的写入过程 而动态地更新。
19.根据本公开实施例,其特征在于,其中,与所述空洞有关的信息随着所述待处理数据被写入所述冗余节点的写入过程而动态地更新,包括以下至少一项:在所述待处理数据的目录属性、命名格式、业务类型中的至少一项满足预定条件时,将与空洞的数量有关的属性信息的值设置为预定值;根据所述待处理数据的写入行为,对与所述空洞有关的信息进行更新;以及对于所述待处理数据,当预设的空洞识别禁用条件被满足时,将与空洞的数量有关的属性信息的值设置为预定值。
20.根据本公开实施例,其特征在于,其中,当预设的空洞识别禁用条件被满足时,将与空洞的数量有关的属性信息的值设置为预定值,包括以下至少一项:当所述待处理数据被写入所述冗余节点时产生的空洞的数量超过预设数量阈值时,将与空洞的数量有关的属性信息的值设置为预定值;以及当所述待处理数据被写入所述冗余节点时产生的空洞存储空间与非空洞存储空间的容量比例低于预设比例阈值时,将与空洞的数量有关的属性信息的值设置为预定值。
21.根据本公开实施例,其特征在于,其中,根据所述 待处理数据的写入行为,对与所述空洞有关的信息进行更新,包括:在写入过程中确定出现新的空洞的情况下,增加所述与空洞的数量有关的属性信息的值,并且增加与新出现的空洞的位置和大小有关的属性信息;其中,在读取所述待处理数据时,根据与所述空洞有关的信息跳过对空洞存储空间的访问。
22.本公开实施例提供了一种数据处理设备,包括:一个或多个处理器,和一个或多个存储器,所述存储器存储有计算机可执行指令,所述计算机可执行指令当由处理器执行时促使处理器执行上述方法。
23.本公开实施例提供了一种计算机程序产品,存储有计算机可执行指令,其中,所述计算机可执行指令当由处理器执行时促使处理器执行上述方法。
24.本公开实施例提供了一种计算机可读记录介质,存储有计算机可执行指令,其中,所述计算机可执行指令当由处理器执行时促使处理器执行上述方法。
25.本公开实施例提供了一种数据处理方法、装置、设备、介质、计算机程序产品以及分布式存储系统。由于该方法可以获取与待处理数据对应的元数据,其中,所述元数据包括与所述待处理数据对应的源存储空间中的空洞有关的信息,因此,当需要对待处理数据进行恢复操作时可以基于上述元数据而只恢复非空洞存储空间中的数据并且对空洞存储空间不做任何处理,这样不仅减少了数据恢复的时间,提高了数据恢复速率,增大了恢复带宽
的利用率,而且还能够及时保证业务的正常运行。
附图说明
26.为了更清楚地说明本公开实施例的技术方案,下面将对实施例的描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本公开的一些示例性实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
27.图1示出了现有技术中的数据恢复的方式的示例图;图2a示出了根据本公开实施例的数据处理方法的流程图;图2b示出了根据本公开实施例的元数据的结构图;图3示出了根据本公开实施例的写入行为的示例;图4示出了根据本公开实施例的空洞产生及空洞数量转换的示例;图5a示出了根据本公开实施例的恢复待处理数据的示例;图5b示出了根据本公开实施例的恢复待处理数据的另一示例;图6示出了根据本公开实施例的数据恢复的效果图;图7示出了根据本公开实施例的多个空洞的示例;图8示出了根据本公开实施例的数据处理装置800的框图;图9示出了根据本公开实施例的分布式存储系统900的框图;图10示出了根据本公开实施例的数据处理设备1000的结构图。
具体实施方式
28.为了使得本公开的目的、技术方案和优点更为明显,下面将参考附图详细描述根据本公开的示例实施例。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是本公开的全部实施例,应理解,本公开不受这里描述的示例实施例的限制。
29.在本说明书和附图中,基本上相同或相似的步骤和元素用相同或相似的附图标记来表示,并且对这些步骤和元素的重复描述将被省略。同时,在本公开的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性或排序。
30.在本说明书和附图中,根据实施例,元素以单数或复数的形式来描述。然而,单数和复数形式被适当地选择用于所提出的情况仅仅是为了方便解释而无意将本公开限制于此。因此,单数形式可以包括复数形式,并且复数形式也可以包括单数形式,除非上下文另有明确说明。
31.在现有技术中,存储数据的系统(诸如ceph、gluster等的分布式存储系统)在需要恢复数据时,都是如附图1所示的方式进行恢复。其中,图1的左边为源存储空间,其中示出的该源存储空间的大小为1m,中间部分为空洞(即无数据区)(在本技术中简称空洞存储空间),空洞的上下两部分灰色区域为存储有效数据的区域(在本技术中简称为非空洞存储空间);图1的右边为目标存储空间,其存储的数据是从源存储空间恢复的数据。如图1所示,在进行数据恢复时,通过写入命令write(0,1m)对1m大小的源存储空间全部进行了数据写入。即,传统方法在对数据进行恢复时,不仅将非空洞存储空间进行了恢复,而且还将空洞存储空间进行设置为预设值(如0),这样不仅使目标存储空间比源存储空间消耗更多的存储空
间,而且还会因为读取/写入了额外的数据(如0)、增加了不必要的网络传输量。上述传统恢复数据的方法不仅浪费了存储空间,而且消耗了网络/存储资源和恢复性能,使得存储系统在数据恢复后的性能不能做到最优,不能够及时保证业务的正常运行。
32.为了解决上述问题,本公开提供了一种数据处理方法,该方法可以获取与待处理数据对应的元数据,其中,所述元数据包括与所述待处理数据对应的源存储空间中的空洞有关的信息。当需要对待处理数据进行恢复操作时就可以基于上述元数据而只恢复非空洞存储空间中的数据并且对空洞存储空间不做任何处理,这样不仅减少了数据恢复的时间而且提高了数据恢复速率,使存储系统在数据恢复后的性能做到最优,保证了业务的正常运行。
33.下面将参照附图对上述本公开提供的数据处理方法进行详细的说明。
34.图2a示出了根据本公开实施例的数据处理方法的流程图。
35.作为示例,所述数据处理方法可以由存储数据的系统(如分布式存储系统)来执行。
36.参照图2a,在步骤s210,可以确定待处理数据。
37.作为示例,所述待处理数据可以是待恢复数据。
38.作为示例,所述待处理数据可以是由用户指定的数据,也可以是存储系统自动识别的数据。
39.在步骤s220,可以获取与所述待处理数据对应的元数据。
40.根据本公开实施例,所述元数据可以包括与所述待处理数据对应的源存储空间中的空洞有关的信息(在本技术中,元数据中与空洞有关的信息的部分简称为增强元数据),如空洞数量(hole cnt),空洞1(hole1)的位置(offset)和大小(len),空洞2(hole2)的位置(offset)和大小(len)等等,如图2b所示。此外,所述元数据还可以包括与所述待处理数据对应的其它基本信息(在本技术中,元数据中与该基本信息相关的部分简称为基本元数据),如大小(size)、时间(time)和标识符(uid)等,如图2b所示。
41.作为示例,当存储系统中的一个存储节点故障时,在恢复数据时可以从与该存储节点对应的冗余存储节点(如源存储空间)获取与该恢复数据对应的元数据。
42.作为示例,所述空洞可以是在将所述待处理数据写入与所述待处理数据对应的源存储空间中时产生的。
43.根据本公开实施例,与所述空洞有关的信息可以包括与所述空洞的数量、位置和大小有关的属性信息。
44.作为示例,所述空洞数量(hole cnt)可以是:0、1、2、3等。
45.作为示例,空洞1(hole1)的位置(offset)和大小(len)可以分别是:4k,1016k。
46.作为示例,空洞2(hole2)的位置(offset)和大小(len)可以分别是:1m,100k。
47.在步骤s230,可以根据与所述空洞有关的信息,将所述待处理数据从所述源存储空间恢复至目标存储空间。
48.作为示例,所述目标存储空间可以是分布式存储系统中的未写入数据的存储节点,也可以是新加入分布式存储系统中的存储节点(如新替换的存储设备),也可以是故障存储节点自身(如对故障存储节点的存储设备进行数据刷新)。
49.根据本公开实施例,所述根据与所述空洞有关的信息,将所述待处理数据从所述
源存储空间恢复至目标存储空间,可以包括:当根据与所述空洞有关的信息确定所述源存储空间中存在空洞、或者所述空洞的数量满足第一预定条件、或者空洞存储空间与非空洞存储空间的容量比例满足第二预定条件时,根据与所述空洞的位置和大小有关的信息仅从所述源存储空间的非空洞存储区域读取所述待处理数据,并将读取的数据写入所述目标存储空间;当根据与所述空洞有关的信息确定所述源存储空间中不存在空洞、或者所述空洞的数量满足第三预定条件、或者空洞存储空间与非空洞存储空间的容量比例满足第四预定条件时,直接从整个所述源存储空间读取所述待处理数据,并将读取的数据写入所述目标存储空间。
50.作为示例,当空洞数量为100时,可以确定出此时源存储空间存在空洞并且数量为100个,则此时可以根据每个空洞的位置和大小(如上述空洞1和空洞2的位置和大小),仅从源存储空间的非空洞存储区域(即除了上述空洞1、空洞2等之外的存储区域)读取所述待处理数据,然后将读取的数据写入到所述目标存储空间。
51.作为另一示例,当空洞数量为100并且用户设定的第一预定条件为“空洞数量小于150时进行空洞恢复管理,否则取消空洞恢复管理”时,可以确定空洞数量100满足该第一预定条件,则可以根据每个空洞的位置和大小(如上述空洞1和空洞2的位置和大小),仅从源存储空间的非空洞存储区域(即除了上述空洞1、空洞2等之外的存储区域)读取所述待处理数据,然后将读取的数据写入到所述目标存储空间。上述第一预定条件往往是用户根据实际的应用需要而设定的,因为上述空洞数量、位置和大小等信息均是记录在元数据中,会带来一定的元数据空间的消耗,但实际上存储系统中元数据空间消耗只占很小一部分,不会有太大影响,但由于各个用户的相关业务对元数据的空间使用情况的要求不同,因此为了保证元数据空间的消耗对存储空间的影响满足一定要求,用户可以预先设定上述第一预定条件,以在空洞数量小于一定数量时才进行上述空洞恢复管理,而在空洞数量大于一定数量时取消空洞恢复管理(如将空洞数量设置为例如0或null,并且可以设置一标志位,其指示空洞数量过多并已重置处理),这样可以保障元数据空间的消耗满足用户的不同业务的要求。
52.作为另一示例,空洞数量为100并且各个空洞存储空间(即未存储有效数据的区域)总容量例如为50m,各个非空洞存储空间(即存储有效数据的区域)总容量例如为150m,包括各个空洞存储空间和各个非空洞存储空间的总容量例如为200m,并且用户设定的第二预定条件为“空洞存储空间与非空洞存储空间的容量比例超过30%时进行空洞恢复管理”或者为“空洞存储空间的容量超过总容量的20%时进行空洞恢复管理”,此时,空洞存储空间与非存储空间的容量比例满足上述第二预定条件,则可以根据每个空洞的位置和大小(如上述空洞1和空洞2的位置和大小),仅从源存储空间的非空洞存储区域(即除了上述空洞1、空洞2等之外的存储区域)读取所述待处理数据,然后将读取的数据写入到所述目标存储空间。上述第二预定条件往往是用户根据实际的应用需要而设定的。
53.作为另一示例,当空洞数量为0时,可以确定出此时源存储空间不存在空洞,则此时可以直接从整个所述源存储空间读取所述待处理数据,并将读取的数据写入所述目标存储空间。
54.作为另一示例,当空洞数量为100并且用户设定的第三预定条件为“空洞数量大于80时取消空洞恢复管理,否则进行空洞恢复管理”时,可以确定空洞数量100满足该第三预
定条件,则此时可以将空洞的数量预置为预设值(例如0或null,并且可以设置一标志位,其指示空洞数量过多并已重置处理),然后直接从整个所述源存储空间读取所述待处理数据,并将读取的数据写入所述目标存储空间。上述第三预定条件往往是用户根据实际的应用需要而设定的,因为上述空洞数量、位置和大小等信息均是记录在元数据中,会带来一定的元数据空间的消耗,但实际上存储系统中元数据空间消耗只占很小一部分,不会有太大影响,但由于各个用户的相关业务对元数据的空间使用情况的要求不同,因此为了保证元数据空间的消耗对存储空间的影响满足一定要求,用户可以预先设定上述第三预定条件,以在空洞数量大于一定数量时才取消上述空洞恢复管理,而在空洞数量小于一定数量时彩进行上述空洞恢复管理,这样不仅可以保障元数据空间的消耗满足用户的不同业务的要求,而且可以在一定场景下发挥元数据的最大优势。
55.作为另一示例,空洞数量为100并且各个空洞存储空间(即无数区)总容量例如为50m,各个非空洞存储空间(即存储有效数据的区域)总容量例如为150m,包括各个空洞存储空间和各个非空洞存储空间的总容量例如为200m,并且用户设定的第四预定条件为“空洞存储空间与非空洞存储空间的容量比例小于40%时取消空洞恢复管理”或者为“空洞存储空间的容量小于总容量的30%时取消空洞恢复管理”,此时,空洞存储空间与非存储空间的容量比例满足上述第四预定条件,则直接从整个所述源存储空间读取所述待处理数据,并将读取的数据写入所述目标存储空间。上述第四预定条件往往是用户根据实际的应用需要而设定的。
56.根据本公开实施例,与所述空洞有关的信息可以随着所述待处理数据被写入所述源存储空间的写入过程而动态地更新。
57.根据本公开实施例,与所述空洞有关的信息随着所述待处理数据被写入所述源存储空间的写入过程而动态地更新,可以包括以下至少一项:在所述待处理数据的目录属性、命名格式、业务类型中的至少一项满足预定条件时,将与空洞的数量有关的属性信息的值设置为预定值;根据所述待处理数据的写入行为,对与所述空洞有关的信息进行更新;以及对于所述待处理数据,当预设的空洞识别禁用条件被满足时,将与空洞的数量有关的属性信息的值设置为预定值。
58.作为示例,用户可以预先设定某些待处理数据的目录是不进行空洞恢复管理。当所述待处理数据的目录属性满足上述用户设定条件时,将与空洞的数量有关的属性信息的值设置为预定值,如设置为0或null,则此时不需要进行空洞恢复管理。
59.作为另一示例,用户可以预先设定在待处理数据的命名格式是例如xxxx.avi、xxxx.jpg等视频或图片等格式时不进行空洞恢复管理。当所述待处理数据的命名格式满足上述用户设定条件时,将与空洞的数量有关的属性信息的值设置为预定值,如设置为0或null,则此时不需要进行空洞恢复管理。这是由于上述视频或图片等格式的文件通常是顺序写入的,不会产生空洞。此外,用户也可以根据需要指定其他命名格式,此次不做赘述。
60.作为另一示例,所述业务类型可以是与拍摄视频或图片相关的业务类型,也可以是用户指定的其它业务类型。当所述待处理数据的业务类型满足上述用户设定条件时,将与空洞的数量有关的属性信息的值设置为预定值,如设置为0或null,则此时不需要进行空洞恢复管理。
61.作为另一示例,所述待处理数据的写入行为可以是用户实际写入的行为(如使用
write()接口进行写入数据),也可以业务层的行为(如业务层的truncate/fallocate等行为)。例如,用户实际写入行为例如可以是附图3所示的行为,在存储空间中已经存在旧的有效数据,其存储位置为0到4k,即数据大小为4k,用户通过例如write(1m

4k,4k)在1m

4k的位置处写入了4k大小的新数据,此时写入的开始位置1m

4k与已有有效数据的结束位置4k并不连续,则在这种情况下,一定会产生如图3所示的空洞。例如,业务层的truncate/fallocate等行为会预分配存储空间并且预分配的存储空间(如1m)往往大于旧的存储空间(如附图3中的旧大小4k),但此时还不写入数据而是在后期业务的进行中不断写入数据,因此,此时业务层的truncate/fallocate等行为会直接造成空洞的产生。在上述两种情况下,就需要对与空洞相关的信息进行更新。
62.根据本公开实施例,根据所述待处理数据的写入行为,对与所述空洞有关的信息进行更新,可以包括:在写入过程中确定出现新的空洞的情况下,可以增加所述与空洞的数量有关的属性信息的值,并且增加与新出现的空洞的位置和大小有关的属性信息;其中,在读取所述待处理数据时,根据与所述空洞有关的信息跳过对空洞存储空间的访问。
63.作为示例,如在上述用户实际写入的行为和业务层的行为的情况下,确定肯定会存现新的空洞(如空洞3),则将元数据中记录的空洞的数量加1,并且记录新的空洞(如空洞3)的位置和大小,从而在读取待处理数据时,根据与所述空洞有关的信息跳过对空洞(如空洞3)存储空间的访问。
64.根据本公开实施例,当预设的空洞识别禁用条件被满足时,将与空洞的数量有关的属性信息的值设置为预定值,可以包括以下至少一项:当所述待处理数据被写入所述源存储空间时产生的空洞的数量超过预设数量阈值时,将与空洞的数量有关的属性信息的值设置为预定值;以及当所述待处理数据被写入所述源存储空间时产生的空洞存储空间与非空洞存储空间的容量比例低于预设比例阈值时,将与空洞的数量有关的属性信息的值设置为预定值。
65.作为示例,当所述待处理数据被写入所述源存储空间时产生的空洞的数量超过预设数量阈值(如类似于上述的第三预定条件,此时预设数量阈值例如为80)时,将与空洞的数量有关的属性信息的值设置为预定值例如0或null,此时不需要进行空洞恢复管理。
66.作为另一示例,当所述待处理数据被写入所述源存储空间时产生的空洞存储空间与非空洞存储空间的容量比例低于预设比例阈值(如类似与上述的第四预定条件,此时预设比例阈值例如为40%)时,将与空洞的数量有关的属性信息的值设置为预定值例如0或null,此时不需要进行空洞恢复管理。
67.以上结合图1至3详细描述了本公开提供的数据处理的方法。由以上的详细描述的内容可见,由于本公开提供的方法可以获取与待处理数据对应的元数据,其中,所述元数据包括与所述待处理数据对应的源存储空间中的空洞有关的信息,因此,当需要对待处理数据进行恢复操作时可以基于上述元数据而只恢复非空洞存储空间中的数据并且对空洞存储空间不做任何处理,这样不仅减少了数据恢复的时间,提高了数据恢复速率,增大了恢复带宽的利用率,而且还能够及时保证业务的正常运行。
68.为了使上述内容更加的清晰,接下来将结合两个示例来对上述相关内容进行进一步描述。
69.图4示出了根据本公开实施例的空洞产生及转换的示例。
70.参照图4,在步骤s410,监控对待处理数据的写入行为,如上述的通过write()接口或业务层的truncate/fallocate等对待处理数据的写入行为。
71.在步骤s420,当通过写入命令write()接口而产生写入行为时,判断写入的位置是否大于已有的有效数据的结束位置(如上述关于附图3的描述)。当写入的位置不大于已有的有效数据的结束位置时,说明此时未产生空洞,而当写入的位置大于已有的有效数据的结束位置时,说明此时产生了空洞,则进行到步骤s430。当通过业务层的truncate/fallocate等而产生写入行为时,判断预分配的存储空间是否大于旧的存储空间(如上述关于附图3的描述)。当预分配的存储空间不大于旧的存储空间时,说明此时未产生空洞,而当预分配的存储空间(如1m)大于旧的存储空间(如上述关于附图3的描述的4k)时,说明此时产生了空洞,则进行到步骤s430。
72.在步骤s430,判断目前的空洞数量是否大于或等于最大值,其中,所述最大值是用户根据应用场景预先设定的值(如100),此外,用户也可以不设置所述最大值,而是直接在步骤s450进行条件判断。
73.在步骤s430,判断出目前的空洞数量(如120)大于最大值(如100),则进行到步骤s450判断是否满足取消空洞恢复管理的条件(如类似与上述第四预定条件),如果满足,则进行到步骤s460,将空洞数量设置为0并且擦除所有的空洞信息(如上述空洞1、空洞2和空洞3的位置和大小信息);如果不满足,则进行到步骤s470结束本次对写入行为的监控,同时进行下次对写入行为的监控即重新回到步骤s410。
74.在步骤s430,判断出目前的空洞数量(如80)小于最大值(如100),则进行到步骤s440,将空洞的数量加1(如变为81),同时记录此时新产生的空洞信息(如上述新的空洞3的位置和大小),然后进行到步骤s470结束本次对写入行为的监控,同时进行下次对写入行为的监控即重新回到步骤s410。
75.应了解,对于图4所示的写入过程而言,步骤s430、s450和s460的处理是可选的。即,对于写入过程,可以不考虑空洞数量总数,仅对空洞数量进行记录,然后在恢复过程中根据空洞数量进行不同的恢复处理。
76.图5a示出了根据本公开实施例的恢复待处理数据的示例。
77.参照图5a,在步骤s510,启动恢复流程,例如可以由用户或分布式存储系统启动恢复流程。
78.在步骤s520,确定待处理数据及元数据,例如可以由用户或分布式存储系统确定待处理数据及元数据。
79.在步骤s530,判断空洞数量是否为0,在为0的情况下,说明书源存储空间中不存在空洞或者取消了空洞恢复管理,则此时进行到步骤s540,即从整个所述源存储空间读取所述待处理数据,并将读取的数据写入所述目标存储空间,如类似与图1所示的恢复效果;在不为0的情况下,说明此时源存储空间中存在空洞并且此时用户没有设定其它的条件,则进行到步骤s550,即从所述源存储空间的非空洞存储区域读取所述待处理数据,并将读取的数据写入所述目标存储空间,如类似与下图6所示的恢复效果,其中图6中仅示出了存在一个空洞的情况,此时先恢复4k的旧数据(如通过write(0,4k)的方式将数据写入到目标存储空间),然后跳过对空洞存储空间的访问,接着恢复后4k的数据,可见本公开提供的数据处理方法在对数据进行恢复过程中产生的读/写/网络消耗均由传统的恢复方法的1m优化为
8k,这大大提升了恢复的效率。
80.可选地,在写入过程中未执行图4所示的步骤s430、s450和s460的情况下,在步骤s530之后还可以包括步骤s531,如图5b所示,其中,在步骤s531,判断空洞数量是否小于预设值例如150(类似于上述第一预定条件)。当空洞数量小于预设值例如150时,则进行到步骤s550,即从所述源存储空间的非空洞存储区域读取所述待处理数据,并将读取的数据写入所述目标存储空间,如类似与下图6所示的恢复效果。当空洞数量不小于预设值例如150时,则进行到步骤s540,即从整个所述源存储空间读取所述待处理数据,并将读取的数据写入所述目标存储空间,如类似与图1所示的恢复效果。
81.此外,当存在多个空洞时(如下图7中示出了3个空洞),在进行所有数据的恢复时,可以通过以下方式进行恢复:首先,从源存储空间的起始位置(如offset为0的位置)开始恢复,一直恢复到空洞1的起始位置(即空洞1的位置offset)得到恢复的第一段数据(即数据1);然后,跳过对空洞1存储空间的访问,从空洞1的终止位置(即空洞1的offset加len的位置)开始恢复,一致恢复到空洞2的起始位置(即空洞2的位置offset)得到恢复的第二段数据(即数据2);接着,跳过对空洞2存储空间的访问,从空洞2的终止位置(即空洞2的offset加len的位置)开始恢复,一直恢复到空洞3的起始位置(即空洞3的位置offset)得到恢复的第三段数据(即数据3);最后,跳过对空洞3存储空间的访问,从空洞3的终止位置(即空洞3的offset加len的位置)开始恢复,一直恢复到源存储空间的最大位置(如图3的整个源存储空间的例如3m位置)处,得到第四段数据(即数据4)。
82.再次参考图5a或图5b,经过步骤s550或s540的处理后,步骤进行到步骤s560,结束此次恢复流程。
83.以上结合图4至图7以示例的形式描述了本公开提供的数据处理方法。可见,本公开提供的数据处理方法在需要对待处理数据进行恢复操作时可以基于元数据而只恢复非空洞存储空间中的数据并且对空洞存储空间不做任何处理,这样减少了数据恢复的时间,提高了数据恢复速率,增大了恢复带宽的利用率。
84.本公开除了提供上述数据处理方法之外,还提供了数据处理装置,下面结合图8对此进行描述。
85.图8示出了根据本公开实施例的数据处理装置800的框图。
86.参照图8,数据处理装置800可以包括确定模块810、获取模块820和恢复模块830。
87.根据本公开实施例,确定模块810可以被配置为确定待处理数据。
88.作为示例,所述待处理数据可以是待恢复数据。
89.作为示例,所述待处理数据可以是由用户指定的数据,也可以是存储系统自动识别的数据。
90.根据本公开实施例,获取模块820可以被配置为获取与所述待处理数据对应的元数据,其中,所述元数据可以包括与所述待处理数据对应的源存储空间中的空洞有关的信息。
91.作为示例,当存储系统中的一个存储节点故障时,在恢复数据时可以从与该存储
节点对应的冗余存储节点(如源存储空间)获取与该恢复数据对应的元数据。
92.作为示例,所述空洞可以是在将所述待处理数据写入与所述待处理数据对应的源存储空间中时产生的。
93.根据本公开实施例,恢复模块830可以被配置为根据与所述空洞有关的信息,将所述待处理数据从所述源存储空间恢复至目标存储空间。
94.作为示例,所述目标存储空间可以是分布式存储系统中的未写入数据的存储节点,也可以是新加入分布式存储系统中的存储节点(如新替换的存储设备),也可以是故障存储节点自身(如对故障存储节点的存储设备进行数据刷新)。
95.由于以上已经在描述根据本公开的数据处理方法的过程中,对上述操作所涉及的内容的细节进行了介绍,因此这里为简洁起见不再赘述,相关细节可参照以上关于图1至图7的描述。
96.本公开还提供了一种分布式存储系统,接下来将结合图9对此进行详细描述。
97.图9示出了根据本公开实施例的分布式存储系统900的框图。
98.参照图9,所述分布式存储系统900可以包括多个存储节点(如存储节点910

940)、目标存储节点950和存储控制器960。
99.根据本公开实施例,所述多个存储节点可以提供数据冗余存储,并且所述多个存储节点中的至少一个存储节点(如存储节点910)为故障节点,并且所述多个存储节点中存在与所述故障节点对应的冗余节点(如存储节点920至940中的至少一个存储节点)。
100.根据本公开实施例,所述目标存储节点950可以用于替代所述故障节点(如替代存储节点910),图9中仅示出了一个目标存储节点,但可以根据应用场景设置多个目标存储节点,也可以从存储节点920至940中选择一个或多个作为目标存储节点,此次不做赘述。
101.作为示例,上述故障的产生可以是由于存储节点910的存储软件故障或存储硬件(如硬盘)故障造成的。
102.作为示例,上述目标节点950可以是原有的存储节点,或者是在原有的存储节点(如存储节点910至940中任何一个)中插入新的硬件存储设备。
103.作为示例,上述多个存储节点(如存储节点910

940)和目标存储节点950的物理位置可以位于不同的位置。
104.根据本公开实施例,存储控制器960可以从与所述故障节点对应的冗余节点将所述故障节点所存储的待处理数据恢复到所述目标存储节点。
105.作为示例,存储控制器960可以通过有线或无线的方式与存储节点910至940以及目标存储节点950进行通信。
106.作为示例,存储控制器960可以从与存储节点910(即故障节点)对应的冗余节点920将存储节点910所存储的待处理数据恢复到目标存储节点950。
107.根据本公开实施例,所述存储控制器960可以获取与所述待处理数据对应的元数据,其中,所述元数据包括所述冗余节点(如存储节点920)中与所述待处理数据对应的存储空间中的空洞有关的信息;并且根据与所述空洞有关的信息,将所述待处理数据从所述冗余节点(如存储节点920)恢复至所述目标存储节点(如目标存储节点950)。
108.作为示例,所述元数据还可以包括与所述待处理数据对应的其它基本信息,如大小、时间和标识符等。
109.作为示例,所述空洞可以是在将所述待处理数据写入与所述待处理数据对应的存储节点(如存储节点920)中时产生的。
110.根据本公开实施例,与所述空洞有关的信息可以包括与所述空洞的数量、位置和大小有关的属性信息。
111.作为示例,所述空洞数量(hole cnt)可以是:0、1、2、3等。
112.作为示例,空洞1(hole1)的位置(offset)和大小(len)可以分别是:4k,1016k。
113.作为示例,空洞2(hole2)的位置(offset)和大小(len)可以分别是:1m,100k。
114.根据本公开实施例,所述根据与所述空洞有关的信息,将所述待处理数据从所述冗余节点恢复至所述目标存储节点,包括:当根据与所述空洞有关的信息确定所述冗余节点中存在空洞、或者所述空洞的数量满足第一预定条件、或者空洞存储空间与非空洞存储空间的容量比例满足第二预定条件时,根据与所述空洞的位置和大小有关的信息仅从所述冗余节点的非空洞存储区域读取所述待处理数据,并将读取的数据写入所述目标存储节点;当根据与所述空洞有关的信息确定所述冗余节点中不存在空洞、或者所述空洞的数量满足第三预定条件、或者空洞存储空间与非空洞存储空间的容量比例满足第四预定条件时,直接从整个所述冗余节点读取所述待处理数据,并将读取的数据写入所述目标存储节点。
115.作为示例,当空洞数量为100时,可以确定出此时冗余节点(如存储节点920)存在空洞并且数量为100个,则此时可以根据每个空洞的位置和大小(如上述空洞1和空洞2的位置和大小),仅从冗余节点(如存储节点920)的非空洞存储区域(即除了上述空洞1、空洞2等之外的存储区域)读取所述待处理数据,然后将读取的数据写入到所述目标存储节点(如目标存储节点950)。
116.作为另一示例,当空洞数量为100并且用户设定的第一预定条件为“空洞数量小于150时进行空洞恢复管理,否则取消空洞恢复管理”时,可以确定空洞数量100满足该第一预定条件,则可以根据每个空洞的位置和大小(如上述空洞1和空洞2的位置和大小),仅从冗余节点(如存储节点920)的非空洞存储区域(即除了上述空洞1、空洞2等之外的存储区域)读取所述待处理数据,然后将读取的数据写入到所述目标存储节点(如目标存储节点950)。上述第一预定条件往往是用户根据实际的应用需要而设定的,因为上述空洞数量、位置和大小等信息均是记录在元数据中,会带来一定的元数据空间的消耗,但实际上存储系统中元数据空间消耗只占很小一部分,不会有太大影响,但由于各个用户的相关业务对元数据的空间使用情况的要求不同,因此为了保证元数据空间的消耗对存储空间的影响满足一定要求,用户可以预先设定上述第一预定条件,以在空洞数量小于一定数量时才进行上述空洞恢复管理,而在空洞数量大于一定数量时取消空洞恢复管理(如将空洞数量设置为0),这样可以保障元数据空间的消耗满足用户的不同业务的要求。
117.作为另一示例,当空洞数量为0时,可以确定出此时冗余节点(如存储节点920)不存在空洞,则此时可以直接从整个所述冗余节点读取所述待处理数据,并将读取的数据写入所述目标存储节点(如目标存储节点950)。
118.根据本公开实施例,与所述空洞有关的信息可以随着所述待处理数据被写入所述冗余节点的写入过程而动态地更新。
119.根据本公开实施例,与所述空洞有关的信息随着所述待处理数据被写入所述冗余
节点的写入过程而动态地更新,可以包括以下至少一项:在所述待处理数据的目录属性、命名格式、业务类型中的至少一项满足预定条件时,将与空洞的数量有关的属性信息的值设置为预定值;根据所述待处理数据的写入行为,对与所述空洞有关的信息进行更新;以及对于所述待处理数据,当预设的空洞识别禁用条件被满足时,将与空洞的数量有关的属性信息的值设置为预定值。
120.作为示例,用户可以预先设定某些待处理数据的目录是不进行空洞恢复管理。当所述待处理数据的目录属性满足上述用户设定条件时,将与空洞的数量有关的属性信息的值设置为预定值,如设置为0或null,则此时不需要进行空洞恢复管理。
121.作为另一示例,用户可以预先设定在待处理数据的命名格式是例如xxxx.avi、xxxx.jpg等视频或图片等格式时不进行空洞恢复管理。当所述待处理数据的目命名格式满足上述用户设定条件时,将与空洞的数量有关的属性信息的值设置为预定值,如设置为0或null,则此时不需要进行空洞恢复管理。这是由于上述视频或图片等格式的文件通常是顺序写入的,不会产生空洞。此外,用户也可以根据需要指定其他命名格式,此次不做赘述。
122.根据本公开实施例,根据所述待处理数据的写入行为,对与所述空洞有关的信息进行更新,可以包括:在写入过程中确定出现新的空洞的情况下,可以增加所述与空洞的数量有关的属性信息的值,并且增加与新出现的空洞的位置和大小有关的属性信息;其中,在读取所述待处理数据时,根据与所述空洞有关的信息跳过对空洞存储空间的访问。
123.作为示例,如在上述在结合图3描述的用户实际写入的行为和业务层的行为的情况下,确定会存现新的空洞(如上述空洞3),则将元数据中记录的空洞的数量加1,并且记录新的空洞(如上述空洞3)的位置和大小,从而在在读取待处理数据时,根据与所述空洞有关的信息跳过对空洞(如空洞3)存储空间的访问。
124.根据本公开实施例,当预设的空洞识别禁用条件被满足时,将与空洞的数量有关的属性信息的值设置为预定值,可以包括以下至少一项:当所述待处理数据被写入所述冗余节点时产生的空洞的数量超过预设数量阈值时,将与空洞的数量有关的属性信息的值设置为预定值;以及当所述待处理数据被写入所述冗余节点时产生的空洞存储空间与非空洞存储空间的容量比例低于预设比例阈值时,将与空洞的数量有关的属性信息的值设置为预定值。
125.再次参照图9,所述分布式存储系统900还可包括主机980。
126.根据本公开实施例,主机980可以通过有线或无线网络970与存储控制器960进行通信,以便于用户通过主机980与存储控制器960和存储节点910至940及目标存储节点950进行数据交互,例如,用户可以通过主机980确定待处理数据、确定目标存储节点是目标存储节点950还是存储节点910至940中的一个等等。
127.由于以上已经在描述根据本公开的数据处理方法的过程中,对上述操作所涉及的内容的细节进行了介绍,因此这里为简洁起见不再赘述,相关细节可参照以上关于图1至图7的描述。
128.由于以上已经参照图1至图9描述了根据公开的实施例的数据处理方法、装置和分布式存储系统。然而,应理解的是:图8所示的装置中的各个模块可被分别配置为执行特定功能的软件、硬件、固件或上述项的任意组合。例如,这些模块可对应于专用的集成电路,也可对应于纯粹的软件代码,还可对应于软件与硬件相结合的模块。
129.图10示出了根据本公开实施例的数据处理设备1000的结构图。
130.参见图10,数据处理设备1000可以包括一个或多个处理器1001和一个或多个存储器1002。一个或多个处理器1001和一个或多个存储器1002都可以通过总线1003相连。
131.一个或多个处理器1001可以根据存储在一个或多个存储器1002中的程序执行各种动作和处理。具体地,一个或多个处理器1001可以是一种集成电路芯片,具有信号的处理能力。上述处理器可以是通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,可以是x86架构或arm架构的。
132.一个或多个存储器1002存储有计算机可执行指令,在计算机可执行指令被处理器1001执行时实现上述数据处理的方法。一个或多个存储器1002可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)或闪存。易失性存储器可以是随机存取存储器(ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(sram)、动态随机存取存储器(dram)、同步动态随机存取存储器(sdram)、双倍数据速率同步动态随机存取存储器ddrsdram)、增强型同步动态随机存取存储器(esdram)、同步连接动态随机存取存储器(sldram)和直接内存总线随机存取存储器(dr ram)。应注意,本文描述的方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
133.本公开还提供了一种计算机程序产品,存储有计算机可执行指令,所述计算机可执行指令当由处理器执行时促使处理器执行上述数据处理的方法。
134.本公开还提供了一种计算机可读记录介质,存储有计算机可执行指令,所述计算机可执行指令当由处理器执行时促使处理器执行上述数据处理的方法。类似地,本公开实施例中的计算机可读存储介质可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。应注意,本文描述的计算机可读存储介质旨在包括但不限于这些和任意其它适合类型的存储器。
135.需要说明的是,附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
136.一般而言,本公开的各种示例实施例可以在硬件或专用电路、软件、固件、逻辑,或其任何组合中实施。某些方面可以在硬件中实施,而其他方面可以在可以由控制器、微处理器或其他计算设备执行的固件或软件中实施。当本公开的实施例的各方面被图示或描述为框图、流程图或使用某些其他图形表示时,将理解此处描述的方框、装置、系统、技术或方法
可以作为非限制性的示例在硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备,或其某些组合中实施。
137.在上面详细描述的本发明的示例实施例仅仅是说明性的,而不是限制性的。本领域技术人员应该理解,在不脱离本发明的原理和精神的情况下,可对这些实施例或其特征进行各种修改和组合,这样的修改应落入本发明的范围内。
转载请注明原文地址:https://doc.8miu.com/read-1450041.html

最新回复(0)