一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据重构方法及装置与流程

2022-07-02 10:48:54 来源:中国专利 TAG:


1.本说明书一个或多个实施例涉及计算机应用领域,尤其涉及一种数据重构方法及装置。


背景技术:

2.在分布式存储系统中,一般为了保证数据的可靠性,采用纠删码(erasure coding,ec)校验组的方式来存储数据,即将一段数据分成多片数据片,基于多片数据片生成多片校验片(一段数据对应的多片数据片和多片校验片共同组成了ec校验组),并将多片数据片和多片校验片分别存储在不同节点设备中,比如一个设备中存储一片数据片或一片校验片。这样即使任一节点设备故障只会导致一片数据片丢失,且在任意1个数据片丢失时,可以通过其他数据片及校验片重构丢失的该片数据。
3.重构丢失的数据片的过程具体包括,分布式存储系统中的元数据节点(分布式存储系统一般包括一个元数据节点和若干个数据节点)指定一个目标节点作为重构数据片以及存储重构后的数据片的节点,目标节点获取丢失的数据所对应的其他数据片及校验片,并通过获取的数据片及校验片重构得到丢失的数据片,最后目标节点将重构得到的数据片存储至本机中。
4.分布式存储系统的服务器集群分为多个故障域,为了保证数据的可靠性,通常将一组ec校验组分散存储在多个故障域内。这种情况下,为了防止一个故障域内存储过多数据导致数据不安全,在任一节点设备故障需要并重构一片数据片的情况下,选择的目标节点所在故障域不能为:该ec校验组对应的其他源节点所在的故障域(该ec校验组也就是需要重构的数据片所对应的ec校验组,该ec校验组对应的其他源节点即该ec校验组中,除了需要重构的数据片所在的故障域之外,其他数据片和校验片所在的数据节点)。换言之,目标节点并不能在整个服务器集群内随意挑选,只能在较小的范围内进行挑选,即目标节点的挑选范围受到较大的限制。
5.由于重构数据本身需要占用大量带宽,在服务器集群故障域数量较少的情况下,上述目标节点的限制会使得目标节点的通信压力较大。


技术实现要素:

