1.本技术涉及分布式存储技术领域,具体而言,涉及一种
数据恢复方法、系统、设备及存储介质。
背景技术:
2.随着互联网业务量的增加、访问量和数据流量的快速增长,分布式存储系统越来越被关注。当分布式存储系统中出现硬盘故障或
节点故障时,需要尽快完成数据恢复,这样可避免再生故障降低存储的可靠性和造成数据的丢失。
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.可选地,所述根据所述当前周期的业务数据写入量、所述当前周期的前一周期的业务数据写入量以及所述当前周期的恢复数据写入量,确定所述当前周期的下一周期的恢复数据写入速率之后,所述方法还包括:
28.确定所述下一周期的恢复数据写入速率是否小于预设恢复数据写入速率;
29.若是,则在所述下一周期根据所述下一周期的恢复数据写入速率从各所述目标数据节点中读取恢复数据。
30.可选地,所述根据所述恢复参考数据得到当前周期的恢复数据之后,所述方法还包括:
31.将所述当前周期的恢复数据写入所述一级存储模块;
32.在达到预设时间后,基于所述二级存储模块中硬盘对应的读写速度阈值从所述一
级存储模块中读取恢复数据。
33.第二方面,本技术实施例还提供了一种数据恢复装置,应用于分布式存储系统中的任一数据节点,所述分布式存储系统中包括监控节点以及多个所述数据节点,所述监控节点与各所述数据节点通信连接,所述装置包括:
34.接收模块,用于接收所述监控节点发送的数据恢复请求,所述数据恢复请求中包括至少一个目标数据节点的标识,所述目标数据节点为与故障数据节点关联的数据节点;
35.读取模块,用于根据所述数据恢复请求中包括的各目标数据节点的标识,从各所述目标数据节点中读取恢复参考数据,并根据所述恢复参考数据得到当前周期的恢复数据;
36.确定模块,用于根据所述当前周期的业务数据写入量、所述当前周期的前一周期的业务数据写入量以及所述当前周期的恢复数据写入量,确定所述下一周期的恢复数据写入速率,以在所述下一周期根据所述下一周期的恢复数据写入速率下从各所述目标数据节点中读取恢复参考数据。
37.可选地,所述确定模块,具体用于根据所述当前周期的业务数据写入量、所述当前周期的前一周期的业务数据写入量,确定所述当前周期对应的业务数据变化率;根据所述当前周期的恢复数据写入量以及周期时间,确定所述当前周期对应的恢复数据写入速率;根据所述当前周期对应的业务数据变化率、恢复数据写入速率以及预设的业务数据变化率与权重之间的对应关系,计算获取所述下一周期的恢复数据写入速率。
38.可选地,所述确定模块,还具体用于根据所述当前周期对应的业务数据变化率以及所述预设的业务数据变化率与权重之间的对应关系,确定目标权重;根据所述当前周期对应的业务数据变化率、恢复数据写入速率以及所述目标权重,计算获取所述下一周期的恢复数据写入速率。
39.可选地,所述确定模块,还具体用于将所述当前周期对应的业务数据变化率与所述目标权重相乘,得到调整速率倍数;根据所述调整速率倍数以及所述当前周期对应的恢复数据写入速率,计算获取所述下一周期的恢复数据写入速率。
40.可选地,所述数据节点中包括一级存储模块以及二级存储模块;
41.相应地,所述确定模块,还具体用于根据所述当前周期的业务数据写入量、所述当前周期的前一周期的业务数据写入量以及所述当前周期的恢复数据写入量,计算得到所述下一周期的初始恢复数据写入速率;确定所述当前周期内从所述一级存储模块写入所述二级存储模块的转发数据写入量;根据所述当前周期的业务数据写入量、所述恢复数据写入量以及所述转发数据写入量,确定所述当前周期对应的所述一级存储模块的数据保存总量;根据所述当前周期对应的所述一级存储模块的数据保存总量、预设保存量,确定是否对所述下一周期的初始恢复数据写入速率进行调整;若是,则对所述下一周期的初始恢复数据写入速率进行调整得到所述下一周期的恢复数据写入速率。
42.可选地,所述确定模块,还具体用于确定所述下一周期的恢复数据写入速率是否小于预设恢复数据写入速率;若是,则在所述下一周期根据所述下一周期的恢复数据写入速率从各所述目标数据节点中读取恢复数据。
43.可选地,所述读取模块,还用于将所述当前周期的恢复数据写入所述一级存储模块;在达到预设时间后,基于所述二级存储模块中硬盘对应的读写速度阈值从所述一级存
储模块中读取恢复数据。
44.第三方面,本技术实施例提供了一种分布式存储系统,所述分布式存储系统中包括监控节点以及多个数据节点,所述监控节点与各所述数据节点通信连接,所述数据节点用于执行上述第一方面的所述数据恢复方法的步骤。
45.第四方面,本技术实施例提供了一种电子设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当所述电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行上述第一方面的所述数据恢复方法的步骤。
46.第五方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述第一方面的所述数据恢复方法的步骤。
47.本技术的有益效果是:
48.本技术实施例提供一种数据恢复方法、系统、设备及存储介质,应用于分布式存储系统中的任一数据节点,分布式存储系统中包括监控节点以及多个数据节点,监控节点与各数据节点通信连接,该方法包括:接收监控节点发送的数据恢复请求,数据恢复请求中包括至少一个目标数据节点的标识,目标数据节点为与故障数据节点关联的数据节点;根据数据恢复请求中包括的各目标数据节点的标识,从各目标数据节点中读取恢复参考数据,并根据恢复参考数据得到当前周期的恢复数据;根据当前周期的业务数据写入量、当前周期的前一周期的业务数据写入量以及当前周期的恢复数据写入量,确定当前周期的下一周期的恢复数据写入速率,以在下一周期根据下一周期的恢复数据写入速率下从各目标数据节点中读取恢复参考数据。
49.采用本技术实施例提供的数据恢复方法,可根据读取到的恢复参考数据统计得到当前周期的恢复数据写入量,还可根据读取到的业务数据统计得到当前周期的业务数据写入量,基于当前周期的业务数据写入量以及当前周期的前一周期的业务数据写入量可确定出当前周期的业务数据的写入速度的变化情况,进而可基于当前周期的业务数据的写入速度的变化情况,对与当前周期的恢复数据写入量对应的当前周期的恢复数据写入速率进行调整,得到当前周期的下一周期的恢复数据写入速率,基于下一周期的恢复数据写入速率从各目标数据节点中读取恢复参考数据。可以看出,下一周期的恢复数据写入速率是基于业务数据的相关信息确定得到,融合了当前周期的业务数据的写入速度的变化情况的影响因素,这样可在不影响业务性能的基础上进行数据恢复,进而提高分布式存储系统的可靠性。
附图说明
50.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
51.图1为本技术实施例提供的一种分布式存储系统的场景示意图;
52.图2为本技术实施例提供的一种数据节点n的结构示意图;
53.图3为本技术实施例提供的一种数据恢复方法的流程示意图;
54.图4为本技术实施例提供的另一种数据恢复方法的流程示意图;
55.图5为本技术实施例提供的又一种数据恢复方法的流程示意图;
56.图6本技术实施例提供的再一种数据恢复方法的流程示意图;
57.图7为本技术实施例提供的一种数据恢复方法的结构示意图;
58.图8为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
59.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本技术实施例的组件可以以各种不同的配置来布置和设计。
60.因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
61.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
62.在对本技术实施例进行详细解释之前,首先对本技术的应用场景予以介绍。该应用场景具体可以为基于分布式存储系统对故障数据进行恢复的场景。图1为本技术实施例提供的一种分布式存储系统的场景示意图,如图1所示,该系统可包括监控节点以及多个数据节点,多个数据节点如图1所示的数据节点1、数据节点2、数据节点3以及数据节点n,监控节点与数据节点1、数据节点2、数据节点3以及数据节点n分别通信连接,需要说明的是,本技术不对数据节点的数量进行限定。本技术下述示例中的数据恢复方法可应用于分布式存储系统中的任一数据节点,如数据节点1、数据节点2、数据节点3或数据节点n,需要说明的是,本技术不对其进行限定。
63.基于图1中所述的分布式存储系统,首先对业务数据的写入过程进行介绍。示例性的,客户端可将生成的业务数据发送至监控节点,监控节点通过其上的客户端纠删模块将业务数据划分为n个业务数据块,并生成m个校验数据块,进而将n个业务数据块以及m个校验数据块分别发送至多个数据节点中,如图1中所示的数据节点1、数据节点2以及数据节点3。此处以数据节点1为例进行说明,其它数据节点类似。数据节点1将接收到的数据块(业务数据块和/校验数据块)先存储在一级存储模块中,在达到预设时间后,二级存储模块从一级存储模块中读取数据块,并将数据块写入对应的硬盘中。
64.基于图1对故障数据的恢复过程进行介绍,监控节点可实时监测各数据节点的状态信息,若状态信息指示数据节点出现故障,则生成数据恢复请求,并将该数据恢复请求发送至进行数据恢复的数据节点(如数据节点n)。继续上述示例进行说明,假设数据节点1出现故障,那么数据节点n可基于数据恢复请求中携带的目标数据节点的标识(如数据节点2的标识、数据节点3的标识)分别从数据节点2、数据节点3中读取与出现故障的数据节点1中的数据块关联的数据(即恢复参考数据)。需要说明的是,出现故障的数据节点可能包括多
个,那么监控节点生成的数据恢复请求中包括多个故障数据节点关联的数据节点的标识。
65.本技术下述示例均以数据节点n为执行主体进行说明,可以理解的是,数据节点n从目标数据节点中读取恢复参考数据的同时,还可接收客户端发送的业务数据。下述结合图2对数据节点n进行数据恢复的过程进行简要说明,其它进行数据恢复的数据节点类似,此处不再进行说明。
66.图2为本技术实施例提供的一种数据节点n的结构示意图。如图2所示,数据节点n中包括本地纠删模块、数据量统计模块、一级存储模块以及二级存储模块,其中,本地纠删模块、数据量统计模块、一级存储模块以及二级存储模块依次通信连接。数据节点n的接口模块用于将从目标数据节点中读取到的恢复参考数据发送至本地纠删模块,本地纠删模块进行数据恢复处理后,得到恢复数据;数据量统计模块用于对业务数据以及恢复数据进行数据量统计;一级存储模块为可持久化的内存(如i nte l傲腾内存),二级存储包括了数据节点中的硬盘。数据节点n将接收到的业务数据、恢复数据先存储在一级存储模块中,在达到预设时间后,二级存储模块从一级存储模块中读取数据块,并将数据块写入对应的硬盘中。
67.可以理解的是,数据节点n中的处理模块可利用数据量统计模块基于当前周期的业务数据写入量、当前周期的前一周期的业务数据写入量以及当前周期的恢复数据写入量确定出的下一周期的恢复数据写入速率,生成写入控制指令,并将该写入控制指令发送至接口模块,在下一周期时,接口模块基于该写入控制指令中包括的恢复数据写入速率从各目标数据节点中读取恢复参考数据。可以理解的是,恢复参考数据的数据量与恢复数据的数据量正相关,恢复参考数据的数据量增多时,恢复数据的数据量也增多,所以,本技术这样可在不影响业务性能的基础上进行数据恢复,确定数据的恢复速度,进而可以提高分布式存储系统的可靠性。
68.如下结合附图对本技术提到的数据恢复方法进行示例说明。图3为本技术实施例提供的一种数据恢复方法的流程示意图。该方法应用于上述提到的分布式存储系统中的任一数据节点,如数据节点n。如图3所示,该方法可包括:
69.s301、接收监控节点发送的数据恢复请求。
70.其中,数据恢复请求中包括至少一个目标数据节点的标识,目标数据节点为与故障数据节点关联的数据节点。
71.根据上述描述可知,监控节点可实时监测各数据节点的状态信息,若状态信息指示数据节点出现故障,则生成数据恢复请求,并将该数据恢复请求发送至进行数据恢复的数据节点(如数据节点n),即数据节点n接收监控节点发送的数据恢复请求。结合图1进行说明,假设数据节点1出现故障,那么数据节点n可基于获取到携带有例如携带有数据节点2的标识、数据节点3的标识的数据恢复请求。
72.需要说明的是,出现故障的数据节点可能包括多个,那么数据恢复请求中可包括多个故障数据节点关联的数据节点的标识。
73.s302、根据数据恢复请求中包括的各目标数据节点的标识,从各目标数据节点中读取恢复参考数据,并根据恢复参考数据得到当前周期的恢复数据。
74.示例性的,数据节点n基于各目标数据节点的标识从各目标数据节点中读取恢复参考数据,可通过本地纠删模块对读取到的恢复参考数据进行数据恢复处理,得到恢复数
据,并可通过数据量统计模块统计预设周期(t)内得到的恢复数据的数据量,即下述提到的恢复数据写入量,这样可得到当前周期的恢复数据写入量,同理,也可统计得到当前周期的业务数据写入量。
75.s203、根据当前周期的业务数据写入量、当前周期的前一周期的业务数据写入量以及当前周期的恢复数据写入量,确定当前周期的下一周期的恢复数据写入速率,以在下一周期根据下一周期的恢复数据写入速率下从各目标数据节点中读取恢复参考数据。
76.可以理解的,数据节点n中的数据量统计模块将统计得到的数据量存储在相关联的存储模块中。数据节点n在得到当前周期的业务数据写入量、恢复数据写入量后,还可从与数据量统计模块相关联的存储模块中读取当前周期的前一周期的业务数据写入量。
77.示例性的,数据节点n中的处理模块可基于当前周期的业务数据写入量、当前周期的前一周期的业务数据写入量得到当前周期的业务数据的写入速度的变化情况,并且还可以根据当前周期的恢复数据写入量确定出当前周期的恢复数据写入速率。处理模块可基于得到的当前周期的业务数据的写入速度的变化情况,得到当前周期的下一周期的恢复数据写入速度(速率)。
78.在得到当前周期的下一周期的恢复数据写入速度后,可生成写入控制指令,并将该写入控制指令发送至数据节点n的接口模块,接口模块在下一周期基于该写入控制指令中包括的恢复数据写入速率从各目标数据节点中读取恢复参考数据。
79.综上所述,本技术提供的数据恢复方法中,可根据读取到的恢复参考数据统计得到当前周期的恢复数据写入量,还可根据读取到的业务数据统计得到当前周期的业务数据写入量,基于当前周期的业务数据写入量以及当前周期的前一周期的业务数据写入量可确定出当前周期的业务数据的写入速度的变化情况,进而可基于当前周期的业务数据的写入速度的变化情况,对与当前周期的恢复数据写入量对应的当前周期的恢复数据写入速率进行调整,得到当前周期的下一周期的恢复数据写入速率,基于下一周期的恢复数据写入速率从各目标数据节点中读取恢复参考数据。可以看出,下一周期的恢复数据写入速率是基于业务数据的相关信息确定得到,融合了当前周期的业务数据的写入速度的变化情况的影响因素,这样可在不影响业务性能的基础上进行数据恢复,进而提高分布式存储系统的可靠性。
80.图4为本技术实施例提供的另一种数据恢复方法的流程示意图。如图3所示,可选地,上述根据当前周期的业务数据写入量、当前周期的前一周期的业务数据写入量以及当前周期的恢复数据写入量,确定当前周期的下一周期的恢复数据写入速率,包括:
81.s401、根据当前周期的业务数据写入量、当前周期的前一周期的业务数据写入量,确定当前周期对应的业务数据变化率。
82.s402、根据当前周期的恢复数据写入量以及周期时间,确定当前周期对应的恢复数据写入速率。
83.示例性的,假设当前周期为t2,当前周期的前一周期为t1,那么在得到当前周期t2的业务数据写入量b
write-t2
、当前周期的前一周期t1的业务数据写入量b
write-t1
后,可根据下式确定当前周期t2对应的业务数据变化率δb
write-t
:
84.85.可以理解的是,业务数据变化率可用于表示业务数据写入速度的变化情况,具体的,当前周期对应的业务数据变化率可说明业务数据写入速度是在快速减少、缓慢减少、缓慢加快还是快速加快。
86.在得到当前周期t2的恢复数据写入量b
recover
后,可根据得到当前周期t2对应的恢复数据写入速率s
recover-t
:
[0087][0088]
s403、根据当前周期对应的业务数据变化率、恢复数据写入速率以及预设的业务数据变化率与权重之间的对应关系,计算获取下一周期的恢复数据写入速率。
[0089]
示例性的,预先设置的业务数据变化率δb
write-t
与权重wn之间的对应关系可如下所述:
[0090][0091]
从上述中可以看出,当业务变化率的绝对值小于1时,wn等于w1(如0.1),当业务变化率的绝对值大于或等于1时,wn等于w2(如0.2),即w1《w2。
[0092]
可选地,可根据当前周期对应的业务数据变化率以及预设的业务数据变化率与权重之间的对应关系,确定目标权重;根据当前周期对应的业务数据变化率、恢复数据写入速率以及目标权重,计算获取下一周期的恢复数据写入速率。
[0093]
示例性的,在当前周期t2对应的业务数据变化率δb
write-t
、恢复数据写入速率s
recover-t
后,可基于业务数据变化率与权重之间的对应关系以及业务数据变化率δb
write-t
的绝对值与1的大小关系,确定出目标权重。进而基于目标权重以及可当前周期对应的业务数据变化率δb
weite-t
对当前周期对应的恢复数据写入速率s
recover-t
进行调整,得到下一周期的恢复数据写入速率。
[0094]
这样利用基于业务数据写入变化情况(如快速减少、缓慢减少、缓慢加快、快速加快)确定的目标权重计算下一周期的恢复数据写入速率,可以防止恢复数据写入速率出现断崖式的增长或减少。比如,业务数据写入变化情况为缓慢较少时,相对的,下一周期的恢复数据写入速率即为缓慢加快。
[0095]
图5为本技术实施例提供的又一种数据恢复方法的流程示意图。如图5所示,可选地,根据当前周期对应的业务数据变化率、恢复数据写入速率以及所述目标权重,确定下一周期的恢复数据写入速率,包括:
[0096]
s501、将当前周期对应的业务数据变化率与目标权重相乘,得到调整速率倍数。
[0097]
s502、根据调整速率倍数以及当前周期对应的恢复数据写入速率,计算获取下一周期的恢复数据写入速率。
[0098]
其中,在得到当前周期对应的业务数据变化率δb
write-t
、当前周期对应的恢复数据写入速率s
recover-t
以及目标权重wn后,可根据下述计算得到下一周期的恢复数据写入速率s
recover-tn
:
[0099]srecover-tn
=(1-δb
write-t
*wn)s
recover-t
[0100]
举例来说,假设前一周期t1的业务数据写入量b
write-t1
为6000mb,当前周期t2的业
务数据写入量b
write-t2
为1000mb,当前周期t2的恢复数据写入速率s
recover-t
为20mb/s。那么当前周期t2对应的业务数据变化率δb
write-t
等于-5,即目标权重wn取值为w2(如0.2)。
[0101]
基于此,可将当前周期对应的业务数据变化率δb
write-t
与目标权重wn相乘,计算得到的调整速率倍数(
△bwrite-t
*wn)等于-1,进而得到的下一周期t3的恢复数据写入速率s
recover-tn
为40mb/s。
[0102]
可以看出,当前周期t2对应的业务数据变化率δb
write-t
等于-5,证明业务数据写入量在减少,那么可增大恢复数据写入速率,即将当前周期t2的恢复数据写入速率s
recover-t
为20mb/s调整为40mb/s,将40mb/s作为当前周期的下一周期t3的恢复数据写入速率。这样在下一周期t3时,可基于40mb/s的恢复数据写入速率加快读取恢复参考数据,进而可使数据节点(如数据节点n)在业务数据较少的前提下,加快对故障数据的恢复,即可在不影响业务性能的基础上提高数据的恢复速度,进而提高分布式存储系统的可靠性。
[0103]
下述主要对上述提到的业务数据变化率δb
write-t
的四种情况(快速减少、缓慢减少、缓慢加快以及快速加快)进行说明。
[0104]
快速减少的情况:在当前周期t2的业务数据写入量b
write-t2
小于当前周期的前一周期为t1的业务数据写入量b
write-t1
的一倍以上,证明业务数据写入速度在快速较少,即δb
write-t
《-1,可以理解的是,对应的需要快速加快恢复数据写入速率。根据上述提到的业务数据变化率δb
write-t
与权重wn之间的对应关系可以看出,wn等于w2,可以理解的是,w2是一个较大的权重,则将w2作为目标权重计算下一周期的恢复数据写入速率,可以快速加快恢复数据写入速率。
[0105]
缓慢减少的情况:在当前周期t2的业务数据写入量b
write-t2
小于当前周期的前一周期为t1的业务数据写入量b
write-t1
的一倍以内,证明业务数据写入速度在缓慢较少,即-1≤δb
write-t
《0,可以理解的是,对应的需要缓慢加快恢复数据写入速率。根据上述提到的业务数据变化率δb
write-t
与权重wn之间的对应关系可以看出,wn等于w1,可以理解的是,w1是一个较小的权重,则将w1作为目标权重计算下一周期的恢复数据写入速率,可以缓慢加快恢复数据写入速率。
[0106]
缓慢加快的情况:在当前周期t2的业务数据写入量b
write-t2
大于当前周期的前一周期为t1的业务数据写入量b
write-t1
的一倍以内,证明业务数据写入速度在缓慢加快,即0≤
△bwrite-t
《1,可以理解的是,对应的需要缓慢减少恢复数据写入速率。根据上述提到的业务数据变化率
△bwrite-t
与权重wn之间的对应关系可以看出,wn等于w1,可以理解的是,w1是一个较小的权重,则将w1作为目标权重计算下一周期的恢复数据写入速率,可以缓慢减少恢复数据写入速率。
[0107]
快速加快的情况:在当前周期t2的业务数据写入量b
write-t2
大于当前周期的前一周期为t1的业务数据写入量b
write-t1
的一倍以上,证明业务数据写入速度在快速加快,即1≤
△bwrite-t
,可以理解的是,对应的需要快速减少恢复数据写入速率。根据上述提到的业务数据变化率
△bwrite-t
与权重wn之间的对应关系可以看出,wn等于w2,可以理解的是,w2是一个较小大的权重,则将w2作为目标权重计算下一周期的恢复数据写入速率,可以快速减少恢复数据写入速率。
[0108]
可以看出,这样可以防止恢复数据写入速率出现断崖式的增长或减少,在不影响业务整体性能的基础上,加快数据的恢复速度,提高系统的可靠性,使数据的恢复速度与业
务的读写性能两者达到平衡。
[0109]
图6本技术实施例提供的再一种数据恢复方法的流程示意图。如图6所示,可选地,上述根据当前周期的业务数据写入量、当前周期的前一周期的业务数据写入量以及当前周期的恢复数据写入量,确定当前周期的下一周期的恢复数据写入速率,包括:
[0110]
s601、根据当前周期的业务数据写入量、当前周期的前一周期的业务数据写入量以及当前周期的恢复数据写入量,计算得到下一周期的初始恢复数据写入速率。
[0111]
s602、确定当前周期内从一级存储模块写入二级存储模块的转发数据写入量。
[0112]
其中,可根据当前周期的业务数据写入量、当前周期的前一周期的业务数据写入量,确定当前周期对应的业务数据变化率;根据当前周期的恢复数据写入量以及周期时间,确定当前周期对应的恢复数据写入速率;进而可根据当前周期对应的业务数据变化率、恢复数据写入速率以及预设的业务数据变化率与权重之间的对应关系,计算得到下一周期的初始恢复数据写入速率。
[0113]
结合图2进行说明,从图2中可以看出,数据节点中包括一级存储模块以及二级存储模块,无论是业务数据还是恢复数据,先写入一级存储模块,然后再写入二级存储模块。
[0114]
示例性的,数据节点n中的处理模块可监测从一级存储模块写入二级存储模块的转发数据,并统计得到当前周期内从一级存储模块写入二级存储模块的转发数据写入量。
[0115]
s603、根据当前周期的业务数据写入量、恢复数据写入量以及转发数据写入量,确定当前周期对应的一级存储模块的数据保存总量。
[0116]
其中,在得到当前周期t2的业务数据写入量b
write-t2
、恢复数据写入量b
recover
以及转发数据写入量b
writetostor
后,可根据下述公式计算得到当前周期t2对应的一级存储模块的数据保存总量b
stor1-t
:
[0117]bstor1-t
=b
write-t2
+b
recover-b
writetostor
[0118]
s604、根据当前周期对应的一级存储模块的数据保存总量、预设保存量,确定是否对下一周期的初始恢复数据写入速率进行调整。
[0119]
s605、若是,则对下一周期的初始恢复数据写入速率进行调整得到下一周期的恢复数据写入速率。
[0120]
示例性的,将当前周期t2对应的一级存储模块的数据保存总量b
stor1-t
与预设保存量b
stor1-p
进行比较,若b
stor1-t
小于或等于预设保存量b
stor1-p
,则不需要对下一周期的初始恢复数据写入速率进行调整,直接将下一周期的初始恢复数据写入速率作为下一周期的恢复数据写入速率;若b
stor1-t
大于预设保存量b
stor1-p
,则确定需要对下一周期的初始恢复数据写入速率进行调整。
[0121]
在一种可实现的实施例中,若确定需要对下一周期的初始恢复数据写入速率进行调整,则可将下一周期的初始恢复数据写入速率下调,可下调预设数值大小,进而将下调后的下一周期的初始恢复数据作为下一周期的恢复数据写入速率。
[0122]
这样可避免一级存储模块的存储空间出现快速的耗尽,影响对业务数据的处理性能。也就是说,这样可更全面的保证不影响业务性能的基础上,对故障数据进行恢复。
[0123]
可选地,上述根据所述当前周期的业务数据写入量、所述当前周期的前一周期的业务数据写入量以及所述当前周期的恢复数据写入量,确定所述当前周期的下一周期的恢复数据写入速率之后,该方法可包括:确定下一周期的恢复数据写入速率是否小于预设恢
复数据写入速率;若是,则在下一周期根据下一周期的恢复数据写入速率从各目标数据节点中读取恢复数据。
[0124]
示例性的,在得到下一周期的恢复数据写入速率s
recover-tn
后,可将s
recover-tn
与预设恢复数据写入速率s
recover-p
进行比较,若s
recover-tn
小于s
recover-p
,则数据节点n可根据下一周期的恢复数据写入速率s
recover-tn
生成写入控制指令,并将写入控制指令发送至接口模块,在下一周期时,接口模块可基于该写入控制指令中包括的恢复数据写入速率s
recover-tn
从各目标数据节点中读取恢复参考数据。
[0125]
这样可避免过快的恢复数据写入速率影响分布式存储系统的整体性能。
[0126]
可选地,上述根据恢复参考数据得到当前周期的恢复数据之后,该方法还包括:将当前周期的恢复数据写入一级存储模块;在达到预设时间后,基于二级存储模块中硬盘对应的读写速度阈值从一级存储模块中读取恢复数据。
[0127]
根据上述描述可知,数据节点中的本地纠删模块进行数据恢复后,可将恢复数据先写入一级存储模块中。可以理解的是,二级存储模块中包括多个硬盘,每个硬盘预先设置有读写速度阈值。在达到预设时间后,数据节点可根据硬盘对应的读写速度阈值确定二级存储模块读取一级存储模块中的恢复数据的目标读取速度,该目标读取速度小于读写速度阈值。
[0128]
这样可避免单块硬盘过高的数据读写量,影响分布式存储系统整体的性能。
[0129]
图7为本技术实施例提供的一种数据恢复方法的结构示意图,应用于分布式存储系统中的任一数据节点,分布式存储系统中包括监控节点以及多个所述数据节点,监控节点与各数据节点通信连接。如图7所示,该装置包括:
[0130]
接收模块701,用于接收所述监控节点发送的数据恢复请求,所述数据恢复请求中包括至少一个目标数据节点的标识,所述目标数据节点为与故障数据节点关联的数据节点;
[0131]
读取模块702,用于根据所述数据恢复请求中包括的各目标数据节点的标识,从各所述目标数据节点中读取恢复参考数据,并根据所述恢复参考数据得到当前周期的恢复数据;
[0132]
确定模块703,用于根据当前周期的业务数据写入量、当前周期的前一周期的业务数据写入量以及当前周期的恢复数据写入量,确定下一周期的恢复数据写入速率,以在下一周期根据下一周期的恢复数据写入速率下从各目标数据节点中读取恢复参考数据。
[0133]
可选地,确定模块703,具体用于根据当前周期的业务数据写入量、当前周期的前一周期的业务数据写入量,确定当前周期对应的业务数据变化率;根据当前周期的恢复数据写入量以及周期时间,确定当前周期对应的恢复数据写入速率;根据当前周期对应的业务数据变化率、恢复数据写入速率以及预设的业务数据变化率与权重之间的对应关系,计算获取下一周期的恢复数据写入速率。
[0134]
可选地,确定模块703,还具体用于根据当前周期对应的业务数据变化率以及预设的业务数据变化率与权重之间的对应关系,确定目标权重;根据当前周期对应的业务数据变化率、恢复数据写入速率以及目标权重,计算获取下一周期的恢复数据写入速率。
[0135]
可选地,确定模块703,还具体用于将当前周期对应的业务数据变化率与目标权重相乘,得到调整速率倍数;根据调整速率倍数以及当前周期对应的恢复数据写入速率,计算
获取下一周期的恢复数据写入速率。
[0136]
可选地,数据节点中包括一级存储模块以及二级存储模块;
[0137]
相应地,确定模块703,还具体用于根据当前周期的业务数据写入量、当前周期的前一周期的业务数据写入量以及当前周期的恢复数据写入量,计算得到下一周期的初始恢复数据写入速率;确定当前周期内从一级存储模块写入二级存储模块的转发数据写入量;根据当前周期的业务数据写入量、恢复数据写入量以及转发数据写入量,确定当前周期对应的一级存储模块的数据保存总量;根据当前周期对应的一级存储模块的数据保存总量、预设保存量,确定是否对下一周期的初始恢复数据写入速率进行调整;若是,则对下一周期的初始恢复数据写入速率进行调整得到下一周期的恢复数据写入速率。
[0138]
可选地,确定模块703,还具体用于确定下一周期的恢复数据写入速率是否小于预设恢复数据写入速率;若是,则在下一周期根据下一周期的恢复数据写入速率从各目标数据节点中读取恢复数据。
[0139]
可选地,读取模块702,还用于将当前周期的恢复数据写入一级存储模块;在达到预设时间后,基于二级存储模块中硬盘对应的读写速度阈值从一级存储模块中读取恢复数据。
[0140]
上述装置用于执行前述实施例提供的方法,其实现原理和技术效果类似,在此不再赘述。
[0141]
以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(application specific integrated circuit,简称asic),或,一个或多个微处理器(digital signal processor,简称dsp),或,一个或者多个现场可编程门阵列(field programmable gate array,简称fpga)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(central processing unit,简称cpu)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称soc)的形式实现。
[0142]
图8为本技术实施例提供的一种电子设备的结构示意图,如图8所示,该电子设备可以包括:处理器801、存储介质802和总线803,存储介质802存储有处理器801可执行的机器可读指令,当该电子设备运行时,处理器801与存储介质802之间通过总线803通信,处理器801执行机器可读指令,以执行上述方法实施例的步骤。具体实现方式和技术效果类似,这里不再赘述。
[0143]
可选地,本技术还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行上述方法实施例的步骤。
[0144]
在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0145]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个
网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0146]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0147]
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本技术各个实施例所述方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(英文:read-only memory,简称:rom)、随机存取存储器(英文:random access memory,简称:ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0148]
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0149]
以上所述仅为本技术的优选实施例而已,并不用于限制本技术,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。以上所述仅为本技术的优选实施例而已,并不用于限制本技术,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
技术特征:
1.一种数据恢复方法,其特征在于,应用于分布式存储系统中的任一数据节点,所述分布式存储系统中包括监控节点以及多个所述数据节点,所述监控节点与各所述数据节点通信连接,所述方法包括:接收所述监控节点发送的数据恢复请求,所述数据恢复请求中包括至少一个目标数据节点的标识,所述目标数据节点为与故障数据节点关联的数据节点;根据所述数据恢复请求中包括的各目标数据节点的标识,从各所述目标数据节点中读取恢复参考数据,并根据所述恢复参考数据得到当前周期的恢复数据;根据所述当前周期的业务数据写入量、所述当前周期的前一周期的业务数据写入量以及所述当前周期的恢复数据写入量,确定所述当前周期的下一周期的恢复数据写入速率,以在所述下一周期根据所述下一周期的恢复数据写入速率下从各所述目标数据节点中读取恢复参考数据。2.根据权利要求1所述的方法,其特征在于,所述根据所述当前周期的业务数据写入量、所述当前周期的前一周期的业务数据写入量以及所述当前周期的恢复数据写入量,确定所述当前周期的下一周期的恢复数据写入速率,包括:根据所述当前周期的业务数据写入量、所述当前周期的前一周期的业务数据写入量,确定所述当前周期对应的业务数据变化率;根据所述当前周期的恢复数据写入量以及周期时间,确定所述当前周期对应的恢复数据写入速率;根据所述当前周期对应的业务数据变化率、恢复数据写入速率以及预设的业务数据变化率与权重之间的对应关系,计算获取所述下一周期的恢复数据写入速率。3.根据权利要求2所述的方法,其特征在于,所述根据所述当前周期对应的业务数据变化率、恢复数据写入速率以及预设的业务数据变化率与权重之间的对应关系,计算获取所述下一周期的恢复数据写入速率,包括:根据所述当前周期对应的业务数据变化率以及所述预设的业务数据变化率与权重之间的对应关系,确定目标权重;根据所述当前周期对应的业务数据变化率、恢复数据写入速率以及所述目标权重,计算获取所述下一周期的恢复数据写入速率。4.根据权利要求3所述的方法,其特征在于,所述根据所述当前周期对应的业务数据变化率、恢复数据写入速率以及所述目标权重,确定所述下一周期的恢复数据写入速率,包括:将所述当前周期对应的业务数据变化率与所述目标权重相乘,得到调整速率倍数;根据所述调整速率倍数以及所述当前周期对应的恢复数据写入速率,计算获取所述下一周期的恢复数据写入速率。5.根据权利要求1-4任一项所述的方法,其特征在于,所述数据节点中包括一级存储模块以及二级存储模块,所述根据所述当前周期的业务数据写入量、所述当前周期的前一周期的业务数据写入量以及所述当前周期的恢复数据写入量,确定所述当前周期的下一周期的恢复数据写入速率,包括:根据所述当前周期的业务数据写入量、所述当前周期的前一周期的业务数据写入量以及所述当前周期的恢复数据写入量,计算得到所述下一周期的初始恢复数据写入速率;
确定所述当前周期内从所述一级存储模块写入所述二级存储模块的转发数据写入量;根据所述当前周期的业务数据写入量、所述恢复数据写入量以及所述转发数据写入量,确定所述当前周期对应的所述一级存储模块的数据保存总量;根据所述当前周期对应的所述一级存储模块的数据保存总量、预设保存量,确定是否对所述下一周期的初始恢复数据写入速率进行调整;若是,则对所述下一周期的初始恢复数据写入速率进行调整得到所述下一周期的恢复数据写入速率。6.根据权利要求1-4任一项所述的方法,其特征在于,所述根据所述当前周期的业务数据写入量、所述当前周期的前一周期的业务数据写入量以及所述当前周期的恢复数据写入量,确定所述当前周期的下一周期的恢复数据写入速率之后,所述方法还包括:确定所述下一周期的恢复数据写入速率是否小于预设恢复数据写入速率;若是,则在所述下一周期根据所述下一周期的恢复数据写入速率从各所述目标数据节点中读取恢复数据。7.根据权利要求5所述的方法,其特征在于,所述根据所述恢复参考数据得到当前周期的恢复数据之后,所述方法还包括:将所述当前周期的恢复数据写入所述一级存储模块;在达到预设时间后,基于所述二级存储模块中硬盘对应的读写速度阈值从所述一级存储模块中读取恢复数据。8.一种分布式存储系统,其特征在于,所述分布式存储系统中包括监控节点以及多个数据节点,所述监控节点与各所述数据节点通信连接,所述数据节点用于执行如权利要求1-7任一项所述数据恢复方法的步骤。9.一种电子设备,其特征在于,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当所述电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如权利要求1-7任一项所述数据恢复方法的步骤。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1-7任一项所述数据恢复方法的步骤。
技术总结
本申请提供一种数据恢复方法、系统、设备及存储介质,涉及分布式存储技术领域。该方法包括:应用于分布式存储系统中的任一数据节点,分布式存储系统中包括监控节点以及多个数据节点,监控节点与各数据节点通信连接,该方法包括:接收监控节点发送的数据恢复请求;根据数据恢复请求中包括的各目标数据节点的标识,从各目标数据节点中读取恢复参考数据,并根据恢复参考数据得到当前周期的恢复数据;根据当前周期的业务数据写入量、当前周期的前一周期的业务数据写入量以及当前周期的恢复数据写入量,确定当前周期的下一周期的恢复数据写入速率。这样可在不影响业务性能的基础上进行数据恢复,进而提高分布式存储系统的可靠性。性。性。
技术研发人员:
杨涛
受保护的技术使用者:
重庆紫光华山智安科技有限公司
技术研发日:
2022.10.11
技术公布日:
2022/12/30