CN117667470A - 数据修复的控制方法、装置、设备及存储介质 - Google Patents

数据修复的控制方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN117667470A
CN117667470A CN202211045297.4A CN202211045297A CN117667470A CN 117667470 A CN117667470 A CN 117667470A CN 202211045297 A CN202211045297 A CN 202211045297A CN 117667470 A CN117667470 A CN 117667470A
Authority
CN
China
Prior art keywords
data
rack
node
data blocks
data block
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
Application number
CN202211045297.4A
Other languages
English (en)
Inventor
魏文佳
陈昊
朱夏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202211045297.4A priority Critical patent/CN117667470A/zh
Publication of CN117667470A publication Critical patent/CN117667470A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供了一种数据修复的控制方法、装置、设备及存储介质。在实施例中,确定第一数据块的身份标识,第一数据块为待修复的数据块;根据第一数据块的身份标识,确定k+r‑1个第二数据块各自的分布信息,分布信息用于指示数据块所在的机架以及数据块所在的存储节点;根据k+r‑1个第二数据块各自的分布信息,确定至少一个机架组;根据每个机架组包含的机架的数量,从至少一个机架组中确定目标机架组;向目标机架组中的k个第二数据块所在的存储节点发送控制指令。由此,通过本申请实施例提供的技术方案,可减少数据块修复过程中跨机架的数量,避免由于不同的机架之间的带宽差异较大导致数据修复时间长的问题,减少数据修复的时间。

Description