6.有鉴于此,本说明书一个或多个实施例提供一种数据重构方法及装置。
7.根据本说明书一个或多个实施例的第一方面,提出了一种数据重构方法,应用于分布式存储系统,所述分布式存储系统包括一个元数据节点和若干数据节点;所述方法包括:
8.所述元数据节点根据存储目标数据片对应的纠删码ec校验组的故障域,选择存储节点;所述目标数据片是待重构的数据片,所述存储节点不属于:除存储目标数据片的故障域之外,其他存储所述ec校验组的故障域;
9.所述元数据节点在所述若干数据节点中选择重构节点;
10.所述重构节点获取所述目标数据片对应的ec校验组的其他数据片和校验片,并根据获取的所述其他数据片和校验片重构所述目标数据片;
11.所述重构节点将重构后的目标数据片发送至所述存储节点,所述存储节点存储所述重构后的目标数据片。
12.根据本说明书一个或多个实施例的第二方面,提出了一种数据重构方法,应用于分布式存储系统中的元数据节点,所述分布式存储系统包括一个元数据节点和若干数据节点;
13.所述方法包括:
14.根据存储目标数据片对应的ec校验组的故障域,选择存储节点;所述目标数据片是待重构的数据片,所述存储节点不属于:除存储目标数据片的故障域之外,其他存储所述ec校验组的故障域;
15.在所述若干数据节点中选择重构节点,以使所述重构节点获取所述目标数据片对应的ec校验组的其他数据片和校验片,并根据获取的所述其他数据片和校验片重构所述目标数据片,并将重构后的目标数据片发送至所述存储节点,所述存储节点存储所述重构后的目标数据片。
16.根据本说明书实施例的第三方面,提供一种数据重构方法,应用于分布式存储系统中的数据节点;所述分布式存储系统包括一个元数据节点和若干数据节点;
17.在所述数据节点为所述元数据节点在所述若干数据节点中选择的重构节点的情况下,所述方法包括:
18.获取目标数据片对应的ec校验组的其他数据片和校验片,并根据获取的所述其他数据片和校验片重构所述目标数据片;所述目标数据片是待重构的数据片;
19.将重构后的目标数据片发送至所述存储节点;
20.或,在所述数据节点为所述元数据节点根据存储目标数据片对应的ec校验组的故障域选择的存储节点的情况下,所述方法包括:
21.接收重构节点发送的重构后的目标数据片,并存储所述重构后的目标数据片;所述存储节点不属于:除存储目标数据片的故障域之外,其他存储所述ec校验组的故障域。
22.根据本说明书实施例的第四方面,提供一种分布式存储系统,所述分布式存储系统包括一个元数据节点和若干数据节点;
23.所述元数据节点根据存储目标数据片对应的纠删码ec校验组的故障域,选择存储节点;在所述若干数据节点中选择重构节点;所述目标数据片是待重构的数据片,所述存储节点不属于:除存储目标数据片的故障域之外,其他存储所述ec校验组的故障域;
24.所述重构节点获取所述目标数据片对应的ec校验组的其他数据片和校验片,并根据获取的所述其他数据片和校验片重构所述目标数据片;将重构后的目标数据片发送至所述存储节点;
25.所述存储节点接收重构节点发送重构后的目标数据片,并存储所述重构后的目标数据片。
26.根据本说明书实施例的第五方面,提供一种数据重构装置,应用于分布式存储系统中的元数据节点,所述分布式存储系统包括一个元数据节点和若干数据节点;
27.所述装置包括:
28.存储节点选择模块,用于根据存储目标数据片对应的ec校验组的故障域,选择存储节点;所述目标数据片是待重构的数据片,所述存储节点不属于:除存储目标数据片的故障域之外,其他存储所述ec校验组的故障域;
29.重构节点选择模块,用于在所述若干数据节点中选择重构节点,以使所述重构节点获取所述目标数据片对应的ec校验组的其他数据片和校验片,并根据获取的所述其他数据片和校验片重构所述目标数据片,并将重构后的目标数据片发送至所述存储节点,所述存储节点存储所述重构后的目标数据片。
30.根据本说明书实施例的第六方面,提供一种数据重构装置,应用于分布式存储系统中的数据节点;所述分布式存储系统包括一个元数据节点和若干数据节点;
31.在所述数据节点为所述元数据节点在所述若干数据节点中选择的重构节点的情况下,所述装置包括:
32.目标数据片重构模块,用于获取目标数据片对应的ec校验组的其他数据片和校验片,并根据获取的所述其他数据片和校验片重构所述目标数据片;所述目标数据片是待重构的数据片;
33.目标数据片发送模块,用于将重构后的目标数据片发送至所述存储节点;
34.或,在所述数据节点为所述元数据节点根据存储目标数据片对应的ec校验组的故障域选择的存储节点的情况下,所述装置包括:
35.目标数据片存储模块,用于接收重构节点发送的重构后的目标数据片,并存储所述重构后的目标数据片,所述存储节点不属于:除存储目标数据片的故障域之外,其他存储所述ec校验组的故障域。
36.根据本说明书实施例的第七方面,提供一种电子设备,包括:
37.处理器;
38.用于存储处理器可执行指令的存储器;
39.其中,所述处理器通过运行所述可执行指令以实现前述的数据重构方法。
40.根据本说明书实施例的第八方面,提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现前述的数据重构方法。
41.根据本说明书实施例的第九方面,提供一种计算机程序,所述计算机程序被处理器执行时实现前述的数据重构方法。
42.本说明书提供的一种数据重构方法及装置,应用于分布式存储系统,所述分布式存储系统包括一个元数据节点和若干数据节点;所述元数据节点根据存储目标数据片对应的纠删码ec校验组的故障域,选择存储节点;所述目标数据片是待重构的数据片,所述存储节点不属于:除存储目标数据片的故障域之外,其他存储所述ec校验组的故障域;所述目标数据片是待重构的数据片;所述元数据节点在所述若干数据节点中选择重构节点;所述重构节点获取所述目标数据片对应的ec校验组的其他数据片和校验片,并根据获取的所述其他数据片和校验片重构所述目标数据片;所述重构节点将重构后的目标数据片发送至所述存储节点,所述存储节点存储所述重构后的目标数据片。
43.相比于相关技术中的目标节点同时负责重构和存储,本说明书通过将重构和存储过程解耦,使得可以由重构节点和存储节点分别完成重构和存储。且相关技术中之所以目标节点选择范围存在限制,是因为存储过程中有数据可靠性的要求(不能让一个故障域存
储一个ec校验组的过多片),而重构过程并没有上述要求,因此可以从所有服务器集群中选择重构节点。在服务器集群故障域数量较少的情况下,特别是每个ec校验组在所有故障域中都存储有数据的情况下,原先集中于一个故障域内多台机器的流量(获取其他数据片和校验片所用流量)能平分至整个服务器集群,从而减轻了单个数据节点的通信压力。
44.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
附图说明
45.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
46.图1是本说明书根据一示例性实施例示出的一种数据重构方法的流程图。
47.图2a是本说明书根据一具体实施例示出的一种数据重构方法的流程图。
48.图2b是本说明书根据一具体实施例示出的一种重构节点选择方法的示意图。
49.图2c是本说明书根据一具体实施例示出的一种数据重构方法中各节点的交互示意图。
50.图3a是本说明书根据一示例性实施例示出的另一种数据重构方法的流程图。
51.图3b是本说明书根据一示例性实施例示出的又一种数据重构方法的流程图。
52.图4是本说明书根据一示例性实施例示出的一种数据重构装置的框图。
53.图5是本说明书根据一示例性实施例示出的另一种数据重构装置的框图。
54.图6是本说明书根据一示例性实施例示出的一种数据重构装置所在电子设备的一种硬件结构图。
具体实施方式
55.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
56.需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
57.分布式存储系统是一种将用户上传的数据在多个数据节点存储副本或组织称纠删码以提升数据可靠性的系统。分布式存储系统的服务器集群一般包括一个元数据节点(metanode)和若干数据节点(datanode),元数据节点是分布式存储系统中,中心化的元信息存储节点,通常用于存储文件的状态信息、数据块(chunk)位置信息等,数据块长度信息等。数据节点是分布式存储系统中数据块所存储在的节点,通常负责数据块副本的写入、存储、读取,和删除等操作。还需要说明的是,分布式存储系统的服务器集群一般还分为多个
故障域,故障域即表示:数据节点会一起故障的范围;一般将一个机架看作一个故障域,有些情况下在机架的电源出现问题(或其他问题),可能会导致整个机架(故障域)内所有数据节点一起宕机。
58.除了依靠将一份数据存储多个副本来提升数据可靠性之外,分布式存储系统中一般还通过ec校验组来维护数据的可靠性。具体而言,在存储一段数据的情况下,通常会将一份数据切分成等长多片数据片,并基于该等长多片生成多片校验片(多片数据片和校验片共同组成了ec校验组)。ec校验组具有如下特性:当其中任意一片或多片丢失时(丢失的数据片数量小于等于该ec校验组中校验片的数量),都可从其他数据片和校验片中重构恢复丢失数据片(需要说明的是,在丢失的数据片数量大于该ec校验组中校验片的数量的情况下,将无法重构得到丢失的数据片)。
59.此外,为了防止整段数据丢失,一般还会将不同的数据片/校验片存储至不同的数据节点,这样即使一个数据节点故障,也不会导致整段数据丢失。进一步地,考虑到故障域内数据节点之间的约束,有些情况下一个故障域内的所有数据节点可能会同时故障,为了防止这种情况下整段数据的丢失,一般也会将一个ec校验组存储至多个故障域中(最好是一个故障域中只存储一片数据片或者一片校验片,这样即使整个故障域内的所有数据节点同时故障,也只会丢失一个数据片)。
60.在对分布式存储系统以及ec校验组的存放方式进行介绍后,接下来将详细叙述相关技术中在任一数据节点故障的情况下,如何重构数据片,以及在重构数据片的过程中所遇到的问题。
61.在上述背景下,在一个或多个数据节点故障的情况下,分布式存储系统会自动发现故障。针对该故障的数据节点中存储的任意一片数据片,元数据节点会指定一个目标节点,并通过该目标节点获取需要重构的数据片对应的ec校验组的其他片数据片和校验片,以重构该数据片,并将重构后的数据片存储至该目标节点的存储介质中,以保证数据的可靠性。目标节点重构该数据片成功后/执行完该目标节点负责的所有重构任务后,主动告知元数据节点重构完成,或在元数据节点轮询时告知元数据节点重构完成。
62.在上述过程中,一方面,由于存在一个或多个数据节点故障的情况下,需要重构的数据片较多,而重构每个数据片都需要获取该数据片对应的ec校验组的所有数据片和校验片(比如ec校验组包括8个数据片和3个校验片,那么目标节点至少需要读取8份数据),在某个目标节点的重构任务较多的情况下,该目标节点的通信压力较大,且重构较慢。
63.另一方面,如上所述,每个ec校验组需要扩散在不同的故障域中,那么为了防止故障域内所有数据节点同时故障导致数据丢失,需要防止某个故障域内存储了一个ec校验组的过多数据,也就是在重构数据的时候,仍需要ec校验组中的各个数据片/校验片较为平均存储在各个故障域中。
64.在上述情况下,选择目标节点的范围会受限。特别是在机架较少的情况下,上述限制会使得只能由几个数据节点完成重构任务。比如分布式存储系统的服务器集群具有11个故障域,每个ec校验组都是有8片数据片和3片校验片,每个故障域存储了一片数据片/校验片,这种情况下,故障的数据节点中的大量数据片,只能由该故障的数据节点所在的故障域的其他数据节点来处理(不然就可能使得某个故障域存储了同一ec校验组的两个数据片/校验片,使得数据存储不可靠)。换言之,虽然数据节点有很多,但是在故障域数据小于ec校
验组中数据片和校验片的数量和时,重构任务仅能由:故障的数据节点所在的故障域内的其他数据节点执行,这使得该故障域内的数据节点通信压力较大,且流入带宽成为传输瓶颈,数据重构时间增加。
65.通过上述分析可知,相关技术中缺少一种在保证数据可靠性的前提下,减轻重构过程中目标节点通信压力的方法。
66.为了解决上述问题,考虑到目标节点选择存在上述限制,是为了ec校验组存储的更为平均,以防止某个故障域内所有节点故障导致ec校验组较多的数据丢失。而重构过程和存储过程是可以拆分的两个过程,完成重构的数据节点的选择并没有上述限制,进而完成重构的数据节点可以从整个服务器集群来选择。这样在故障域数量较少的情况下,相关技术中完成重构的流量是由一个故障域内的未故障数据节点来承担的,本说明书提供的方法中完成重构的流量由整个服务器集群共同承担,大大减少了每台执行重构的数据节点的通信压力。
67.换言之,本说明书提供的一种数据重构方法及装置,应用于分布式存储系统,所述分布式存储系统包括一个元数据节点和若干数据节点;所述元数据节点根据存储目标数据片对应的纠删码ec校验组的故障域,选择存储节点;所述目标数据片是待重构的数据片,所述存储节点不属于:除存储目标数据片的故障域之外,其他存储所述ec校验组的故障域;所述元数据节点在所述若干数据节点中选择重构节点;所述重构节点获取所述目标数据片对应的ec校验组的其他数据片和校验片,并根据获取的所述其他数据片和校验片重构所述目标数据片;所述重构节点将重构后的目标数据片发送至所述存储节点,所述存储节点存储所述重构后的目标数据片。
68.相比于相关技术中的目标节点同时负责重构和存储,本说明书通过将重构和存储过程解耦,使得可以由重构节点和存储节点分别完成重构和存储。且相关技术中之所以目标节点选择范围存在限制,是因为存储过程中有数据可靠性的要求(不能让一个故障域存储一个ec校验组的过多片),而重构过程并没有上述要求,因此可以从所有服务器集群中选择重构节点。在服务器集群故障域数量较少的情况下,特别是每个ec校验组在所有故障域中都存储有数据的情况下,原先集中于一个故障域内多台机器的流量(获取其他数据片和校验片所用流量)能平分至整个服务器集群,从而减轻了单个数据节点的通信压力。
69.接下来将对本说明书提供的一种数据重构方法进行说明。
70.如图1所示,图1是本说明书根据一示例性实施例示出的一种数据重构方法的示意图,包括以下步骤:
71.步骤101,元数据节点根据存储目标数据片对应的纠删码ec校验组的故障域,选择存储节点。
72.其中,目标数据片是待重构的数据片,选择的存储节点不属于:除存储目标数据片的故障域之外,其他存储所述ec校验组的故障域。
73.首先需要对本说明书示出的一种数据重构方法的应用场景进行整体说明。该方法应用于分布式存储系统,分布式存储系统包括一个元数据节点和若干数据节点。其中,分布式存储系统、元数据节点和数据节点的含义在上文已经进行了说明,在此不再赘述。还需要说明的是,分布式存储系统是由一个服务器集群组成的,上述元数据节点和若干数据节点共同组成了该服务器集群。
74.换言之,本说明书应用于存在ec校验组,且为了数据可靠性将ec校验组扩散至多个故障域的分布式存储系统(比如用于存储普通文件的系统,或者用于存储数据库的系统等)。
75.该步骤也就是选择存储节点的过程,存储节点也就是最后存储重构后的数据的节点。如上文所述,为了保证数据可靠性,存储节点的选取限制和相关技术中目标节点的选取限制一样,即选取的存储节点不能是:存储该目标数据片对应的ec校验组其他数据片(除了目标数据片之外的其他数据片)/校验片的故障域(除了存储目标数据片的故障域之外)。这样才能保证恢复后的数据仍分散的分布在多个故障域中,进而保证数据的可靠性。
76.比如,服务器集群中有5个故障域,目标数据片存储在第一个故障域,目标数据片对应的ec校验组扩散在了1-3故障域,那么存储节点只能在第一个故障域、第四个故障域和第五个故障域之中选择。
77.在对步骤101和该方法的整体应用场景进行说明后,接下来将对步骤101中涉及的各个名词进行说明。
78.目标数据片也就是待重构的数据片。该方法可以在数据节点故障的情况下执行,这种情况下,目标数据片也就是故障的数据节点内存储的任一数据片,故障的数据节点内存储的其他数据片的重构方法和目标数据片的重构方法相同,本说明书只是以一个数据片的重构方法为例来说明数据节点故障的情况下,如何重构故障的数据节点内存储的数据片。还需要说明的是,本说明书提供的方法也可以在其他情况下执行,比如数据节点部分存储介质损坏等。
79.故障域和ec校验组的含义在上文已经说明,在此不再赘述。其中,目标数据片对应的ec校验组,也就是包括该目标数据片的ec校验组。存储ec校验组的故障域,也就是ec校验组包括的各个数据片和校验片所存储于的数据节点位于的故障域。
80.最后,存储节点的选取除了上文中提及的限制之外,为了平衡各个存储节点的存储压力,存储节点也可以在可选范围内,选择存储的数据最少(也就是数据水位最低)的节点作为存储节点。此外,存储节点也可以按照其他的条件来选取,存储节点的选取方法可以参照相关技术中目标节点的选取方法,在此不再对存储节点的其他选取方法进行赘述。
81.步骤103,元数据节点在所述若干数据节点中选择重构节点。
82.该步骤也就是选择重构节点的过程,重构节点也就是负责重构目标数据片的节点。如上文所述,相比于相关技术中选择目标节点的限制,需要获取数据片和校验片的重构节点可以在服务器集群中的所有数据节点中选择,使得原先由几个数据节点负担的流量可以由全部数据节点承担,减少了每个重构节点上的流量负载。
83.此外,为了使得服务器集群内流量尽量负载均衡,防止某一数据节点出现传输瓶颈,选取重构节点可以是基于负载均衡的原则进行选取。
84.具体而言,首先,可以通过轮询的方式来选取,换言之,将所有重构任务按照各个数据节点的顺序下发至各个数据节点,以使得各个数据节点的流量更加平均。
85.其次,还可以根据各个数据节点当前通信压力进行选择,换言之,步骤103包括:
86.步骤1031,元数据节点获取各个数据节点的可用重构带宽。
87.步骤1032,元数据节点根据所述各个数据节点的可用重构带宽,在所述若干数据节点中选择可用重构带宽满足重构标准的数据节点作为重构节点。
88.当然基于负载均衡的重构节点的选取方法不限于上述举例,只要是能实现负载均衡的方法,都可以作为重构节点的选取方法。
89.对于上述第二种实现负载均衡的方法而言,首先需要对步骤1031进行说明。可用重构带宽也就是数据节点可以用来重构过程中通信(获取重构所需的数据片和校验片)的带宽,其有两种形式,一种是该数据节点预留的静态重构带宽,另一种是动态获取的各个数据节点当前的可用带宽。
90.对于预留的静态重构带宽而言,每个数据节点会预留一部分通信带宽作为静态重构带宽,可以将静态重构带宽,减去该重构节点剩余的重构任务预计占用的带宽(剩余的重构任务也就是还未完成的重构任务,数据节点很可能正在与其他节点通信以完成剩余的重构任务,因此需要将预留的静态重构带宽减去该值),作为该数据节点的可用重构带宽。
91.换言之,步骤1031包括:所述元数据节点获取各个数据节点分别对应的预留的静态重构带宽、以及剩余的重构任务数量;对于任一数据节点,所述元数据节点根据该数据节点的静态重构带宽和重构任务数量得到该数据节点的可用重构带宽。
92.这种方式下,由于元数据节点可以预先存储各个数据节点的静态重构带宽,且每个重构任务均是有元数据节点下发的,且元数据节点会同步知道各个重构任务是否完成,因此这种方法中,元数据节点无需和外界通信,可以通过自身存储的数据简单地获知各个数据节点的可用重构带宽,使得获取可用重构带宽的过程更快捷便利。
93.对于动态获取的各个数据节点当前的可用带宽而言,元数据节点可以和各个数据节点通过心跳通信来获取各个数据节点的实时可用带宽,并将该数据节点当前可用带宽直接作为可用重构带宽。
94.换言之,步骤1031包括:元数据节点获取各个数据节点的动态可用带宽,将每个数据节点的动态可用带宽作为该数据节点的可用重构带宽。
95.这种方式下,由于可用重构带宽是动态获取的真实值,使得可用重构带宽获取的更为准确灵活,从而能更好的选择重构节点。
96.在对步骤1031的实现方式进行说明后,接下来将对步骤1032进行说明。
97.首先,考虑到对于目标数据片而言,如果能在目标数据片对应的源节点(含义将在下文说明)和存储节点中选择重构节点,将可以减少传输一个数据片/校验片,可以减轻传输中的网络通信压力。
98.换言之,步骤1032包括:所述元数据节点根据各个数据节点的可用重构带宽,在所述若干数据节点中的源节点和所述存储节点中,选择可用重构带宽满足重构标准的数据节点作为重构节点。
99.其中,源节点是目标数据片对应的ec校验组所位于的其他未故障的数据节点。目标数据片对应的ec校验组的含义在上文已经进行了说明,在此不再赘述。ec校验组所位于的其他未故障的数据节点,也就是:ec校验组中除目标数据片之外的其他数据片/校验片所存储的数据节点。
100.其次,还需要对重构标准进行说明。重构标准可以是可用重构带宽大于预设阈值,可以在可用重构带宽大于预设阈值的数据节点中任选一个作为重构节点,在不存在可用重构带宽大于预设阈值的数据节点的情况下,可以将可用重构带宽最大的数据节点作为重构节点。
101.此外,重构标准还可以是:将可用重构带宽最大的数据节点作为重构节点。换言之,步骤1032包括:元数据节点根据所述各个数据节点的可用重构带宽,在所述若干数据节点中选择可用重构带宽最大的数据节点作为重构节点。
102.在对步骤103的具体实现方法从多个方面进行说明后,还需要说明的是,在步骤103执行完成后,也就是元数据节点选择了重构节点后,元数据节点还需要将目标数据片的重构任务(重构任务也就是重构目标数据片的任务)发送给选择的重构节点。
103.此外,对于步骤103和步骤101的执行顺序而言,在不需要根据存储节点选择重构节点的情况下,步骤103可以先于步骤101执行,换言之,步骤101和步骤103的数字上的先后顺序并不表示对两者执行顺序的限定。
104.对于重构节点和存储节点而言,数据节点被元数据节点选择后才会具有重构节点/存储节点的身份,重构节点和存储节点表明的是数据节点的一种身份,并不是数据节点在上线之初就会被认定为重构节点/存储节点。以及,这种身份会随着目标数据片的重构完成而消失。此外,同一个数据节点既可以是重构目标数据片1的重构节点,也可以是重构目标数据片2的存储节点。
105.步骤105,重构节点获取目标数据片对应的ec校验组的其他数据片和校验片,并根据获取的其他数据片和校验片重构目标数据片。
106.该步骤也就是重构节点完成目标数据片重构的过程。重构节点虽然仍获取了目标数据片对应的ec校验组包括的其他数据片(除了需要重构的这个数据片之外的其他数据片)和校验片,但是对于故障的数据节点上的大量待重构的数据片而言,由于相关技术中在故障域较少的情况下,待重构的数据片的重构任务都是由几个数据节点承担的,而现在可以有所有数据节点共同承担,从而减轻了单个数据节点的传输压力。
107.在对步骤105进行整体说明后,接下来将对步骤105中涉及的其他名词进行说明。
108.目标数据片对应的ec校验组含义在上文已经进行了说明,在此不再赘述。其他数据片和校验片,也就是目标数据片对应的ec校验组内,除了目标数据片之外的其他数据片和校验片。
109.对于重构实现而言,本说明书提供的方法并未更改通过ec校验组重构数据的方法,具体的重构方法可以参考其他相关技术中的实现方法,本说明书在此不再赘述。
110.此外还需要说明的是,步骤105中,为了提升数据片重构效率,在重构完成后,将重构后的目标数据片存储在重构节点的内存中,而不是存储在重构节点的磁盘中。
111.步骤107,重构节点将重构后的目标数据片发送至存储节点,存储节点存储重构后的目标数据片。
112.该步骤也就是存储重构后的目标数据片的过程,该过程中将重构过程和存储过程解耦,由于存储目标数据片的存储节点仍存在上文中所述的限制,所以在重构节点重构完成后,需要将重构后的目标数据片发送至存储节点,以完成存储的过程。
113.其中,发送的时机可以是:在重构节点重构完成所有重构任务后统一发送。此外,在重构后的目标数据片存储在重构节点的内存中的情况下,为了节省重构节点的内存空间,可以每重构一定大小的数据就将这些数据发送给对应的存储节点,也可以在重构完成后立刻将数据发送至存储节点。
114.换言之,所述重构节点将重构后的目标数据片发送至所述存储节点,包括:重构节
点在所述目标数据片重构完成后,执行下一个数据片的重构任务之前,将重构后的目标数据片发送至所述存储节点。
115.上述情况下虽然发送的更为频繁,但是存在一些好处:即在重构节点故障的情况下,可以由其他数据节点接力完成该故障节点未完成的重构任务,而无需从头开始重构(相关技术中目标节点故障的情况下,需要从头开始重构)。
116.换言之,上述方法还包括:在重构节点故障的情况下,元数据节点在所述若干数据节点中选择所述重构节点之外的其他数据节点作为新重构节点,以由所述新重构节点继续执行故障的所述重构节点未完成的数据片重构任务。
117.其中,新重构节点的选取方法可以参照步骤103。
118.此外,还需要说明的是,由于目标数据片完成重构后,需要将完成重构的状态同步给元数据节点,具体的同步时机可以是重构节点在目标数据片重构完成后就告知元数据节点,也可以是重构节点将重构后的目标数据片发送给存储节点后告知元数据节点,还可以是存储节点在接收到重构后的数据后,由存储节点告知元数据节点。
119.具体的告知元数据节点的方法,可以是主动告知元数据节点,也可以是在元数据节点轮询的时候告知元数据节点。
120.在对本说明书提供的数据重构方法进行整体说明后,接下来将对该方法所能带来的技术效果进行说明。
121.上述方法中,通过将重构过程和存储过程解耦,使得相关技术中集中在几个数据节点的流量可以由所有数据节点来分担。此外,在存在负载均衡方法时,通过心跳同步/通过计算得到各个数据节点的可用重构带宽,可以实现负载均衡,进一步均衡各个数据节点的通信压力。此外,这种的重构方式,使得重构节点宕机的情况下,可重新挑选新重构节点,且宕机前的重构进度可以保留下来。
122.此外,这种方式使得在故障域数量不多的情况下,除了减少数据节点的通信压力,还能加快重构速率(本来只有几个节点在重构,现在所有节点都加入了重构,重构执行者增多,自然重构效率提高),减少重构所耗费的时间。
123.接下来将通过一具体实施例来对本说明书示出的数据重构方法进行说明。
124.在元数据节点发现存在故障的数据节点的情况下,将需要对该故障的数据节点中存储的数据片进行重构。这种情况下,如图2a所示,针对任一待重构的目标数据片,将会执行以下方法:
125.步骤201,元数据节点根据故障域中目标数据片对应ec校验组的数据片和校验片分布,选择存储节点。
126.该过程和相关技术中选择目标节点的过程相同,在此不再赘述。
127.步骤202,元数据节点通过心跳获取的源节点和存储节点的可用重构带宽,选择可用重构带宽最大的数据节点作为重构节点。
128.此外还需要说明的是,如果存在两个数据节点可用重构带宽相同,且都是最大值,那么可以按照各个数据节点的处理压力(也可以通过心跳同步)最小的作为重构节点,以在平衡通信压力的同时,平衡各个数据节点的处理压力。
129.步骤202的过程如图2b所示,图2b中,由于带款负载越小,可用重构带宽越大,在存源节点5带宽负载最小的情况下,选择了源节点5作为重构节点。
130.步骤203,元数据节点向选择的重构节点下发目标数据片的重构任务。
131.步骤214,重构节点从源节点获取用于重构的数据片和校验片,如果重构节点本身也是一个源节点,则从自身读取用于重构的数据片/校验片。并基于获取的数据片和校验片完成重构。
132.步骤215,重构节点将重构后的目标数据片写入到元数据节点指定的存储节点(该信息可以在下发重构任务时,一起下发给重构节点)中。
133.此外,如果重构节点本身就是存储节点,则可以直接将重构后的目标数据片写入本地磁盘。
134.步骤216,重构节点告知元数据节点数据重构完成。
135.此外,上述方法中,在重构节点故障的情况下,元数据节点还可以重新根据各个源节点和存储节点的可用重构带宽,重新选择新重构节点,继续完成重构节点还未完成的重构任务,而重构节点故障之前的重构任务已经保存在了存储节点中,无需再重构这些数据片。
136.此外,上述步骤中各个节点之间的交互关系如图2c所示,每次交互对应的步骤也在图2c中有标注。
137.此外,本说明书还提供了应用于元数据节点和应用于数据节点的数据重构方法。
138.对于元数据节点来说,如图3a所示,本说明书提供一种数据重构方法,应用于分布式存储系统中的元数据节点,所述分布式存储系统包括一个元数据节点和若干数据节点;所述方法包括:
139.步骤301,根据存储目标数据片对应的ec校验组的故障域,选择存储节点。
140.所述目标数据片是待重构的数据片,所述存储节点不属于:除存储目标数据片的故障域之外,其他存储所述ec校验组的故障域。
141.步骤303,在所述若干数据节点中选择重构节点。这样以使所述重构节点获取所述目标数据片对应的ec校验组的其他数据片和校验片,并根据获取的所述其他数据片和校验片重构所述目标数据片,并将重构后的目标数据片发送至所述存储节点,所述存储节点存储所述重构后的目标数据片。
142.对于数据节点来说,如图3b所示,本说明书提供一种数据重构方法,应用于分布式存储系统中的数据节点;所述分布式存储系统包括一个元数据节点和若干数据节点。
143.在所述数据节点为所述元数据节点在所述若干数据节点中选择的重构节点的情况下,所述方法包括:
144.步骤311,获取目标数据片对应的ec校验组的其他数据片和校验片,并根据获取的所述其他数据片和校验片重构所述目标数据片。
145.所述目标数据片是待重构的数据片。
146.步骤313,将重构后的目标数据片发送至所述存储节点。
147.或,在所述数据节点为所述元数据节点根据存储目标数据片对应的ec校验组的故障域选择的存储节点的情况下,所述方法包括:
148.步骤321,接收重构节点发送的重构后的目标数据片,并存储所述重构后的目标数据片。
149.其中,所述存储节点不属于:除存储目标数据片的故障域之外,其他存储所述ec校
验组的故障域。
150.其中,上述两个方法中,各个步骤的具体实现方法详见上文,在此不再赘述。
151.此外,本说明书还提供了一种分布式存储系统,所述分布式存储系统包括一个元数据节点和若干数据节点。各个节点分别执行:
152.所述元数据节点根据存储目标数据片对应的纠删码ec校验组的故障域,选择存储节点;在所述若干数据节点中选择重构节点。其中,所述目标数据片是待重构的数据片,所述存储节点不属于:除存储目标数据片的故障域之外,其他存储所述ec校验组的故障域。
153.对于数据节点而言,如果数据节点被选为了重构节点,所述重构节点获取所述目标数据片对应的ec校验组的其他数据片和校验片,并根据获取的所述其他数据片和校验片重构所述目标数据片;将重构后的目标数据片发送至所述存储节点。如果数据节点被选为了存储节点,所述存储节点接收重构节点发送重构后的目标数据片,并存储所述重构后的目标数据片。
154.该系统中各个数据节点和元数据节点如何实现上述步骤详见上文描述,在此暂不赘述。
155.与前述方法的实施例相对应,本说明书还提供了数据重构装置及其所应用的电子设备的实施例。
156.如图4所示,图4是本说明书根据一示例性实施例示出的一种数据重构装置的框图,该装置应用于分布式存储系统中的元数据节点,所述分布式存储系统包括一个元数据节点和若干数据节点;所述装置包括:
157.存储节点选择模块410,用于根据存储目标数据片对应的ec校验组的故障域,选择存储节点;所述目标数据片是待重构的数据片,所述存储节点不属于:除存储目标数据片的故障域之外,其他存储所述ec校验组的故障域。
158.重构节点选择模块420,用于在所述若干数据节点中选择重构节点,以使所述重构节点获取所述目标数据片对应的ec校验组的其他数据片和校验片,并根据获取的所述其他数据片和校验片重构所述目标数据片,并将重构后的目标数据片发送至所述存储节点,所述存储节点存储所述重构后的目标数据片。
159.在一可选实施例中,重构节点选择模块420包括:
160.可用重构带宽获取子模块421(图中未示出),用于获取各个数据节点的可用重构带宽。
161.重构节点选择子模块422(图中未示出),用于根据所述各个数据节点的可用重构带宽,在所述若干数据节点中选择可用重构带宽满足重构标准的数据节点作为重构节点。
162.在一可选实施例中,可用重构带宽获取子模块421,具体用于获取各个数据节点分别对应的预留的静态重构带宽、以及剩余的重构任务数量;对于任一数据节点,根据该数据节点的静态重构带宽和重构任务数量得到该数据节点的可用重构带宽。
163.在一可选实施例中,可用重构带宽获取子模块421,具体用于获取各个数据节点的动态可用带宽,将每个数据节点的动态可用带宽作为该数据节点的可用重构带宽。
164.在一可选实施例中,重构节点选择子模块422,具体用于根据各个数据节点的可用重构带宽,在所述若干数据节点中的源节点和所述存储节点中,选择可用重构带宽满足重构标准的数据节点作为重构节点,所述源节点是目标数据片对应的ec校验组所位于的其他
未故障的数据节点。
165.在一可选实施例中,重构节点选择子模块422,具体用于根据所述各个数据节点的可用重构带宽,在所述若干数据节点中选择可用重构带宽最大的数据节点作为重构节点。
166.此外,如图5所示,图4是本说明书根据一示例性实施例示出的一种数据重构装置框图,该装置应用于分布式存储系统中的数据节点;所述分布式存储系统包括一个元数据节点和若干数据节点。
167.其中,在所述数据节点为所述元数据节点在所述若干数据节点中选择的重构节点的情况下,所述装置包括:
168.目标数据片重构模块510,用于获取目标数据片对应的ec校验组的其他数据片和校验片,并根据获取的所述其他数据片和校验片重构所述目标数据片;所述目标数据片是待重构的数据片。
169.目标数据片发送模块520,用于将重构后的目标数据片发送至所述存储节点.
170.或,在所述数据节点为所述元数据节点根据存储目标数据片对应的ec校验组的故障域选择的存储节点的情况下,所述装置包括:
171.目标数据片存储模块530,用于接收重构节点发送的重构后的目标数据片,并存储所述重构后的目标数据片,所述存储节点不属于:除存储目标数据片的故障域之外,其他存储所述ec校验组的故障域。
172.在一可选实施例中,目标数据片发送模块520具体用于在所述目标数据片重构完成后,执行下一个数据片的重构任务之前,将重构后的目标数据片发送至所述存储节点。
173.上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
174.对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
175.如图6所示,图6示出了实施例数据重构配置的装置所在电子设备的一种硬件结构图(该电子设备可以是元数据节点,也可以是数据节点),该设备可以包括:处理器1010、用于存储处理器可执行指令的存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
176.处理器1010可以采用通用的cpu(central processing unit,处理器)、微处理器、应用专用集成电路(application specific integrated circuit,asic)、或者一个或多个集成电路等方式实现。所述处理器通过运行所述可执行指令以实现上述的数据重构方法。
177.存储器1020可以采用rom(read only memory,只读存储器)、ram(random access memory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
178.输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
179.通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信。
180.总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
181.需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
182.本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述的数据重构方法。
183.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
184.本说明书实施例还提供一种计算机程序,所述计算机程序被处理器执行时实现上述的数据重构方法。
185.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
186.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献