数据修复的控制方法、装置、设备及存储介质
技术领域
本申请涉及通信技术领域,尤其涉及一种数据修复的控制方法、装置、设备及存储介质。
背景技术
随着数量的高速增长,数据存储的需求越来越大。分布式存储系统能够将大文件、大批量文件,分布式存放在大量的服务器中,以便于采取分而治之的方式对海量数据进行存储和输出,满足了数据存储的高速增长的需求。
目前,为了降低数据修复时间,在EC编码的基础上提出了多种方案,如部分并行修复(Partial-Parallel-Repair,PPR)方案和流水线修复(Repair Pipelining forErasure-Coded Storage,ECPipe)方案。
但是,上述两种数据修复方案均建立在可利用的带宽资源相同的基础上,而在分布式存储系统中,可利用的带宽资源是动态变化的,因此,相关技术中的数据修复方案依然无法有效解决减少数据修复时间的需求。
发明内容
本申请实施例提供了一种数据修复的控制方法、装置、设备及存储介质,通过减少数据块修复过程中跨机架的数量,避免由于不同的机架之间的带宽差异较大导致数据修复时间长的问题,减少数据修复的时间。
第一方面,本申请实施例提供了一种数据修复的控制方法,包括:
确定第一数据块的身份标识,第一数据块为待修复的数据块;
根据第一数据块的身份标识,确定k+r-1个第二数据块各自的分布信息,分布信息用于指示数据块所在的机架以及数据块所在的存储节点,第一数据块和k+r-1个第二数据块为对同一个数据编码后得到的数据块,k和r为正整数;
根据k+r-1个第二数据块各自的分布信息,确定至少一个机架组,至少一个机架组中的每个机架组包括至少一个机架,机架组包括p个第二数据块,p为正整数且p大于或等于k;
根据每个机架组包含的机架的数量,从至少一个机架组中确定目标机架组;
向目标机架组中的k个第二数据块所在的存储节点发送控制指令,以使k个第二数据块各自所在的存储节点根据k个第二数据块修复第一数据块。
如此,本申请实施例通过第二数据块的分布信息,确定能够用于数据块修复的机架组,为了减少数据修复时间,根据每个机架组中包含的机架的数量,从至少一个机架组中选出目标机架组,从而尽量减少数据修复过程中跨机架的数量,减少数据修复的时间。
在一种可能的实现方式中,机架组有多个,且多个机架组包含的机架数量相同;
根据每个机架组包含的机架的数量,从至少一个机架组中确定目标机架组,包括:
确定每个机架组中的数据传输路径,数据传输路径为修复第一数据块过程中的数据传输路径;
计算每个机架组中数据传输路径的数据传输时长;
根据数据传输时长,从至少一个机架组中确定目标机架组。
如此,综合考虑机架组包含机架的数量和机架组中数据传输路径的数据传输时长,既能避免由于不同的机架之间的带宽差异较大导致数据修复时间长的问题,又能减少数据修复过程中数据传输的时长,从而提高数据修复的效率。
在一种可能的实现方式中,目标机架组中包含的机架的数量为至少一个机架组中各自包含的机架的数量最小的机架组。
如此,可以减少数据块的修复过程中数据传输过程中跨机架的数量,减少数据传输的时长,从而减少数据修复时长。
在一种可能的实现方式中,根据根据k+r-1个第二数据块各自的分布信息,确定至少一个机架组,包括:
根据k+r-1个数据块各自的分布信息,确定每个机架包含的第二数据块的数量;
根据每个机架包含的第二数据块的数量,确定至少一个机架组。
如此,同一机架组中用于数据块修复的机架的数量越多,数据修复过程中跨机架的数量越少,减少数据传输的时长,从而减少数据修复时长。
在一种可能的实现方式中,控制指令包括用于修复第一数据块的数据传输路径和k个第二数据块各自所在的存储节点的修复系数,其中,用于修复第一数据块的数据传输路径中的传输节点包括k个第二数据块各自所在的存储节点。
在一种可能的实现方式中,用于修复第一数据块的数据传输路径为,目标机架组提供的数据传输路径的数据传输时长最小的数据传输路径。
如此,可以减少数据传输过程中的时长,从而减少数据修复时长。
在一种可能的实现方式中,该方法还包括:
控制存储节点检测存储节点中的数据块是否需要修复。
在一种可能的实现方式中,控制存储节点检测存储节点中的数据块是否需要修复,包括:
按照预设的时间周期控制存储节点检测存储节点中的数据块是否需要修复。
在一种可能的实现方式中,方法还包括:
确定请求节点的分布信息,请求节点的分布信息用于指示请求节点所在的机架,请求节点为用于修复第一数据块的存储节点中除k个第二数据块所在的存储节点之外的存储节点;
根据k+r-1个第二数据块各自的分布信息,确定至少一个机架组,包括:
根据k+r-1个第二数据块各自的分布信息和请求节点的分布信息,从至少一个机架组中确定目标机架组。
如此,结合请求节点的分布信息和k+r-1个数据块的分布信息,可以使请求节点和k+r-1个数据块中的部分数据块在同一个机架中,减少数据块修复过程中跨机架的数量,从而减少修复时间。
在一种可能的实现方式中,第一数据块有多个,多个第一数据块是由不同的数据编码得到。
如此,能够并行修复多个待修复的数据块,提高数据修复的效率。
第二方面,本申请实施例提供了一种数据修复的控制装置,包括:
第一确定模块,用于确定第一数据块的身份标识,第一数据块为待修复的数据块;
第二确定模块,用于根据第一数据块的身份标识,确定k+r-1个第二数据块各自的分布信息,分布信息用于指示数据块所在的机架以及数据块所在的存储节点,第一数据块和k+r-1个第二数据块为对同一个数据编码后得到的数据块,k和r为正整数;
第三确定模块,用于根据k+r-1个第二数据块各自的分布信息,确定至少一个机架组,至少一个机架组中的每个机架组包括至少一个机架,机架组包括p个第二数据块,p为正整数且p大于或等于k;
第四确定模块,用于根据每个机架组包含的机架的数量,从至少一个机架组中确定目标机架组;
发送模块,用于向目标机架组中的k个第二数据块所在的存储节点发送控制指令,以使k个第二数据块各自所在的存储节点根据k个第二数据块修复第一数据块。
如此,本申请实施例通过第二数据块的分布信息,确定能够用于数据块修复的机架组,为了减少数据修复时间,根据每个机架组中包含的机架的数量,从至少一个机架组中选出目标机架组,从而尽量减少数据修复过程中跨机架的数量,减少数据修复的时间。
在一种可能的实现方式中,机架组有多个,且多个机架组包含的机架数量相同;
第四确定模块,用于确定每个机架组中的数据传输路径,数据传输路径为修复第一数据块过程中的数据传输路径;
计算每个机架组中数据传输路径的数据传输时长;
根据数据传输时长,从至少一个机架组中确定目标机架组。
如此,综合考虑机架组包含机架的数量和机架组中数据传输路径的数据传输时长,既能避免由于不同的机架之间的带宽差异较大导致数据修复时间长的问题,又能减少数据修复过程中数据传输的时长,从而提高数据修复的效率。
在一种可能的实现方式中,目标机架组中包含的机架的数量为至少一个机架组中各自包含的机架的数量最小的机架组。
如此,可以减少数据块的修复过程中数据传输过程中跨机架的数量,减少数据传输的时长,从而减少数据修复时长。
在一种可能的实现方式中,第三确定模块用于:
根据k+r-1个数据块各自的分布信息,确定每个机架包含的第二数据块的数量;
根据每个机架包含的第二数据块的数量,确定至少一个机架组。
如此,同一机架组中用于数据块修复的机架的数量越多,数据修复过程中跨机架的数量越少,减少数据传输的时长,从而减少数据修复时长。
在一种可能的实现方式中,控制指令包括用于修复第一数据块的数据传输路径和k个第二数据块各自所在的存储节点的修复系数,其中,用于修复第一数据块的数据传输路径中的传输节点包括k个第二数据块各自所在的存储节点。
在一种可能的实现方式中,用于修复第一数据块的数据传输路径为,目标机架组提供的数据传输路径的数据传输时长最小的数据传输路径。
如此,可以减少数据传输过程中的时长,从而减少数据修复时长。
在一种可能的实现方式中,装置还包括:
控制模块,用于控制存储节点检测存储节点中的数据块是否需要修复。
在一种可能的实现方式中,控制模块,用于按照预设的时间周期控制存储节点检测存储节点中的数据块是否需要修复。
在一种可能的实现方式中,装置还包括:
第五确定模块,用于确定请求节点的分布信息,请求节点的分布信息用于指示请求节点所在的机架,请求节点为用于修复第一数据块的存储节点中除k个第二数据块所在的存储节点之外的存储节点;
第四确定模块用于根据每个机架组包含的机架的数量和请求节点的分布信息,从至少一个机架组中确定目标机架组。
如此,结合请求节点的分布信息和k+r-1个数据块的分布信息,可以使请求节点和k+r-1个数据块中的部分数据块在同一个机架中,减少数据块修复过程中跨机架的数量,从而减少修复时间。
在一种可能的实现方式中,第一数据块有多个,多个第一数据块是由不同的数据编码得到。
如此,能够并行修复多个待修复的数据块,提高数据修复的效率。
第三方面,本申请实施例提供了一种分布式存储系统,系统包括:
控制节点,用于执行如第一方面或第一方面中任一种可能的实现方式所提供的数据修复的控制方法;
多个存储节点,用于在控制节点的控制下进行数据修复。
本申请实施例通过第二数据块的分布信息,确定能够用于数据块修复的机架组,为了减少数据修复时间,根据每个机架组中包含的机架的数量,从至少一个机架组中选出目标机架组,从而尽量减少数据修复过程中跨机架的数量,减少数据修复的时间。
第四方面,本申请实施例提供了一种数据修复的控制装置,包括:至少一个存储器,用于存储程序;至少一个处理器,用于执行存储器存储的程序,当存储器存储的程序被执行时,处理器用于执行第一方面或第一方面中任一种可能的实现方式所提供的方法。
第五方面,本申请实施例提供了一种数据修复的控制装置,装置运行计算机程序指令,以执行第一方面中所提供的方法。示例性的,该装置可以为芯片,或处理器。
在一个例子中,该装置可以包括处理器,该处理器可以与存储器耦合,读取存储器中的指令并根据该指令执行第一方面或第一方面中任一种可能的实现方式所提供的方法。其中,该存储器可以集成在芯片或处理器中,也可以独立于芯片或处理器之外。
第六方面,本申请实施例提供了一种计算机存储介质,计算机存储介质中存储有指令,当指令在计算机上运行时,使得计算机执行第一方面或第一方面中任一种可能的实现方式所提供的方法。
第七方面,本申请实施例提供了一种包含指令的计算机程序产品,当指令在计算机上运行时,使得计算机执行第一方面或第一方面中任一种可能的实现方式所提供的方法。
附图说明
图1是本申请实施例提供的一种分布式存储系统的系统架构图;
图2是本申请实施例提供的另一种分布式存储系统的结构示意图;
图3是本申请实施例提供的一种数据和数据块之间的关系示意图;
图4是本申请实施例提供的一种纠删编码的原理示意图;
图5是本申请实施例提供的一种数据修复方法的原理示意图;
图6是本申请实施例提供的另一种数据修复方法的原理示意图;
图7是本申请实施例提供的一种数据修复的控制方法的通信示意图;
图8是本申请实施例提供的一种数据修复方法的流程示意图;
图9是本申请实施例提供的一种机架组确定方法的流程示意图;
图10是本申请实施例提供的一种机架组的示意图;
图11是本申请实施例提供的另一种机架组确定方法的流程示意图;
图12是本申请实施例提供的一种数据修复方法的通信示意图;
图13是本申请实施例提供的又一种数据修复方法的流程示意图;
图14是本申请实施例提供的一种数据传输路径的结构示意图;
图15是本申请实施例提供的一种数据修复的控制方法的流程示意图;
图16是本申请实施例提供的一种数据修复的控制装置的结构示意图;
图17是本申请实施例提供的一种计算设备的结构示意图。
具体实施方式
为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图,对本申请实施例中的技术方案进行描述。
在本申请实施例的描述中,“示例性的”、“例如”或者“举例来说”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”、“例如”或者“举例来说”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”、“例如”或者“举例来说”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,单独存在B,同时存在A和B这三种情况。另外,除非另有说明,术语“多个”的含义是指两个或两个以上。例如,多个系统是指两个或两个以上的系统,多个终端是指两个或两个以上的终端。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
随着数量的高速增长,数据存储的需求越来越大。分布式存储系统能够将大文件、大批量文件,分布式存放在大量的服务器中,以便于采取分而治之的方式对海量数据进行存储和输出,满足了数据存储的高速增长的需求。
图1是本申请涉及的一种分布式存储系统的架构示意图。如图1所示,分布式存储系统100包括多个机架110(机架1100-机架110M),M为正整数。每个机架具有对数据进行高速缓存的存储资源(如,存储器、闪速存储器、动态随机访问存储器、相变存储器、磁盘等)、进行通信的计算资源(如一个或多个处理器或中央处理单元(Central Processing Unit,CPU))。多个客户端120(客户端1201-客户端120M)可以通过网络130与多个机架110进行通信,从而能够在存储资源上存储数据或读取已存储在存储资源上的数据。
在一些实施例中,多个机架110可以分为数据控制层和数据存储层。其中,数据控制层的机架1100可以包括控制器。数据存储层中的机架包括至少一个存储设备。
其中,控制器可以看作是一个分布式存储系统的中心,用于生成数据块的元数据。具体地,控制器用于管理存储系统的命名空间,承担目录功能。控制器还用于协调客户端对数据的访问、执行对命名空间的操作和记录每个数据块在存储设备中的位置和副本信息。
在一些实施例中,控制器可以是由至少一个具有计算资源的计算设备组成,对此本申请实施例并不做具体限定。
存储设备是真正存储数据的地方。存储设备用于处理客户端的读写请求、在控制器的控制下负责数据块的创建、删除和复制以及周期性地向控制器汇报数据块的相关信息。
客户端用于与控制器进行交互,从而获取数据的存储位置。客户端还用于与存储设备交互,根据数据的存储位置读取数据或写入数据。
在一些实施例中,控制器能够跟踪跨多个存储设备的数据块和用于执行给定数据的多个副本的位置,从而提供更多的数据访问吞吐量,进而避免存储设备等待数据访问。因此,提升了分布式存储系统100的性能。
在一些实施例中,分布式存储系统中的数据存储层包括多个用于存储数据块的存储节点,分布式存储系统中的数据控制层中的控制器可以看作是控制节点。如图2所示,分布式存储系统的数据存储层包括多个存储节点210(如图2所示的机架1中的节点1a、节点1b……,机架M中的节点Ma、节点Mb……),分布在不同的存储设备220(如图2所示的存储设备1至存储设备M)中。由于存储节点故障(如,存储设备中的存储器等出现故障导致存储节点故障)导致分布式存储系统的可用性下降,影响用户的使用体验。为了保证分布式存储系统的可用性和持久性,需要对数据进行修复。
目前,大规模分布式存储系统采用纠删(Erasure Coding,EC)编码进行数据保护,以提供高可用性的分布式存储系统。分布式存储系统中最常见的EC方案是里德-所罗门(Reed Solomon,RS)码,RS(k,r)码将k个数据块编码为k+r块数据,其中,k为原始数据块的数目,r为校验数据块的数目。示例性地,如图3所示,数据230可以被划分为k个原始数据块31,r个校验数据块32。k+r个数据块分别分布在不同的存储节点中。RS(k,r)码可以从(k+r)数据块中的任意k个数据块重建所有原始数据,从而容忍任意r个故障。定义bi为要读取的第i个数据块,ai为第i个数据块对应的解码系数,丢失的数据B*可以从k个数据块的线性组合计算得到,即丢失的数据B*满足下述公式(1):
在对EC方案进行说明之前,先对存储节点在数据修复过程中的分工进行说明。
数据修复方案中存储节点可包括请求节点和k+r-1个剩余节点。其中,k+r-1个剩余节点工存储有k+r-1个数据块。请求节点和任意k个剩余节点(k个剩余节点可以称之为k个帮助节点)用于修复损坏或丢失的数据块。请求节点能够主动发出数据修复请求。请求节点为发出数据修复请求的节点。k+r-1个数据块属于同一个数据编码后得到的数据块。
为了方便描述,下述均采用N1,N2,N3,……Nk来区分不同的帮助节点,采用R表示请求节点。其中,n为正整数。不同的节点具有不同的修复系数a。为了方便描述,均采用a表示不同节点的修复系数,其中,N1节点对应修复系数为a1,N2节点对应的修复系数为a2,N3节点对应的修复系数为a3,……以此类推,Nk节点对应的修复系数为ak
EC方案虽然实现了分布式存储系统的高可用,但是在数据修复的过程中会产生大量的修复流量。如图4所示,在RS(4,2)码中,当一个数据量为m的数据块由于磁盘或服务器故障而丢失时,需要获取4个数据块的数据(4*m的数据量)以恢复丢失的数据,由于需要将4个数据块的数据都传送到一个存储节点进行修复计算,即需要传输数据量为4*m的数据至请求节点。因此,在请求节点会出现数据修复流量比例放大的问题,导致数据恢复非常缓慢,相对直接传输数据量为m的数据,修复时间放大k倍,即需要k个时隙完成修复,同时还会在请求节点产生算力热点问题。
为了降低数据修复时间,目前,在EC编码的基础上提出了多种方案,如部分并行修复(Partial-Parallel-Repair,PPR)方案和流水线修复(Repair Pipelining forErasure-Coded Storage,ECPipe)方案。
接下来,分别对PPR方案和ECPipe方案进行说明。
PPR方案是一种分布在多个存储节点上并发性修复的方案。PPR方案的核心思想是将整个数据修复过程分成多个并行修复的子过程,在每个子过程选取帮助节点计算出修复的部分结果,而不是每个节点都将数据直接发送到请求节点完成计算,因此能够更好地均衡修复流量,并像树一样将部分结果聚合计算出最终结果发送到请求节点。如图5所示,缺失或损坏的数据块的修复过程采用二分的方式在三个时隙完成:在第一个时隙t1(图5中的标号①),N1节点发送a1b1到N2节点计算得到a1b1+a2b2,N3节点发送a3b3到N4节点计算得到a3b3+a4b4。在第二个时隙t2(图5中的标号②),N2节点发送a1b1+a2b2到N4节点,计算得到a1b1+a2b2+a3b3+a4b4。在第三个时隙t3(图5中的标号③),N4节点发送最终修复的数据给请求节点R。
可见,PPR方案通过二分的方式将数据修复任务分布到多节点来完成,修复的时间仅为log2(k+1)个时隙,小于k个时隙,减少了数据修复的时间。但是,在数据修复过程中,修复流量和算力的分布是不完全平衡的,例如,图5中的N4节点需要接收来自N2节点和N3节点的修复流量,需要付出更多的算力,会增加N4节点的数据修复时间,从而影响整体的数据修复时间。换言之,不均衡的修复任务的分配影响数据修复的整体时间。
ECPipe方案相对于PPR方案的修复任务分配均衡,从而使得各个帮助节点的负载更为均衡。如图6所示,ECPipe方案主要思想是将数据块的修复任务分解,将每个帮助节点中的数据块分片,在帮助节点以分片为单位对缺失或损坏的数据块进行流水线修复。如图6所示,将N1节点、N2节点,N3节点和N4节点中的数据块分为6片。(1)N1节点完成数据块1的第一个分片数据的修复,即数据a1b11,并将数据a1b11发送给节点N2。(2)N1节点完成数据块1的第二个分片数据的修复,即数据a1b12,并将数据a1b12发送给N2节点;N2节点基于数据a1b11和数据块2的第一个分片数据进行数据修复,得到数据a1b11+a2b21,并将数据a1b11+a2b21发送给N3节点。(3)N1节点完成数据块1的第三个分片数据的进行数据修复,得到数据a1b13并发送给N2节点;N2节点基于数据a1b12和数据块2的第二个分片数据进行修复,得到数据a1b12+a2b22,并将数据a1b12+a2b22发送给N3节点;N3节点基于数据a1b11+a2b21和数据块3的第一个分片数据进行修复,得到数据a1b11+a2b21+a3b31,并将数据a1b11+a2b21+a3b31发送给N4节点。(4)N1节点完成数据块1的第四个分片数据进行数据修复,得到数据a1b14,并将数据a1b14发送给给N2节点;N2节点基于数据a1b13和数据块2的第三个分片数据进行修复,得到数据a1b13+a2b23,N3节点基于数据a1b12+a2b22和数据块3的第二分片数据进行修复,得到数据a1b12+a2b22+a3b32,并将数据a1b12+a2b22+a3b32发送给N4节点。N4节点基于数据a1b11+a2b21+a3b31和数据块4的第一个分片数据进行数据修复,得到数据a1b11+a2b21+a3b31+a4b41,并将数据a1b11+a2b21+a3b31+a4b41发送给请求节点R。如此类推,最终请求节点R能够获取到数据a1b11+a2b21+a3b31+a4b41,数据a1b12+a2b22+a3b32+a4b42,数据a1b13+a2b23+a3b33+a4b43和数据a1b14+a2b24+a3b34+a4b44。请求节点R基于数据a1b11+a2b21+a3b31+a4b41,数据a1b12+a2b22+a3b32+a4b42,数据a1b13+a2b23+a3b33+a4b43和数据a1b14+a2b24+a3b34+a4b44进行数据修复,得到缺失或损坏的数据块。如此,由于每个节点的带宽资源有限,在节点间的链路状态相同的情况下,将数据块分片进行流水线修复的方式,帮助节点之间能够均衡分配修复流量的同时,还能充分利用带宽资源以及每个帮助节点的算力。
其中,在节点间的链路状态同构的情况下,对缺失或损坏的数据块的修复时间为ceil(1+(k-1)/s)个时隙,其中s为分片数,随着s的增大修复时间会趋向于正常编码块的读取时间。
但是,ECPipe方案虽然在存储节点之间实现了流量的均衡分配,降低了修复时间,但是不同的帮助节点(如帮助节点所在的机架不同)的带宽利用状态不一定是相同的(如,一些节点的带宽剩余较多,一些节点的带宽剩余较少),也即节点间的链路状态不相同。因此,通过ECPipe方案节省修复时间是需要在特定条件下才能实现的。
综上所述,相关技术中减少数据修复时间的方案(PPR方案和ECPipe方案)均忽视了数据修复时帮助节点所在的拓扑结构及链路的不对称性。例如,参与修复的节点可能放置在不同的机架内,机架内和机架间的带宽差异明显,机架内通常是机架间带宽的5-10倍。同时每条链路的流量动态变化不均匀,导致节点间链路可用带宽的动态变化。因此,相关技术中的数据修复方案依然无法有效解决减少数据修复时间需求。
基于上述实施例中的分布式存储系统,如图7所示,本申请实施例通过上述实施例中分布式存储系统中的请求节点向控制节点发送数据修复请求,从而使得控制节点触发数据修复控制机制。控制节点通过确定用于修复数据块(Block)的过程中跨机架(RACK)的数量(信息采集),进行机架组计算。进一步地,控制节点确定进行数据块修复的帮助节点(Helper),从而进行帮助节点的调度。并向进行数据块修复的帮助节点发送控制指令(2.帮助节点的调度),以使帮助节点在控制指令的控制下进行数据块的修复。如此,能够避免由于不同的机架之间的带宽差异较大导致数据修复时间长的问题,减少数据修复的时间。
接下来,对分布式存储系统进行数据修复的方法进行详细说明。
图8是本申请实施例提供的一种数据修复方法的流程示意图。本申请实施例提供的数据修复方法可以应用于图1和图2所示的分布式存储系统,并由图1所示的分布式存储系统或图2所示的分布式存储系统执行。如图8所示,本申请实施例提供的数据修复方法包括下述步骤S801-S810。
S801,请求节点向控制节点发送数据修复请求,数据修复请求包括待修复的数据块的身份标识。
在数据块损坏或丢失的情况下,分布式存储系统会触发数据块的修复机制。
在分布式存储系统确定数据块损坏或丢失的情况下,分布式存储系统随机选取能够存储数据的存储节点作为请求节点,待修复的数据块所在的存储节点能够向请求节点发送待修复的数据块的身份标识,请求节点生成数据修复请求,该数据修复请求携带有待修复的数据块的身份标识。分布式存储系统包括多种机制来确定数据块是否损坏或丢失。
在一些实施例中,客户端在访问数据时触发降级读,则分布式存储系统会启动数据块修复机制。在客户端访问数据时触发降级读的情况下,待修复的数据块所在的存储节点能够向请求节点发送待修复的数据块的身份标识,请求节点生成数据修复请求。
在另一些实施例中,存储节点能够检测是否有数据块损坏或丢失,例如,存储节点可以定期对数据块进行检测。存储节点检测到存储节点中的数据块损坏或丢失,向请求节点发送待修复的数据块的身份标识,请求节点生成数据修复请求。
在这里,请求节点可以是控制节点随机指定的。
S802,控制节点根据待修复的数据块的身份标识,确定待修复的数据块所属的数据的标识。
分布式存储系统对数据进行编码后能够得到k+r个数据块。k+r个数据块的身份标识和数据的标识存在关联关系。控制节点根据待修复的数据块的身份标识能够确定待修复的数据块所属的数据的标识
S803,控制节点根据数据的标识,确定数据对应的k+r-1个目标数据块各自的身份标识。
目标数据块是指用于修复损坏或丢失的数据块(待修复的数据块)的数据块。其中,目标数据块和待修复的数据块均为对数据编码后得到的数据块。
控制节点的存储资源中存储有对数据编码后得到的数据块的身份标识。控制节点能够根据数据的标识,从控制节点自身的存储资源中检索到数据对应的k+r-1个目标数据块的身份标识。
在一些实施例中,数据的标识可以是字符串、数字、汉字以及任意组合,本申请实施例对此不做具体限定。
示例性地,如表一所示,数据A被编码后得到k+r个数据块,分别是数据块1、数据块2、……、数据块k、……、数据块n(k+r=n)。其中,数据的标识为“data A”,数据块1的身份标识为“data A-1”、数据块2的身份标识为“data A-2”、……、数据块k的身份标识为“data A-k”、……、数据块r的身份标识为“data A-n”。
表一
需要说明的是,表一仅用来说明数据(Data)和数据块(Block)之间的映射关系,表一作为一种示例性地说明,并不作为对本申请实施例的一种限定。
S804,控制节点根据k+r-1个目标数据块各自的身份标识,确定k+r-1个目标数据块各自的分布信息,目标数据块的分布信息用于指示目标数据块所属的帮助节点和帮助节点所在的机架。
控制节点的存储资源中存储有每个数据对应的数据块的分布信息。其中,数据块的分布信息包括数据块所在的存储节点(在数据修复过程中,为了方便描述,将用于数据块修复的目标数据块所在的存储节点称之为帮助节点)以及存储节点所在的机架。
示例性地,如表二所示,数据A(data A)被编码后得到k+r个数据块,分别是数据块1、数据块2、……、数据块k、……、数据块n(k+r=n)。其中,数据块1(data A-1)所在的存储节点为N1节点,N1节点所在的机架为rack 1(机架1);数据块2(data A-2)所在的存储节点为N2节点,N2节点所在的机架为rack 2(机架2);数据块3(data A-3)所在的存储节点为N2节点,N2节点所在的机架为rack2(机架2);数据块4(data A-4)所在的存储节点为N4节点,N4节点所在的机架为rack 4(机架4);……;数据块n(data A-n)所在的存储节点为N3节点,N3节点所在的机架为rack5(机架5)。
表二
需要说明的是,表二仅作为数据块的分布信息的中示例性说明,并不作为对本申请实施例的一种限定。
S805,控制节点根据目标数据块的分布信息,确定每个机架中提供的目标数据块的数量。
k+r-1目标数据块分布在各个机架中。其中,不同的目标数据块可以分布在同一个机架中;不同的目标数据块也可以分布在不同的机架中。由此,不同的机架所包含的目标数据块是不同的。控制节点能够遍历目标数据块的分布信息,从而统计每个机架所包含的目标数据块的数量。
例如,控制节点根据目标数据块的分布信息可知,机架1包含目标数据块data A-1,机架2包含目标数据块data A-2和目标数据块data A-3,机架4包含目标数据块data A-4和data A-5,机架5包含目标数据块data A-6。从而控制节点统计得到机架1包含目标数据块的数量为1,机架2包含目标数据块的数量为2,机架4包含目标数据块的数量为2,机架5包含目标数据块的数量为1。
S806,控制节点根据每个机架包含的目标数据块的数量,确定机架组,其中,机架组包含的目标数据块的数量大于或等于k。
控制节点根据每个机架包含的目标数据块的数量,确定机架组,该机架组包含的目标数据块的数量大于或等于k。
在一些实施例中,如图9所示,本申请实施例提供的确定机架组的方法可以包括下述步骤S901-S903。
S901,控制节点确定满足预设条件的机架组,预设条件为机架组包含的目标数据块的数量大于或等于k。
控制节点根据每个机架包含的目标数据块的数量,确定所有能够满足预设条件的机架组。
S902,控制节点计算机架组中机架的数量。
S903,控制节点确定机架组中机架的数量最小的机架组为最终的机架组。
示例性地,对数据编码得到10+6=16个数据块,分别为数据块1,数据块2,……,数据块16。如图10所示,分布式存储系统包括机架1、机架2、机架3、机架4、机架5和机架6。其中,数据块1位于机架1中的存储节点N1-1,数据块2位于机架1中的存储节点N2-2,数据3位于机架1中的存储节点N4-4,数据块4位于机架2中的存储节点N1-5,数据块5位于机架2中的存储节点N2-6,数据块6位于机架2中的存储节点N3-7,数据块7位于机架2中的存储节点N4-8,数据块8位于机架3中的存储节点N1-9,数据块9位于机架3中的存储节点N3-11,数据块10位于机架4中的存储节点N2-14,数据块11位于机架5中的存储节点N1-17,数据块12位于机架5中的存储节点N2-18,数据块13位于机架5中的存储节点N4-20,数据块14位于机架6中的存储节点N1-21,数据块15位于机架6中的存储节点N3-23,数据块16位于机架6中的存储节点N4-24。其中,数据块1所在的存储节点N1-1损坏,导致数据块1丢失。修复数据块1需要10个数据块(10个数据块未出现损坏或丢失)。由上述各个数据块的分布信息可知,机架1包含的目标数据块的数量为2,机架2包含的目标数据块的数量为4,机架3包含的目标数据块的数量为2,机架4包含的目标数据块的数量为1,机架5包含的目标数据块的数量为3,机架6包含的目标数据块的数量为3。
根据每个机架包含的目标数据块的数量,可以得到多种机架组。其中,机架组1包括机架2、机架3、机架4和机架5,机架组2包括机架2、机架3、机架4和机架6,机架组3包括机架2、机架5和机架6,机架组4包括机架2、机架3、机架4和机架5,……。机架组3在满足条件的基础上,机架组3中包含的机架数量最少,确定机架组3为最终的机架组,以通过机架组3中包含的目标数据块修复数据块1。
在另一些实施例中,如图11所示,本申请实施例提供的确定机架组的方法可以包括下述步骤S1101和S1102。
S1101,控制节点根据每个机架中包含的目标数据块的数量,对机架进行排序。
示例性地,控制节点按照目标数据块的数量从大到小的顺序对机架进行排序。又一示例性地,控制节点按照目标数据块的数量从小到大的顺序对机架进行排序。
S1102,控制节点按照目标数据块的数量从大到小的顺序检索机架,直至所有检索到的机架中包含的目标数据块的数量大于或等于k,确定机架组。
示例性地,对数据编码得到10+6=16个数据块,分别为数据块1,数据块2,……,数据块16。如图10所示,分布式存储系统包括机架1、机架2、机架3、机架4、机架5和机架6。其中,数据块1位于机架1中的存储节点N1-1,数据块2位于机架1中的存储节点N2-2,数据3位于机架1中的存储节点N4-4,数据块4位于机架2中的存储节点N1-5,数据块5位于机架2中的存储节点N2-6,数据块6位于机架2中的存储节点N3-7,数据块7位于机架2中的存储节点N4-8,数据块8位于机架3中的存储节点N1-9,数据块9位于机架3中的存储节点N3-11,数据块10位于机架4中的存储节点N2-14,数据块11位于机架5中的存储节点N1-17,数据块12位于机架5中的存储节点N2-18,数据块13位于机架5中的存储节点N4-20,数据块14位于机架6中的存储节点N1-21,数据块15位于机架6中的存储节点N3-23,数据块16位于机架6中的存储节点N4-24。
其中,数据块1所在的存储节点N1-1损坏,导致数据块1丢失。修复数据块1需要10个数据块(10个数据块未出现损坏或丢失)。由上述各个数据块的分布信息可知,机架1包含的目标数据块的数量为2,机架2包含的目标数据块的数量为4,机架3包含的目标数据块的数量为2,机架4包含的目标数据块的数量为1,机架5包含的目标数据块的数量为3,机架6包含的目标数据块的数量为3。控制节点对机架进行排序可得:机架2(4个目标数据块)>机架5(3个目标数据块)=机架6(3个目标数据块)>机架3(2个目标数据块)=机架1(2个目标数据块)>机架4(1个目标数据块)。控制节点检索到机架2、机架5和机架6总共包含的目标数据块的数量等于10。控制节点确定机架组包括机架2、机架5和机架6。
S807,控制节点根据机架组中提供的k个目标数据块所在的存储节点进行数据修复的数据传输路径的规划。
数据传输路径用于指示每个帮助节点的下一跳节点,即帮助节点将修复后的数据发送给下一跳节点。在数据修复的过程中,每个帮助节点(即k个目标数据块所在的存储节点)均需要进行部分数据的修复,以使请求节点完成最终的数据块修复。例如,如图6所示,数据修复过程中的数据传输路径为帮助节点N1->帮助节点N2->帮助节点N3->帮助节点N4->请求节点R。
在这里,为了节省数据修复的时间,控制节点根据跨机架的数量最少为准进行路径规划示例性地,如图10对应的实施例中,用于修复数据块1的机架组包括机架2、机架5和机架6。其中,机架2中用于修复数据块1的帮助节点包括节点N1-5、节点N2-6、节点N3-7、节点N4-8;机架组中用于修复数据块1的帮助节点包括节点N1-17、节点N2-18、节点N4-20;机架6中用于修复数据快的节点包括节点N1-21、节点N3-23和节点N4-24。规划后的数据传输路径可以是节点N1-5->节点N2-6->节点N3-7->节点N4-8->节点N1-17->节点N2-18->节点N4-20->节点N1-21->节点N3-23->节点N4-24->请求节点R。规划后的数据传输路径可以是节点N1-17->节点N2-18->节点N4-20->节点N1-5->节点N2-6->节点N3-7->节点N4-8->节点N1-21->节点N3-23->节点N4-24->请求节点R。规划后的数据传输路径可以是节点N1-21->节点N3-23->节点N4-24->N1-17->节点N2-18->节点N4-20->节点N1-5->节点N2-6->节点N3-7->节点N4-8->请求节点R。根据上述规划的数据传输路径,跨机架的数量为3。
S808,控制节点根据规划的数据传输路径,生成控制指令,所述控制指令用于指示数据传输路径。
S809,控制节点向k个目标数据块所在的存储节点发送控制指令。
控制节点将规划的数据传输路径携带于控制指令中,并将控制指令分别发送给k个数据块所在的存储节点。
S810,存储节点根据控制指令进行数据块的修复。
存储节点根据控制指令能够得到数据传输路径,从而按照数据传输路径,以流水线的方式进行数据块的修复。
在这里,存储节点存储有目标数据块对应的修复系数。存储节点根据目标数据块对应的修复系数进行数据修复,并将修复得到的数据按照数据传输路径发送给该存储节点的下一个节点。
例如,数据传输路径为节点N1->节点N2->节点N3->节点N4->请求节点R。其中,如图12所示,以每个目标数据块进行分片(为了方便描述,每一片数据块称为分片数据),对数据块进行修复。数据块的修复原理如图6对应的实施例中对ECPipe方案的详细说明,在此不再重复说明。如图12所示,节点N1、节点N2和节点N3所在的机架为RACK1,节点N4和请求节点R所在的机架为RACK2。数据块修复过程中跨机架的数量为2。
在本申请实施例中,通过将包含机架的数量最少的机架组作为修复数据块的机架组,进而减少数据块修复的过程中跨机架的数量,避免由于不同的机架之间的带宽差异较大导致数据修复时间长的问题,减少数据修复的时间。
在一些实施例,在S806中,控制节点确定的最终的机架组可能有多个,多个机架组包含的机架的数量相同。例如,在所有的机架组中,包含机架的数量为3的机架组是包含机架数量最少的机架组。而包含机架的数量为3的机架组有三个。在这种场景下,本申请实施例还提供了另一种数据修复方法。
图13是本申请实施例提供的一种数据修复方法的流程示意图。如图13所示,本申请实施例包括以下步骤S1301-S1307。在一种可能的实现方式中,在S1301之前还包括如图8实施例中的S801-S806。其中,S801-S806的相关说明可详见图8实施例中对SS801-S806的说明,在此不再详细说明。
S1301,控制节点确定每个机架组中的数据传输路径。
控制节点根据每个机架组中k个目标数据块所在的存储节点进行数据传输路径的规划。在一些实施例中,控制节点按照跨机架的数量最少,确定机架组中的数据传输路径,具体可参见图8实施例中对S807的详细说明,在此不再详细赘述。
S1302,控制节点计算每个机架组中数据传输路径的数据传输时长。
控制节点能够实时确定每个存储节点的剩余带宽,从而计算数据传输路径的数据传输时长。
其中,数据传输链路上两个相邻的存储节点之间的数据传输时长等于两个相邻的存储节点间的链路传输时长tN和磁盘IO时延tIO之和。链路传输时长满足下述公式(2):
tN=mi/B (2)
B表示存储节点的剩余带宽,mi表示第i个数据块的数据量。
在这里,磁盘的IO时延为从磁盘中读取数据的时间长度,是磁盘的固有属性,可以预先配置在控制节点中。在这里,一个磁盘可以看作一个存储节点。
数据传输路径的数据传输时长等于数据传输路径中两个相邻的存储节点之间的数据传输时长之和。
示例性地,如图14所示,数据传输路径的为节点N1->节点N2->节点N3->节点N4->请求节点R。节点N1和节点N2之间的数据传输时长为tl1,节点N2和节点N3之间的数据传输时长为tl2,节点N3和节点N4之间的数据传输时长为tl3,节点N4和请求节点R之间的数据传输时长为tl4。因此,数据传输路径的数据传输时长为tl1+tl2+tl3+tl4
在这里,机架组能够提供多条数据传输路径,如图10对应的实施例中,跨机架数量最少的数据传输路径有多条。例如,数据传输路径1为节点N1-17->节点N2-18->节点N4-20->节点N1-5->节点N2-6->节点N3-7->节点N4-8->节点N1-21->节点N3-23->节点N4-24->请求节点R。又例如,数据传输路径2位节点N1-21->节点N3-23->节点N4-24->N1-17->节点N2-18->节点N4-20->节点N1-5->节点N2-6->节点N3-7->节点N4-8->请求节点R。尽管数据传输路径1和数据传输路径2不同,但是,数据传输路径1和数据传输路径2在数据块的修复过程中,跨机架的数量相同,路径上的节点相同。因此,数据传输路径1和数据传输路径2数据传输时长相同。因此,每个机架组可以任意选择一条数据传输路径。
S1303:控制节点根据每个机架组中数据传输路径的数据传输时长,确定目标机架组。
为了减少数据块的修复时间,控制节点将数据传输时长最小的数据传输路劲对应的机架组作为目标机架组,目标机架组中k个目标数据块用于修复数据块。
S1304:控制节点根据目标机架组中的数据传输路径生成控制指令。
目标机架组中的数据传输路径是通过S1301确定的。在一些实施例中,控制节点在确定每个机架组的数据传输路径之后,能够生成机架组和数据传输路径之间的对应关系。在控制节点确定目标机架组之后,控制节点根据机架组和数据传输路径至之间的对应关系,确定目标机架组对应的数据传输路径。
示例性地,如表三所示,机架组1对应的数据传输路径为节点N11->节点N12->节点N13->请求节点R,机架组2对应的数据传输路径为节点N21->节点N22->节点N23->请求节点R,机架组3对应的数据传输路径为节点N31->节点N32->节点N33->请求节点R。其中,控制节点计算机架组2对应的数据传输路径的数据传输时长最小,控制节点确定机架组2为目标机架组。根据表三,控制阶段确定机架组2的数据传输路径为节点N21->节点N22->节点N23->请求节点R。
表三
机架组 路径
机架组1 节点N11->节点N12->节点N13->请求节点R
机架组2 节点N21->节点N22->节点N23->请求节点R
机架组3 节点N31->节点N32->节点N33->请求节点R
S1305,控制节点根据目标机架组对应的数据传输路径生成控制指令。
S1306,控制节点向k个目标数据块所在的存储节点发送控制指令。
S1307,存储节点根据控制指令进行数据块的修复。
S1305-S1307的具体说明可参见图8实施例中对S808-S810的具体说明,在此不再详细赘述。
本申请实施例在不同的机架组中机架数量相同的情况下,确定不同机架组中的数据传输路径,机架组中包括多条数据传输路径,确定数据传输时长最小的数据传输路径为机架组的数据传输路径。接着,对比不同机架组的数据传输路径的数据传输时长,从而确定数据传输时长最小的数据传输路径,数据传输时长最小的数据传输路径对应的机架组为目标机架组,由此,目标机架组中的帮助节点进行数据块修复,可以节省数据块修复的时间。
接下来,基于上文所描述的数据修复方法,对本申请实施例提供的另一种数据修复方法进行说明。可以理解的是,该方法是上文所描述的数据修复方法的另一种表达方式,两者是相结合的。该方法是基于上文所描述的数据修复方法提出,该方法中的部分或全部内容可以参见上文对数据修复方法的描述。
图15是本申请实施例提供的一种数据修复的控制方法的流程示意图。本申请实施例提供的数据修复的控制方法可以应用于图2实施例中的分布是存储系统中的控制节点。控制节点可以由至少一个存储设备组成。如图15所示,本申请实施例提供的数据修复的控制方法包括下述步骤1301-S1505。
S1501,控制节点确定第一数据块的身份标识,第一数据块为待修复的数据块。
待修复的数据块为损坏或丢失的数据块。控制节点能够确定数据块是否需要修复。
在一些实施例中,控制节点能够控制存储节点进行自检,从而使得存储节点检测该存储节点中的数据块是否需要修复。示例性地,控制节点能够根据预设的时间周期控制存储节点检测存储节点中的数据块是否需要修复。例如,每隔12个小时,控制节点向存储节点发送检测控制指令,存储节点响应于检测控制指令进行自检。
在存储节点确定数据块需要修复的情况下,存储节点将待修复的数据块的身份标识发送给控制节点。
在另一些实施例中,客户端在访问数据时触发降级读,则分布式存储系统会启动数据块修复机制。在客户端访问数据时触发降级读的情况下,待修复的数据块所在的存储节点能够向控制节点发送待修复的数据块的身份标识。
S1502:根据第一数据块的身份标识,确定k+r-1个第二数据块各自的分布信息,分布信息用于指示数据块所在的机架以及数据块所在的存储节点,第一数据块和k+r-1个第二数据块为对同一个数据编码后得到的数据块,k和r为正整数。
第一数据块和第二数据块是对同一个数据进行编码后得到的数据块。如图3所示,对数据进行纠删编码可以得到k+r个数据块。控制节点能够将同一数据编码后得到的k+r个数据块的身份标识进行关联存储,并确定每个数据块的分布信息。根据每个数据块的分布信息,将数据块发送至各个存储节点进行存储。
基于多个数据块的身份标识之间的关联关系,控制节点根据第一数据块的身份标识能够确定k+r-1个第二数据块的身份标识,进而获取到k+r-1个第二数据块的分布信息。具体过程可参见图8实施例中对S801-S804中的详细说明,在此不再具体说明。
S1503,控制节点根据k+r-1个第二数据块各自的分布信息,确定至少一个机架组,至少一个机架组中的每个机架组包括至少一个机架,机架组包括p个第二数据块,p为正整数且p大于或等于k。
修复第一数据块需要k个第二数据块。k个第二数据块分别位于不同的存储节点中。每个机架包括至少一个存储节点。
在一些实施例中,控制节点能够根据k+r-1个数据块各自的分布信息,确定每个机架包含的第二数据块的数量,根据每个机架包含的第二数据块的数量,确定至少一个机架组。
在另一些实施例中,控制节点能够确定请求节点的分布信息,即请求节点所在的机架。控制节点根据请求节点的分布信息和k+r-1个数据块的分布信息,确定至少一个机架组。如此结合请求节点的分布信息和k+r-1个数据块的分布信息,可以使请求节点和k+r-1个数据块中的部分数据块在同一个机架中,减少数据块修复过程中跨机架的数量,从而减少修复时间。
机架组中的机架数量越少,修复第一数据块的过程中跨机架的数量越少,第一数据块的修复时间越短。
控制节点选取机架组的条件为机架组中包括的第二数据块的数量大于或等于k。例如,机架组包括p个数据块,p大于k。符合条件的机架组至少有一个。
至少一个机架组中机架组的数量有多种情况,例如,至少一个机架组中仅包括一个机架组。或者,至少一个机架组中包括多个机架组,每个机架组中包含机架的数量不同。又或者,至少一个机架组中包括多个机架组,部分机架组中包含机架的数量相同。
S1504,控制节点根据每个机架组包含的机架的数量,从至少一个机架组中确定目标机架组。
至少一个机架组中机架组的数量有多种情况,不同情况确定目标机架组的方式不同。
在一些实施例中,至少一个机架组中仅包括一个机架组,则该机架组即为目标机架组。
在另一些实施例中,至少一个机架组中包括多个机架组,且每个机架组中包含机架的数量是不同的,将包含机架的数量最少的机架组作为目标机架组。
在又一些实施例中,至少一个机架组中包括多个机架组,且部分机架组中包含机架的数量相同,将包含机架的数量最少的机架组作为目标机架组。
确定目标机架组的具体说明可参见图8实施例中对S806的具体说明,在此不再详细赘述。
在又一些实施例中,至少一个机架组中包括多个机架组,且部分机架组中包含机架的数量相同。若部分机架组均为包含机架的数量最少的机架组,为了减少数据块修复的时间,控制节点能够根据不同机架组中数据传输路径的数据传输时长,确定目标机架组。
如此,综合考虑机架组包含机架的数量和机架组中数据传输路径的数据传输时长,既能避免由于不同的机架之间的带宽差异较大导致数据修复时间长的问题,又能减少数据修复过程中数据传输的时长,从而提高数据修复的效率。
具体地,每个机架组能够提供数据传输路径。例如,如图10所示,用于修复数据块的机架组包括机架2、机架5和机架6。数据传输路径可以是节点N1-5->节点N2-6->节点N3-7->节点N4-8->节点N1-17->节点N2-18->节点N4-20->节点N1-21->节点N3-23->节点N4-24->请求节点R。具体机架组中的数据传输路径的规划可参见图8对S807的具体说明,在此不再详细赘述。
控制节点能够计算每条数据传输路径的数据传输时长,并根据数据传输时长,从至少一个机架组中确定目标机架组。示例性地,控制节点将数据传输时长最小的数据传输路径对应的机架组作为目标机架组。具体可参见图12实施例中对S12011-S1203的说明,在此不再详细赘述。
S1505,控制节点向目标机架组中的k个第二数据块所在的存储节点发送控制指令,以使k个第二数据块各自所在的存储节点根据k个第二数据块修复第一数据块。
控制节点分别向目标机架组中的k个第二数据块所在的存储节点发送控制指令,以使存储节点在控制指令的控制下根据k个第二数据块修复第一数据块。其中,控制节点能够随机生成用于数据块修复的数据传输路径,并将该数据传输路径携带于控制指令中,以使k个第二数据块所在的存储节点按照数据传输路径进行数据传输。具体过程可参见图8实施例中对S807-S809的说明,在此不再详细赘述。
在一些实施例中,为了进一步降低数据修复的时长,控制节点能够将目标机架组提供的数据传输路径中数据传输时长最小的数据传输路径携带于控制指令中。数据传输路径的数据传输时长的计算方式可详见S1502中对数据传输时长的具体说明,在此不再详细赘述。
在一些实施例中,分布式存储系统可能存在多个数据块需要修复。控制节点能够并行控制数据块的修复。在这里,多个待修复的数据块为对不同的数据编码得到。
在本申请实施例中,通过基于机架组中包含的机架的数量确定目标机架组,降低数据修复过程中跨机架的数量,进而避免由于不同的机架之间的带宽差异较大导致数据修复时间长的问题,减少数据修复的时间。
基于图15所示的数据修复的控制方法,本申请实施例还提供了另一种数据修复的控制装置。
图16是本申请实施例提供的一种数据修复的控制装置的结构示意图。本申请实施例提供的数据修复的控制置可以应用于图2实施例中分布式存储系统中的控制节点。控制节点可以由至少一个存储设备组成。本申请实施例提供的一种数据修复的控制装置包括第一确定模块1601,第二确定模块1602,第三确定模块1603,第四确定模块1604,发送模块1605。
第一确定模块1601,用于确定第一数据块的身份标识,第一数据块为待修复的数据块;
第二确定模块1602,用于根据第一数据块的身份标识,确定k+r-1个第二数据块各自的分布信息,分布信息用于指示数据块所在的机架以及数据块所在的存储节点,第一数据块和k+r-1个第二数据块为对同一个数据编码后得到的数据块,k和r为正整数;
第三确定模块1603,用于根据k+r-1个第二数据块各自的分布信息,确定至少一个机架组,至少一个机架组中的每个机架组包括至少一个机架,机架组包括p个第二数据块,p为正整数且p大于或等于k;
第四确定模块1604,用于根据每个机架组包含的机架的数量,从至少一个机架组中确定目标机架组;
发送模块1605,用于向目标机架组中的k个第二数据块所在的存储节点发送控制指令,以使k个第二数据块各自所在的存储节点根据k个第二数据块修复第一数据块。
如此,本申请实施例通过第二数据块的分布信息,确定能够用于数据块修复的机架组,为了减少数据修复时间,根据每个机架组中包含的机架的数量,从至少一个机架组中选出目标机架组,从而尽量减少数据修复过程中跨机架的数量,减少数据修复的时间。
在一种可能的实现方式中,机架组有多个,且多个机架组包含的机架数量相同;
第四确定模块,用于确定每个机架组中的数据传输路径,数据传输路径为修复第一数据块过程中的数据传输路径;
计算每个机架组中数据传输路径的数据传输时长;
根据数据传输时长,从至少一个机架组中确定目标机架组。
如此,综合考虑机架组包含机架的数量和机架组中数据传输路径的数据传输时长,既能避免由于不同的机架之间的带宽差异较大导致数据修复时间长的问题,又能减少数据修复过程中数据传输的时长,从而提高数据修复的效率。
在一种可能的实现方式中,目标机架组中包含的机架的数量为至少一个机架组中各自包含的机架的数量最小的机架组。
如此,可以减少数据块的修复过程中数据传输过程中跨机架的数量,减少数据传输的时长,从而减少数据修复时长。
在一种可能的实现方式中,第三确定模块用于:
根据k+r-1个数据块各自的分布信息,确定每个机架包含的第二数据块的数量;
根据每个机架包含的第二数据块的数量,确定至少一个机架组。
如此,同一机架组中用于数据块修复的机架的数量越多,数据修复过程中跨机架的数量越少,减少数据传输的时长,从而减少数据修复时长。
在一种可能的实现方式中,控制指令包括用于修复第一数据块的数据传输路径和k个第二数据块各自所在的存储节点的修复系数,其中,用于修复第一数据块的数据传输路径中的传输节点包括k个第二数据块各自所在的存储节点。
在一种可能的实现方式中,用于修复第一数据块的数据传输路径为,目标机架组提供的数据传输路径的数据传输时长最小的数据传输路径。
如此,可以减少数据传输过程中的时长,从而减少数据修复时长。
在一种可能的实现方式中,装置还包括:
控制模块,用于控制存储节点检测存储节点中的数据块是否需要修复。
在一种可能的实现方式中,控制模块,用于按照预设的时间周期控制存储节点检测存储节点中的数据块是否需要修复。
在一种可能的实现方式中,装置还包括:
第五确定模块,用于确定请求节点的分布信息,请求节点的分布信息用于指示请求节点所在的机架,请求节点为用于修复第一数据块的存储节点中除k个第二数据块所在的存储节点之外的存储节点;
第四确定模块用于根据每个机架组包含的机架的数量和请求节点的分布信息,从至少一个机架组中确定目标机架组。
如此,结合请求节点的分布信息和k+r-1个数据块的分布信息,可以使请求节点和k+r-1个数据块中的部分数据块在同一个机架中,减少数据块修复过程中跨机架的数量,从而减少修复时间。
在一种可能的实现方式中,第一数据块有多个,多个第一数据块是由不同的数据编码得到。
如此,能够并行修复多个待修复的数据块,提高数据修复的效率。
附图16所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。附图16中上述各个模块既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现,也可以采用软件硬件相结合的方式来实现。
另外,本申请实施例还提供了一种计算设备。该计算设备可以是图1实施例中的存储设备或控制器。
图17示出了本申请实施例提供的计算设备的结构示意图。计算设备可以是具有计算资源和存储资源的设备,如服务器等。如图17所示,计算设备包括:处理器1701、存储器1702和通信接口1703。处理器1701、存储器1702和通信接口1703之间通过总线1710连接。存储器1702中包括操作系统和程序代码模块。
存储器1702可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器1702可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器1702可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器1702可在综合网关容灾设备的内部或外部。在特定实施例中,存储器1702是非易失性固态存储器。
存储器可包括只读存储器(ROM),随机存取存储器(RAM),磁盘存储介质设备,光存储介质设备,闪存设备,电气、光学或其他物理/有形的存储器存储设备。因此,通常,存储器包括一个或多个编码有包括计算机可执行指令的软件的有形(非暂态)计算机可读存储介质(例如,存储器设备),并且当该软件被执行(例如,由一个或多个处理器)时,其可操作来执行参考根据本申请中的方法所描述的操作。
处理器1701通过读取并执行存储器1702中存储的计算机程序指令,以实现上述实施例中的任意一种方法。
在一个示例中,电子设备还可包括通信接口1703和总线1710。其中,如图17所示,处理器1701、存储器1702、通信接口1703通过总线1710连接并完成相互间的通信。
通信接口1703,主要用于实现本申请实施例中各模块、装置、单元和/或设备之间的通信。
总线1710包括硬件、软件或两者,将电子设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线1710可包括一个或多个总线。尽管本申请实施例描述和示出了特定的总线,但本申请考虑任何合适的总线或互连。
可以理解的是,本申请的实施例中的处理器可以是中央处理单元(centralprocessing unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件,硬件部件或者其任意组合。通用处理器可以是微处理器,也可以是任何常规的处理器。
本申请的实施例中的方法步骤可以通过硬件的方式来实现,也可以由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(random access memory,RAM)、闪存、只读存储器(read-only memory,ROM)、可编程只读存储器(programmable rom,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
可以理解的是,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。

Claims (25)

1.一种数据修复的控制方法,其特征在于,包括:
确定第一数据块的身份标识,所述第一数据块为待修复的数据块;
根据所述第一数据块的身份标识,确定k+r-1个第二数据块各自的分布信息,所述分布信息用于指示数据块所在的机架以及数据块所在的存储节点,所述第一数据块和所述k+r-1个第二数据块为对同一个数据编码后得到的数据块,k和r为正整数;
根据所述k+r-1个第二数据块各自的分布信息,确定至少一个机架组,所述至少一个机架组中的每个机架组包括至少一个机架,所述机架组包括p个第二数据块,p为正整数且p大于或等于k;
根据所述每个机架组包含的机架的数量,从所述至少一个机架组中确定目标机架组;
向目标机架组中的k个第二数据块所在的存储节点发送控制指令,以使所述k个第二数据块各自所在的存储节点根据所述k个第二数据块修复所述第一数据块。
2.根据权利要求1所述的方法,其特征在于,机架组有多个,且多个所述机架组包含的机架数量相同;
所述根据所述每个机架组包含的机架的数量,从所述至少一个机架组中确定目标机架组,包括:
确定所述每个机架组中的数据传输路径,数据传输路径为修复所述第一数据块过程中的数据传输路径;
计算所述每个机架组中数据传输路径的数据传输时长;
根据所述数据传输时长,从所述至少一个机架组中确定所述目标机架组。
3.根据权利要求2所述的方法,其特征在于,所述目标机架组中包含的机架的数量为所述至少一个机架组中各自包含的机架的数量最小的机架组。
4.根据权利要求1或2所述的方法,其特征在于,根据根据所述k+r-1个第二数据块各自的分布信息,确定至少一个机架组,包括:
根据所述k+r-1个数据块各自的分布信息,确定每个机架包含的第二数据块的数量;
根据所述每个机架包含的第二数据块的数量,确定所述至少一个机架组。
5.根据权利要求1所述的方法,其特征在于,所述控制指令包括用于修复所述第一数据块的数据传输路径和所述k个第二数据块各自所在的存储节点的修复系数,其中,用于修复所述第一数据块的数据传输路径中的传输节点包括所述k个第二数据块各自所在的存储节点。
6.根据权利要求5所述的方法,其特征在于,所述用于修复所述第一数据块的数据传输路径为,所述目标机架组提供的数据传输路径的数据传输时长最小的数据传输路径。
7.根据权利要求1-6所述的方法,其特征在于,所述方法还包括:
控制存储节点检测所述存储节点中的数据块是否需要修复。
8.根据权利要求7所述的方法,其特征在于,所述控制存储节点检测所述存储节点中的数据块是否需要修复,包括:
按照预设的时间周期控制存储节点检测所述存储节点中的数据块是否需要修复。
9.根据权利要求1-6任一项所述的方法,其特征在于,所述方法还包括:
确定请求节点的分布信息,请求节点的分布信息用于指示所述请求节点所在的机架,所述请求节点为用于修复所述第一数据块的存储节点中除k个第二数据块所在的存储节点之外的存储节点;
所述根据所述k+r-1个第二数据块各自的分布信息,确定至少一个机架组,包括:
根据所述k+r-1个第二数据块各自的分布信息和所述请求节点的分布信息,从所述至少一个机架组中确定目标机架组。
10.根据权利要求1-6任一项所述的方法,其特征在于,所述第一数据块有多个,多个所述第一数据块是由不同的数据编码得到。
11.一种数据修复的控制装置,其特征在于,包括:
第一确定模块,用于确定第一数据块的身份标识,所述第一数据块为待修复的数据块;
第二确定模块,用于根据所述第一数据块的身份标识,确定k+r-1个第二数据块各自的分布信息,所述分布信息用于指示数据块所在的机架以及数据块所在的存储节点,所述第一数据块和所述k+r-1个第二数据块为对同一个数据编码后得到的数据块,k和r为正整数;
第三确定模块,用于根据所述k+r-1个第二数据块各自的分布信息,确定至少一个机架组,所述至少一个机架组中的每个机架组包括至少一个机架,所述机架组包括p个第二数据块,p为正整数且p大于或等于k;
第四确定模块,用于根据所述每个机架组包含的机架的数量,从所述至少一个机架组中确定目标机架组;
发送模块,用于向目标机架组中的k个第二数据块所在的存储节点发送控制指令,以使所述k个第二数据块各自所在的存储节点根据所述k个第二数据块修复所述第一数据块。
12.根据权利要求11所述的装置,其特征在于,机架组有多个,且多个所述机架组包含的机架数量相同;
第四确定模块,用于确定所述每个机架组中的数据传输路径,数据传输路径为修复所述第一数据块过程中的数据传输路径;
计算所述每个机架组中数据传输路径的数据传输时长;
根据所述数据传输时长,从所述至少一个机架组中确定所述目标机架组。
13.根据权利要求12所述的装置,其特征在于,所述目标机架组中包含的机架的数量为所述至少一个机架组中各自包含的机架的数量最小的机架组。
14.根据权利要求11或12所述的装置,其特征在于,所述第三确定模块用于:
根据所述k+r-1个数据块各自的分布信息,确定每个机架包含的第二数据块的数量;
根据所述每个机架包含的第二数据块的数量,确定所述至少一个机架组。
15.根据权利要求11所述的装置,其特征在于,所述控制指令包括用于修复所述第一数据块的数据传输路径和所述k个第二数据块各自所在的存储节点的修复系数,其中,用于修复所述第一数据块的数据传输路径中的传输节点包括所述k个第二数据块各自所在的存储节点。
16.根据权利要求15所述的装置,其特征在于,所述用于修复所述第一数据块的数据传输路径为,所述目标机架组提供的数据传输路径的数据传输时长最小的数据传输路径。
17.根据权利要求11-16所述的装置,其特征在于,所述装置还包括:
控制模块,用于控制存储节点检测所述存储节点中的数据块是否需要修复。
18.根据权利要求17所述的装置,其特征在于,所述控制模块,用于按照预设的时间周期控制存储节点检测所述存储节点中的数据块是否需要修复。
19.根据权利要求11-16所述的装置,其特征在于,所述装置还包括:
第五确定模块,用于确定请求节点的分布信息,请求节点的分布信息用于指示所述请求节点所在的机架,所述请求节点为用于修复所述第一数据块的存储节点中除k个第二数据块所在的存储节点之外的存储节点;
所述第四确定模块用于根据所述每个机架组包含的机架的数量和所述请求节点的分布信息,从所述至少一个机架组中确定目标机架组。
20.根据权利要求11-16任一项所述的装置,其特征在于,所述第一数据块有多个。
21.一种分布式存储系统,其特征在于,所述系统包括:
控制节点,用于执行如权利要求1-10任一项所述的数据修复的控制方法;
多个存储节点,用于在所述控制节点的控制下进行数据修复。
22.一种数据修复的控制装置,其特征在于,包括:
至少一个存储器,用于存储程序;
至少一个处理器,用于执行所述存储器存储的程序,当所述存储器存储的程序被执行时,所述处理器用于执行如权利要求1-10任一所述的方法。
23.一种数据修复的控制装置,其特征在于,所述装置运行计算机程序指令,以执行如权利要求1-10任一所述的方法。
24.一种计算机存储介质,所述计算机存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行如权利要求1-10任一所述的方法。
25.一种包含指令的计算机程序产品,当所述指令在计算机上运行时,使得所述计算机执行如权利要求1-10任一所述的方法。
CN202211045297.4A 2022-08-30 2022-08-30 数据修复的控制方法、装置、设备及存储介质 Pending CN117667470A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211045297.4A CN117667470A (zh) 2022-08-30 2022-08-30 数据修复的控制方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211045297.4A CN117667470A (zh) 2022-08-30 2022-08-30 数据修复的控制方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN117667470A true CN117667470A (zh) 2024-03-08

Family

ID=90066767

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211045297.4A Pending CN117667470A (zh) 2022-08-30 2022-08-30 数据修复的控制方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN117667470A (zh)

Similar Documents

Publication Publication Date Title
US10877860B2 (en) Copying data from mirrored storage to auxiliary storage arrays co-located with primary storage arrays
CN108733314B (zh) 用于独立冗余阵列(raid)重建的方法、设备和计算机可读存储介质
US8972478B1 (en) Using append only log format in data storage cluster with distributed zones for determining parity of reliability groups
WO2018040589A1 (zh) 一种基于分布式存储系统的数据处理方法及存储设备
WO2021115021A1 (zh) 数据处理方法、装置、终端设备及计算机可读存储介质
US9952940B2 (en) Method of operating a shared nothing cluster system
CN113407122A (zh) Raid重建的方法和设备
CN109582213B (zh) 数据重构方法及装置、数据存储系统
US11210003B2 (en) Method, device and computer program product for restoring data based on replacing child node identifiers with parent node identifier
CN109726036B (zh) 一种存储系统中的数据重构方法和装置
US10169085B2 (en) Distributed computing of a task utilizing a copy of an original file stored on a recovery site and based on file modification times
US11385823B2 (en) Method, electronic device and computer program product for rebuilding disk array
WO2020035086A3 (en) Data security of shared blockchain data storage based on error correction code
US8560579B1 (en) Systems and methods for managing a network by generating files in a virtual file system
CN112835885B (zh) 一种分布式表格存储的处理方法、装置及系统
US20220253356A1 (en) Redundant data calculation method and apparatus
US9400620B2 (en) Storage system
CN114936087B (zh) 一种嵌入向量预取的方法、装置、系统及相关设备
CN111046004B (zh) 一种数据文件存储方法、装置、设备及存储介质
Shuai et al. Performance models of access latency in cloud storage systems
CN117667470A (zh) 数据修复的控制方法、装置、设备及存储介质
CN113448770A (zh) 用于恢复数据的方法、电子设备和计算机程序产品
CN111104047B (zh) 管理冗余磁盘阵列的方法、设备和计算机可读存储介质
CN110121874B (zh) 一种存储器数据替换方法、服务器节点和数据存储系统
CN115756955A (zh) 一种数据备份、数据恢复的方法、装置及计算机设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication