CN110597655B - 迁移和基于纠删码的重构相耦合快速预知修复方法及装置 - Google Patents

迁移和基于纠删码的重构相耦合快速预知修复方法及装置 Download PDF

Info

Publication number
CN110597655B
CN110597655B CN201910562015.XA CN201910562015A CN110597655B CN 110597655 B CN110597655 B CN 110597655B CN 201910562015 A CN201910562015 A CN 201910562015A CN 110597655 B CN110597655 B CN 110597655B
Authority
CN
China
Prior art keywords
node
reconstruction
repair
blocks
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.)
Active
Application number
CN201910562015.XA
Other languages
English (en)
Other versions
CN110597655A (zh
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.)
Yunlianwang Technology Guangdong Co ltd
Original Assignee
Yunlianwang Technology Guangdong 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 Yunlianwang Technology Guangdong Co ltd filed Critical Yunlianwang Technology Guangdong Co ltd
Priority to CN201910562015.XA priority Critical patent/CN110597655B/zh
Publication of CN110597655A publication Critical patent/CN110597655A/zh
Application granted granted Critical
Publication of CN110597655B publication Critical patent/CN110597655B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种迁移和基于纠删码的重构相耦合的快速预知修复方法,包括:采用节点失效预测算法监测节点状态;将即将失效节点上的块组织为多个重构集合;根据重构集合所包含的块数,确定迁移和基于纠删码的重构的耦合策略。根据上述实施例的教导,本发明能够结合失效预测,从而实现迁移和基于纠删码的重构相耦合的快速预知修复,从而不仅加快数据修复,同时相比基于纠删码的重构可减少修复所需的I/O操作。本发明还公开了一种迁移和基于纠删码的重构相耦合的快速预知修复装置。

Description

迁移和基于纠删码的重构相耦合快速预知修复方法及装置
技术领域
本发明涉及存储系统数据容错领域,尤其涉及一种迁移和基于纠删码的重构相耦合快速预知修复方法及装置。
背景技术
在存储系统数据容错领域,已有技术点主要为基于失效预测的主动修复和基于纠删码的被动修复。下面将依次介绍相关技术特点及其缺陷。
1)基于失效预测的主动修复。
主动修复需要精准识别哪些设备即将失效,并在设备失效前进行数据修复操作,从而保障数据可靠。现有的商用存储设备均内置了自身监测分析和预警固件(即SMART,英文全称为Self-Monitoring,Analysis and Reporting Technology),其可监测并报告一些与设备可靠性相关的属性值(例如重新分配扇区数量、设备使用时间以及当前温度等),因此现有研究主要基于SMART属性值设计高精度和低误报率的设备失效预测模型,以及基于模型预测结果将数据从可靠性低的存储设备迁移至可靠性高的存储设备中。
已有基于失效预测的主动修复技术主要关注失效预测模型的建立,或是考虑采用迁移的方式进行主动修复,因此数据修复性能将严重受限于即将失效设备的I/O带宽,从而需要较为冗长的修复时间。
2)基于纠删码的被动修复。
纠删码是一种具有高容错和高存储效率特点的编码技术。下文以典型的Reed-Solomon码(简称为RS码)为例简单介绍纠删码的工作流程和特性。RS码其一般由两个参数确定,分别称为k和n,其中k<n。为简单起见,可将由n和k设置的RS码称为RS(n,k)。在编码过程中,RS(n,k)以k个数据块为输入,并通过伽罗瓦域运算从而得到n个编码块(codedchunk)。这n个在编码过程中相关的编码块共同组成了一个“条带”(stripe)。当出现数据失效,RS码可基于任意k个剩余的编码块,进行解码操作从而重构失效数据。由此可见,RS码仅需额外存储n-k个块即可容忍任意n-k个块失效。因此,将一个条带的数据分散存储于n个存储设备之上(其中每个存储设备只存储该条带的一个块),则RS(n,k)可容忍任意n-k个存储设备失效。RS码虽显著减少了数据容错所需的额外存储开销,其却放大了修复所需的I/O操作。当出现一个块失效,RS(n,k)需要取回k个块以进行数据重构,从而引发了k倍于失效数据大小的存储和网络I/O。为了减少基于纠删码的重构所导致的I/O操作,一些研究工作分别在理论层面设计具有更低修复I/O的纠删码(包括再生码和局部重构码),和在系统层面研究如何充分利用系统空闲资源以加快基于纠删码的重构操作。
已有基于纠删码的被动修复技术(即数据失效后方启动基于纠删码的重构操作),相比于主动修复,极易放大修复所需的I/O操作。
可见,上述两个技术点均不能实现快速数据修复,并最终保障数据存储可靠。
发明内容
本发明实施例的目的是提供一种迁移和基于纠删码的重构相耦合快速预知修复方法及装置,能够结合失效预测,从而实现迁移和基于纠删码的重构相耦合的快速预知修复,从而不仅加快数据修复,同时相比基于纠删码的重构可减少修复所需的I/O操作。
为实现上述目的,本发明实施例提供了一种迁移和基于纠删码的重构相耦合快速预知修复方法,包括:
采用节点失效预测算法监测节点状态;
将即将失效节点上的块组织为多个重构集合;
根据重构集合所包含的块数,确定迁移和基于纠删码的重构的耦合策略。
进一步地,所述根据重构集合所包含的块数,确定迁移和基于纠删码的重构的耦合策略,包括:
迭代地从重构集合中选择每轮进行迁移的块和利用纠删码进行重构的块;其中,对块数最多的重构集合采用纠删码进行重构,与此同时,对块数最少的重构集合采用迁移。
进一步地,所述根据重构集合所包含的块数,确定迁移和基于纠删码的重构的耦合策略,还包括:
在确定每一轮的被修复块及其修复方法、存储被修复块的节点ID、基于纠删码重构所需联系的健康节点ID和所需解码参数等信息之后,为每个参与修复的节点生成一个修复命令。
进一步地,如果该参与修复的节点需要发送数据以参与基于纠删码的重构,则该修复命令将包含所需发送的块ID、解码参数、以及此次发送的目标节点IP地址等信息;
如果该参与修复的节点需要直接迁移数据,则该修复命令将包括所需发送的块ID,以及此次发送的目标节点IP地址等信息;
如果该参与修复的节点需要接收数据,则该修复命令将包含所需接收的块数以及被修复块的ID。
进一步地,所述将即将失效节点上的块组织为多个重构集合,包括:
获取系统的元数据信息,主要包括每个条带所有块的存储节点ID,以及每个块在所属条带内的逻辑块号,所述逻辑块号用于确定基于纠删码的重构时所需采用的解码参数;
确定存储于即将失效节点上的所有被修复块及其所归属的条带;
将被修复块组织为多个重构集合,以及确定每个被修复块在利用纠删码进行重构时所选择读取数据的健康节点ID。
进一步地,所述采用节点失效预测算法监测节点状态,包括:
监测并收集SMART模块所返回的各属性值;
以相关属性值为输入,采用节点失效预测算法计算节点失效概率,若节点失效概率超过给定阈值,则判断该节点即将失效。
本发明实施例还提供了一种迁移和基于纠删码的重构相耦合快速预知修复装置,包括:
节点状态监测单元,用于采用节点失效预测算法监测节点状态;
重构集合确定单元,用于将即将失效节点上的块组织为多个重构集合;
数据修复单元,用于根据重构集合所包含的块数,确定迁移和基于纠删码的重构的耦合策略。
本发明实施例还提供了一种迁移和基于纠删码的重构相耦合快速预知修复装置,包括协调器和修复代理;
所述协调器,包括:
重构集合确定模块,用于将即将失效节点上的块组织为多个重构集合;
第一数据修复模块,用于根据重构集合所包含的块数,确定迁移和基于纠删码的重构的耦合策略;
第一交互模块,用于进行与参与修复节点之间的命令交互,即将修复命令发给参与修复的节点,并监听每个节点的回应,当收到所有参与修复节点的回应之后,将会发送回应给所述第一数据修复模块,以进行下一轮的数据修复;
所述修复代理,包括:
第二交互模块,用于进行与所述协调器之间的命令交互,即在收到所述协调器发送的修复命令之后,将解析该修复命令,并获知修复所需的信息,且在修复完成之后,发送回应给所述协调器,以进行下一轮的数据修复;
第二数据修复模块,用于进行数据修复相关操作。
基于上述实施例的教导,首先基于已有的节点失效预测技术预知失效节点,利用即将失效节点的I/O带宽进行数据迁移,与此同时利用集群空闲I/O带宽进行基于纠删码的数据重构,从而实现快速数据修复,并最终保障数据存储可靠。
附图说明
图1是本发明实施例提供的一种迁移和基于纠删码的重构相耦合快速预知修复方法的流程示意图;
图2是本发明实施例提供的分布式存储系统采用RS(5,3)后的数据布局示意图;
图3是本发明实施例提供的通过二分图最大匹配寻找纠删码重构中用以数据读取的健康节点示意图;
图4是本发明实施例提供的通过二分图最大匹配寻找用以存储被修复块的健康节点示意图;
图5是本发明实施例提供的基于重构集合调度迁移和纠删码重构的策略示意图;
图6是本发明实施例提供的本发明集成于HDFS示意图;
图7是本发明实施例提供的不同包长度下的修复性能示意图;
图8是本发明实施例提供的不同块长度下的修复性能示意图;
图9是本发明实施例提供的不同纠删码参数下的修复性能示意图;
图10是本发明实施例提供的不同网络带宽下的修复性能示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的一种迁移和基于纠删码的重构相耦合快速预知修复方法及装置,能够结合失效预测,从而实现迁移和基于纠删码的重构相耦合的快速预知修复,从而不仅加快数据修复,同时相比基于纠删码的重构可减少修复所需的I/O操作。
请参阅图1-10。
本发明实施例1:
如图1所示,一种迁移和基于纠删码的重构相耦合快速预知修复方法,包括:
S1.采用节点失效预测算法监测节点状态;
S2.将即将失效节点上的块组织为多个重构集合;
S3.根据重构集合所包含的块数,确定迁移和基于纠删码的重构的耦合策略。
基于纠删码的重构方法修复一个块时需从其他k个健康节点读取k个块。而在现实存储系统部署中,为了降低修复所需网络开销,k值的选取一般较小(例如在Facebook F4存储系统中,k值为10)。
现有大规模存储系统通常构建于数百甚至数千个存储服务器(简称为“节点”)之上,因此,在本实施例中,为了实现快速修复,当预知一个节点即将失效时,系统可根据当前存储系统的数据布局,将即将失效节点上的被修复块组织为多个“重构集合”(其中一个块仅可被放入一个重构集合中),从而在修复同属于一个重构集合的所有块时,系统仅需从每个健康节点最多读取一个块的数据以进行数据重构;换言之,当修复一个重构集合的所有块时,所需读取数据将尽可能分散至整个集群,从而实现充分利用系统空闲I/O带宽的目的。在确定多个重构集合后,系统再根据重构集合所包含的块数,确定迁移和基于纠删码的重构的耦合策略,从而最终缩短节点修复时间。图2给出了分布式存储系统采用RS(5,3)后的数据布局示意图,如图2所示,将3个条带的数据存储于10个节点(包括1个即将失效节点和6个健康节点)。
在具体实施例当中,主要考虑两种修复场景,分别为分散修复(ScatteredRepair)和热备修复(Hot-Standby Repair)。其中,分散修复是将修复后的块存储于系统已有的健康节点中;而在热备修复中,系统会保留数个热备节点,热备节点在平时系统运行中并不参与前端服务,而当出现节点失效,热备节点会承接失效节点所负责的前端服务,从而保证系统平稳运行,因此在热备修复中,修复后的数据将会被存储于热备节点之中。分散修复和热备修复都将维持纠删码所赋予的、容忍任意n-k个节点失效的容错能力。
本发明实施例2:
在本发明实施例1的基础上,所述采用节点失效预测算法监测节点状态,包括:
步骤1.1.监测并收集SMART模块所返回的各属性值;
步骤1.2.以相关属性值为输入,采用节点失效预测算法计算节点失效概率,若节点失效概率超过给定阈值,则判断该节点即将失效。
本发明实施例3:
在本发明实施例1或本发明实施例2的基础上,所述将即将失效节点上的块组织为多个重构集合,包括:
获取系统的元数据信息,主要包括每个条带所有块的存储节点I D,以及每个块在所属条带内的逻辑块号,所述逻辑块号用于确定基于纠删码的重构时所需采用的解码参数;
确定存储于即将失效节点上的所有被修复块及其所归属的条带;
将被修复块组织为多个重构集合,以及确定每个被修复块在利用纠删码进行重构时所选择读取数据的健康节点ID。
在具体的实施例当中,所述将即将失效节点上的块组织为多个重构集合,具体步骤包括:
步骤2.1.令
Figure GDA0004082793460000041
表示即将失效节点中未被组织入重构集合的块集合,其中
Figure GDA0004082793460000042
的初始值为即将失效节点上的所有块所组成的集合。
步骤2.2.确定一个重构集合,具体步骤包括:
步骤2.2.1.初始化一个新的重构集合
Figure GDA0004082793460000043
为空集,并用
Figure GDA0004082793460000044
表示
Figure GDA0004082793460000045
中所包含的块数。令M表示为系统中所包含的节点个数,由于只有一个节点被判定为即将失效,我们称其他M-1个节点为“健康节点”。
步骤2.2.2.在
Figure GDA0004082793460000046
中遍历每个块Ci,并判定Ci是否可以被添加入
Figure GDA0004082793460000047
中,其主要方法为:如果可寻找到
Figure GDA0004082793460000048
个健康节点以读取
Figure GDA0004082793460000049
个块,从而通过纠删码重构
Figure GDA00040827934600000410
中的块,则Ci可被添加入
Figure GDA00040827934600000411
中。本发明将该判定过程以二分图描述,具体如下:构建一个二分图,其中左侧为M-1个节点顶点,表示为系统可用于数据读取的M-1个健康节点,而右侧为
Figure GDA00040827934600000412
个块顶点,表示为修复
Figure GDA00040827934600000413
所在条带修复所需读取的
Figure GDA00040827934600000414
个块。如果一个健康节点存储了被修复块所在条带的块,则将该健康节点所对应的节点顶点与该条带的k个块顶点相连。在建立二分图后,我们可确定该二分图下的一个最大匹配,并计算该匹配的边数。如果该最大匹配具有
Figure GDA00040827934600000415
条边,意味着可以确定
Figure GDA00040827934600000416
个健康节点读取
Figure GDA00040827934600000417
个块用以修复集合
Figure GDA00040827934600000418
所包含的
Figure GDA00040827934600000419
个块,则将Ci添加至
Figure GDA00040827934600000420
中,并将Ci从
Figure GDA00040827934600000421
中剔除。在遍历
Figure GDA00040827934600000422
中的每个块后,可得到一个初始的重构集合。例如图3给出了一个利用二分图判定基于纠删码的重构中用以数据读取的健康节点示意图,该图是基于图3的数据布局而得。在该图中,由于图3中节点N1存储了条带S1的块,因此在图3左图中N1与条带S1的三个顶点相连(k=3),最终图3右图给出了一个最大匹配,其中N1,N2,N3将被分别读取数据用以重构条带S1的数据。
步骤2.2.3.进一步优化初始重构集合,尽可能使之包含更多的块,具体方法如下:对于
Figure GDA00040827934600000423
Figure GDA00040827934600000424
生成一个临时重构集合
Figure GDA00040827934600000425
即将中的Ci替换为Cj;与此同时,生成一个空集
Figure GDA00040827934600000426
用以记录此次替换所带来的收益。在替换之后,我们再依次遍历
Figure GDA00040827934600000427
中的每个块Cl,并依据步骤2.2.2构造二分图以判定Cl是否可添加入若可添加
Figure GDA00040827934600000428
则将Cl记录于
Figure GDA00040827934600000429
并更新
Figure GDA00040827934600000430
通过遍历所有可能的替换情况(即对任意
Figure GDA00040827934600000431
Figure GDA00040827934600000432
尝试所有临时重构集合
Figure GDA00040827934600000433
),我们可以得到收益最大的替换
Figure GDA00040827934600000434
其中
Figure GDA00040827934600000435
并根据该替换以及该替换的收益更新优化后的重构集合,即
Figure GDA00040827934600000436
并相应更新
Figure GDA00040827934600000437
Figure GDA00040827934600000438
该初始重构集合将不断优化,直至
Figure GDA00040827934600000439
(即任何替换都无法令
Figure GDA00040827934600000440
继续扩张)。
步骤2.3.重复步骤2.2,直至
Figure GDA00040827934600000441
为空集,据此可以得到一系列重构集合,以
Figure GDA00040827934600000442
表示,其中d表示为所确定重构集合的个数。
本发明实施例4:
在本发明实施例1或本发明实施例3的基础上,所述根据重构集合所包含的块数,确定迁移和基于纠删码的重构的耦合策略,包括:
迭代地从重构集合中选择每轮进行迁移的块和利用纠删码进行重构的块;其中,对块数最多的重构集合采用纠删码进行重构,与此同时,对块数最少的重构集合采用迁移。
所述根据重构集合所包含的块数,确定迁移和基于纠删码的重构的耦合策略,还包括:
在确定每一轮的被修复块及其修复方法、存储被修复块的节点ID、基于纠删码重构所需联系的健康节点ID和所需解码参数等信息之后,为每个参与修复的节点生成一个修复命令。
其中,如果该参与修复的节点需要发送数据以参与基于纠删码的重构,则该修复命令将包含所需发送的块ID、解码参数、以及此次发送的目标节点IP地址等信息;如果该参与修复的节点需要直接迁移数据,则该修复命令将包括所需发送的块ID,以及此次发送的目标节点IP地址等信息;如果该参与修复的节点需要接收数据,则该修复命令将包含所需接收的块数以及被修复块的ID。
在具体的实施例当中,确定迁移和基于纠删码的重构的耦合策略,具体步骤包括:
步骤3.1.将多个重构集合根据其所包含的块数降序排序。不失一般性,假设排序后的重构集合为
Figure GDA0004082793460000051
其中
Figure GDA0004082793460000052
步骤3.2.为了便于实施,数据的修复将分为多个轮次进行,因此需要分别确定每一轮修复中需要迁移的块集合和利用纠删码进行重构的块集合。本发明的思路是:现确定的多个重构集合具有不同的块数,而块数较多的重构集合具有更好的重构并行度(因为其可从更多的健康节点中同时读取数据),因此其更适宜于利用纠删码进行重构;而对于块数较少的重构集合,由于其重构并行度较差,因此更适宜于采用迁移。基于该思想,我们将分别使用两个标记来记录当前块数最多和最少的重构集合,并将块数最多的重构集合采用纠删码修复;与此同时确定需要迁移的块数,并不断地从块数最少的重构集合中选择块进行迁移。迁移和基于纠删码的重构将同时进行,从而提升修复并行度。该步骤具体方法如下:
步骤3.2.1.令l和u分别表示当前多个重构集合中包含块数最多和最少的重构集合序号。在初始阶段,l=1,u=d。
步骤3.2.2.通过模拟迁移过程,并根据系统存储带宽和网络带宽,计算得到迁移一个块所需时间。假设块大小为c,存储设备读写带宽为bd,网络带宽为bn。由于迁移过程需首先将数据从本地存储设备中读出(所需时间为c/bd),并将数据从即将失效节点传输至目标节点(所需时间为c/bn),最后写入至目标节点的存储设备(所需时间为c/bd),因此顺序迁移一个块(即读-传输-写是顺序进行)所需时间为:
Figure GDA0004082793460000053
需注意的是:上述过程是以顺序迁移为例进行简单介绍。当考虑将一个块切分为多个包进行流水线化迁移时(即读-传输-写是以包为单位进行流水线化迁移),需相应更新tm的计算公式。本发明亦覆盖了以包为单位的流水线化数据读取和传输所实现的迁移和基于纠删码的重构过程。
步骤3.2.3.通过模拟基于纠删码的重构过程,并根据系统存储带宽和网络带宽,计算得到重构一个块所需时间。假设块大小为c,存储设备读写带宽为bd,网络带宽为bn。由于分散修复和热备修复场景中的重构过程不同,因此需要分别考虑分散修复和热备修复场景下的数据重构时间。假设一个重构集合中的块数为G,由于在分散修复场景下,修复G个块可选择G·k个健康节点用以读取数据(即保证系统每个健康节点最多只读取和传输一个块,用以参与一个重构集合中所有块的重构),且数据的重构在G个不同的节点上进行,因此分散修复中重构一个重构集合中所有块的时间等于重构一个块的时间。在基于纠删码的重构中,修复一个块需从其他k个健康节点读取k个块。假设这k个健康节点同时进行数据读取操作,则读取时间为c/bd。这k个块将被传输至选定的健康节点进行数据重构操作,因此传输k个块所需时间为k·c/bn。在数据重构操作完成后,进行数据重构的节点需要将重构好的块写至本地存储设备,因此数据写入时间为c/bd。以上可得,分散修复场景下修复一个重构集合的G个块需费时
Figure GDA0004082793460000054
而在热备修复场景下,假设参与数据修复的热备节点个数为h,且h远小于G,因此热备节点的数据传输和数据写入将是瓶颈。在重构过程中,这h个热备节点需接收G·k·c大小的数据,并在重构操作完成后写入G·c大小的数据,因此在热备场景下重构G个块需费时
Figure GDA0004082793460000055
需要注意的是,为了简单起见以及便于说明,以上tr的计算依然是考虑顺序重构方式。本发明的思想亦覆盖了当块被切分为更小的包时所实现的流水化重构。
步骤3.2.4.根据重构集合大小确定需要迁移的块数。我们将重构集合Rl所包含的块使用纠删码进行重构,并利用Rl中所包含的块数(即
Figure GDA0004082793460000056
),根据步骤3.2.3的公式(即根据所考虑的修复场景,将所对应公式中的G替换为
Figure GDA0004082793460000057
),计算得到修复该重构集合所有块所需时间tr,并通过以下公式计算得到该轮修复所需要迁移的块数cm
Figure GDA0004082793460000061
其主要思想是尽量选择合适的cm,使得迁移所需时间和基于纠删码的重构所需时间相等。
步骤3.2.5.根据步骤3.2.4所得到的迁移块数cm,如前所述,我们将不断地从块数较少的重构集合中选择块进行迁移,因此需要考虑以下两种情况:1)如果
Figure GDA0004082793460000062
(即除了采用纠删码重构的重构集合剩下未被修复的块数不多于cm),则构建迁移块组合
Figure GDA0004082793460000063
2);反之,则尽可能地将块数最少的重构集合中的块进行迁移,具体方法为:寻找一个最大的x值(其中l<x≤u),从而满足
Figure GDA0004082793460000064
Figure GDA0004082793460000065
并从
Figure GDA0004082793460000066
中选取子集
Figure GDA0004082793460000067
从而满足
Figure GDA0004082793460000068
并构建迁移块组合
Figure GDA0004082793460000069
并更新l=l+1,u=x。
步骤3.2.6.利用纠删码修复重构集合
Figure GDA00040827934600000610
中的块,并迁移
Figure GDA00040827934600000611
中的块。对于分散修复,可通过以下方法确定存储被修复块的节点,具体方法为:构建一个二分图,其中左侧为M-1个节点顶点(用以表示M-1个可供选择的健康节点),右侧为
Figure GDA00040827934600000612
个被修复的条带顶点(用以表示被修复的
Figure GDA00040827934600000613
个块所属条带)。如果第i个健康节点在本次修复之前未存储第j个被修复条带的块,则将该健康节点所对应的节点顶点与该被修复条带所对应的条带顶点相连,因此最后可得到每个被修复条带所对应的条带顶点将与M-1-(n-1)=M-n个节点顶点相连(其中M-1表示系统所有的健康节点个数,而n-1表示存储该条带数据的健康节点个数)。因此如果
Figure GDA00040827934600000614
则可保证任意
Figure GDA00040827934600000615
个条带顶点的子集所连接的节点顶点个数为
Figure GDA00040827934600000616
因此可根据Hall定理得到,一定存在一个边数为
Figure GDA00040827934600000617
的最大匹配。根据确定的最大匹配,可为每个被修复条带确定一个节点,用以接收数据,进行数据修复,并将被修复块写入该节点本地存储。而对于热备修复,则可将被修复块均匀地分布于热备节点中,而不需进行二分图匹配计算。例如图4给出了利用二分图进行判定存储被修复块的健康节点示意图(其中
Figure GDA00040827934600000618
),该图所遵循的数据分布如图2所示。例如图2中的节点N1在修复之前未存储条带S2和S3的数据,因此图4的左图将N1与S2和S3相关的条带顶点相连;图4右图给出了一个最大匹配,表示了存储3个被修复块的健康节点选择。
步骤3.2.7.重复步骤3.2.1至3.2.6直至所有重构集合内的块都被成功修复。例如图5给出了对于给定的9个重构集合及其包含块数,并确定每一轮迁移和基于纠删码的重构的修复策略。
基于上述实施例的教导,本发明提出的一种迁移和基于纠删码的重构相耦合快速预知修复方法,可用于分布式存储系统以快速修复即将失效节点数据,通过利用即将失效节点的带宽用以迁移数据(从而相比于完全采用纠删码进行数据重构,可显著减少所需网络开销),并与此同时充分利用存储系统闲置网络资源以进行基于纠删码的重构(从而将修复所需网络开销均衡至整个存储系统)。通过有效耦合和调度迁移和基于纠删码的重构,本发明可最小化预知修复所需的修复时间,并提升系统整体可靠性。除此之外,本发明具有较好的普适性,其可应用于当前所广泛采用的、基于线性计算的纠删码,包括RS码、再生码和局部重构码。
本发明实施例5:
本实施例提供了一种迁移和基于纠删码的重构相耦合快速预知修复装置,包括:
节点状态监测单元,用于采用节点失效预测算法监测节点状态;
重构集合确定单元,用于将即将失效节点上的块组织为多个重构集合;
数据修复单元,用于根据重构集合所包含的块数,确定迁移和基于纠删码的重构的耦合策略。
基于纠删码的重构方法修复一个块时需从其他k个健康节点读取k个块。而在现实存储系统部署中,为了降低修复所需网络开销,k值的选取一般较小(例如在Facebook F4存储系统中,k值为10)。
现有大规模存储系统通常构建于数百甚至数千个存储服务器(简称为“节点”)之上,因此,在本实施例中,为了实现快速修复,当预知一个节点即将失效时,系统可根据当前存储系统的数据布局,将即将失效节点上的被修复块组织为多个“重构集合”(其中一个块仅可被放入一个重构集合中),从而在修复同属于一个重构集合的所有块时,系统仅需从每个健康节点最多读取一个块的数据以进行数据重构;换言之,当修复一个重构集合的所有块时,所需读取数据将尽可能分散至整个集群,从而实现充分利用系统空闲I/O带宽的目的。在确定多个重构集合后,系统再根据重构集合所包含的块数,确定迁移和基于纠删码的重构的耦合策略,从而最终缩短节点修复时间。图2给出了分布式存储系统采用RS(5,3)后的数据布局示意图,如图2所示,将3个条带的数据存储于10个节点(包括1个即将失效节点和6个健康节点)。
在具体实施例当中,主要考虑两种修复场景,分别为分散修复(ScatteredRepair)和热备修复(Hot-Standby Repair)。其中,分散修复是将修复后的块存储于系统已有的健康节点中;而在热备修复中,系统会保留数个热备节点,热备节点在平时系统运行中并不参与前端服务,而当出现节点失效,热备节点会承接失效节点所负责的前端服务,从而保证系统平稳运行,因此在热备修复中,修复后的数据将会被存储于热备节点之中。分散修复和热备修复都将维持纠删码所赋予的、容忍任意n-k个节点失效的容错能力。
所述节点状态监测单元,具体用于监测并收集SMART模块所返回的各属性值;以相关属性值为输入,采用节点失效预测算法计算节点失效概率,若节点失效概率超过给定阈值,则判断该节点即将失效。
在一优选实施例中,所述重构集合确定单元,具体用于获取系统的元数据信息,主要包括每个条带所有块的存储节点ID,以及每个块在所属条带内的逻辑块号,所述逻辑块号用于确定基于纠删码的重构时所需采用的解码参数;确定存储于即将失效节点上的所有被修复块及其所归属的条带;将被修复块组织为多个重构集合,以及确定每个被修复块在利用纠删码进行重构时所选择读取数据的健康节点ID。
在具体的实施例当中,所述将即将失效节点上的块组织为多个重构集合,具体步骤包括:
步骤2.1.令
Figure GDA0004082793460000071
表示即将失效节点中未被组织入重构集合的块集合,其中
Figure GDA0004082793460000072
的初始值为即将失效节点上的所有块所组成的集合。
步骤2.2.确定一个重构集合,具体步骤包括:
步骤2.2.1.初始化一个新的重构集合
Figure GDA0004082793460000073
为空集,并用
Figure GDA0004082793460000074
表示
Figure GDA0004082793460000075
中所包含的块数。令M表示为系统中所包含的节点个数,由于只有一个节点被判定为即将失效,我们称其他M-1个节点为“健康节点”。
步骤2.2.2.在
Figure GDA0004082793460000076
中遍历每个块Ci,并判定Ci是否可以被添加入
Figure GDA0004082793460000077
中,其主要方法为:如果可寻找到
Figure GDA0004082793460000078
个健康节点以读取
Figure GDA0004082793460000079
个块,从而通过纠删码重构
Figure GDA00040827934600000710
中的块,则Ci可被添加入
Figure GDA00040827934600000711
中。本发明将该判定过程以二分图描述,具体如下:构建一个二分图,其中左侧为M-1个节点顶点,表示为系统可用于数据读取的M-1个健康节点,而右侧为
Figure GDA00040827934600000712
个块顶点,表示为修复
Figure GDA00040827934600000713
所在条带修复所需读取的
Figure GDA00040827934600000714
个块。如果一个健康节点存储了被修复块所在条带的块,则将该健康节点所对应的节点顶点与该条带的k个块顶点相连。在建立二分图后,我们可确定该二分图下的一个最大匹配,并计算该匹配的边数。如果该最大匹配具有
Figure GDA00040827934600000715
条边,意味着可以确定
Figure GDA00040827934600000716
个健康节点读取
Figure GDA00040827934600000717
个块用以修复集合
Figure GDA00040827934600000718
所包含的
Figure GDA00040827934600000719
个块,则将Ci添加至
Figure GDA00040827934600000720
中,并将Ci从中剔除。在遍历
Figure GDA00040827934600000721
中的每个块后,可得到一个初始的重构集合。例如图3给出了一个利用二分图判定基于纠删码的重构中用以数据读取的健康节点示意图,该图是基于图1的数据布局而得。在该图中,由于图3中节点N1存储了条带S1的块,因此在图3左图中N1与条带S1的三个顶点相连(k=3),最终图3右图给出了一个最大匹配,其中N1,N2,N3将被分别读取数据用以重构条带S1的数据。
步骤2.2.3.进一步优化初始重构集合,尽可能使之包含更多的块,具体方法如下:对于
Figure GDA00040827934600000722
Figure GDA00040827934600000723
生成一个临时重构集合
Figure GDA00040827934600000724
即将中的Ci替换为Cj;与此同时,生成一个空集
Figure GDA00040827934600000725
用以记录此次替换所带来的收益。在替换之后,我们再依次遍历
Figure GDA00040827934600000726
中的每个块Cl,并依据步骤2.2.2构造二分图以判定Cl是否可添加入
Figure GDA00040827934600000727
若可添加,则将Cl记录于
Figure GDA00040827934600000728
并更新
Figure GDA00040827934600000729
通过遍历所有可能的替换情况(即对任意
Figure GDA00040827934600000730
Figure GDA00040827934600000731
尝试所有临时重构集合
Figure GDA00040827934600000732
),我们可以得到收益最大的替换
Figure GDA00040827934600000733
其中
Figure GDA00040827934600000734
并根据该替换以及该替换的收益更新优化后的重构集合,即
Figure GDA00040827934600000735
并相应更新
Figure GDA00040827934600000736
Figure GDA00040827934600000737
该初始重构集合将不断优化,直至
Figure GDA00040827934600000738
(即任何替换都无法令
Figure GDA00040827934600000739
继续扩张)。
步骤2.3.重复步骤2.2,直至
Figure GDA0004082793460000081
为空集,据此可以得到一系列重构集合,以
Figure GDA0004082793460000082
表示,其中d表示为所确定重构集合的个数。
在一优选实施例中,所述数据修复单元,具体用于迭代地从重构集合中选择每轮进行迁移的块和利用纠删码进行重构的块;其中,对块数最多的重构集合采用纠删码进行重构,与此同时,对块数最少的重构集合采用迁移。
所述数据修复单元,具体还用于在确定每一轮的被修复块及其修复方法、存储被修复块的节点ID、基于纠删码重构所需联系的健康节点ID和所需解码参数等信息之后,为每个参与修复的节点生成一个修复命令。
其中,如果该参与修复的节点需要发送数据以参与基于纠删码的重构,则该修复命令将包含所需发送的块ID、解码参数、以及此次发送的目标节点IP地址等信息;
如果该参与修复的节点需要直接迁移数据,则该修复命令将包括所需发送的块ID,以及此次发送的目标节点IP地址等信息;
如果该参与修复的节点需要接收数据,则该修复命令将包含所需接收的块数以及被修复块的ID。
在具体的实施例当中,确定迁移和基于纠删码的重构的耦合策略,具体步骤包括:
步骤3.1.将多个重构集合根据其所包含的块数降序排序。不失一般性,假设排序后的重构集合为
Figure GDA0004082793460000083
其中
Figure GDA0004082793460000084
步骤3.2.为了便于实施,数据的修复将分为多个轮次进行,因此需要分别确定每一轮修复中需要迁移的块集合和利用纠删码进行重构的块集合。本发明的思路是:现确定的多个重构集合具有不同的块数,而块数较多的重构集合具有更好的重构并行度(因为其可从更多的健康节点中同时读取数据),因此其更适宜于利用纠删码进行重构;而对于块数较少的重构集合,由于其重构并行度较差,因此更适宜于采用迁移。基于该思想,我们将分别使用两个标记来记录当前块数最多和最少的重构集合,并将块数最多的重构集合采用纠删码修复;与此同时确定需要迁移的块数,并不断地从块数最少的重构集合中选择块进行迁移。迁移和基于纠删码的重构将同时进行,从而提升修复并行度。该步骤具体方法如下:
步骤3.2.1.令l和u分别表示当前多个重构集合中包含块数最多和最少的重构集合序号。在初始阶段,l=1,u=d。
步骤3.2.2.通过模拟迁移过程,并根据系统存储带宽和网络带宽,计算得到迁移一个块所需时间。假设块大小为c,存储设备读写带宽为bd,网络带宽为bn。由于迁移过程需首先将数据从本地存储设备中读出(所需时间为c/bd),并将数据从即将失效节点传输至目标节点(所需时间为c/bn),最后写入至目标节点的存储设备(所需时间为c/bd),因此顺序迁移一个块(即读-传输-写是顺序进行)所需时间为:
Figure GDA0004082793460000085
需注意的是:上述过程是以顺序迁移为例进行简单介绍。当考虑将一个块切分为多个包进行流水线化迁移时(即读-传输-写是以包为单位进行流水线化迁移),需相应更新tm的计算公式。本发明亦覆盖了以包为单位的流水线化数据读取和传输所实现的迁移和基于纠删码的重构过程。
步骤3.2.3.通过模拟基于纠删码的重构过程,并根据系统存储带宽和网络带宽,计算得到重构一个块所需时间。假设块大小为c,存储设备读写带宽为bd,网络带宽为bn。由于分散修复和热备修复场景中的重构过程不同,因此需要分别考虑分散修复和热备修复场景下的数据重构时间。假设一个重构集合中的块数为G,由于在分散修复场景下,修复G个块可选择G·k个健康节点用以读取数据(即保证系统每个健康节点最多只读取和传输一个块,用以参与一个重构集合中所有块的重构),且数据的重构在G个不同的节点上进行,因此分散修复中重构一个重构集合中所有块的时间等于重构一个块的时间。在基于纠删码的重构中,修复一个块需从其他k个健康节点读取k个块。假设这k个健康节点同时进行数据读取操作,则读取时间为c/bd。这k个块将被传输至选定的健康节点进行数据重构操作,因此传输k个块所需时间为k·c/bn。在数据重构操作完成后,进行数据重构的节点需要将重构好的块写至本地存储设备,因此数据写入时间为c/bd。以上可得,分散修复场景下修复一个重构集合的G个块需费时
Figure GDA0004082793460000091
而在热备修复场景下,假设参与数据修复的热备节点个数为h,且h远小于G,因此热备节点的数据传输和数据写入将是瓶颈。在重构过程中,这h个热备节点需接收G·k·c大小的数据,并在重构操作完成后写入G·c大小的数据,因此在热备场景下重构G个块需费时
Figure GDA0004082793460000092
需要注意的是,为了简单起见以及便于说明,以上tr的计算依然是考虑顺序重构方式。本发明的思想亦覆盖了当块被切分为更小的包时所实现的流水化重构。
步骤3.2.4.根据重构集合大小确定需要迁移的块数。我们将重构集合Rl所包含的块使用纠删码进行重构,并利用Rl中所包含的块数(即
Figure GDA0004082793460000093
),根据步骤3.2.3的公式(即根据所考虑的修复场景,将所对应公式中的G替换为
Figure GDA0004082793460000094
),计算得到修复该重构集合所有块所需时间tr,并通过以下公式计算得到该轮修复所需要迁移的块数cm
Figure GDA0004082793460000095
其主要思想是尽量选择合适的cm,使得迁移所需时间和基于纠删码的重构所需时间相等。
步骤3.2.5.根据步骤3.2.4所得到的迁移块数cm,如前所述,我们将不断地从块数较少的重构集合中选择块进行迁移,因此需要考虑以下两种情况:1)如果
Figure GDA0004082793460000096
(即除了采用纠删码重构的重构集合
Figure GDA0004082793460000097
剩下未被修复的块数不多于cm),则构建迁移块组合
Figure GDA0004082793460000098
2)反之,则尽可能地将块数最少的重构集合中的块进行迁移,具体方法为:寻找一个最大的x值(其中l<x≤u),从而满足
Figure GDA0004082793460000099
并从
Figure GDA00040827934600000910
中选取子集
Figure GDA00040827934600000911
从而满足
Figure GDA00040827934600000912
并构建迁移块组合
Figure GDA00040827934600000913
并更新l=l+1,u=x。
步骤3.2.6.利用纠删码修复重构集合
Figure GDA00040827934600000914
中的块,并迁移
Figure GDA00040827934600000915
中的块。对于分散修复,可通过以下方法确定存储被修复块的节点,具体方法为:构建一个二分图,其中左侧为M-1个节点顶点(用以表示M-1个可供选择的健康节点),右侧为
Figure GDA00040827934600000916
个被修复的条带顶点(用以表示被修复的
Figure GDA00040827934600000917
个块所属条带)。如果第i个健康节点在本次修复之前未存储第j个被修复条带的块,则将该健康节点所对应的节点顶点与该被修复条带所对应的条带顶点相连,因此最后可得到每个被修复条带所对应的条带顶点将与M-1-(n-1)=M-n个节点顶点相连(其中M-1表示系统所有的健康节点个数,而n-1表示存储该条带数据的健康节点个数)。因此如果
Figure GDA00040827934600000918
则可保证任意
Figure GDA00040827934600000919
个条带顶点的子集所连接的节点顶点个数为
Figure GDA00040827934600000920
因此可根据Hall定理得到,一定存在一个边数为
Figure GDA00040827934600000921
的最大匹配。根据确定的最大匹配,可为每个被修复条带确定一个节点,用以接收数据,进行数据修复,并将被修复块写入该节点本地存储。而对于热备修复,则可将被修复块均匀地分布于热备节点中,而不需进行二分图匹配计算。例如图4给出了利用二分图进行判定存储被修复块的健康节点示意图(其中
Figure GDA00040827934600000922
),该图所遵循的数据分布如图2所示。例如图2中的节点N1在修复之前未存储条带S2和S3的数据,因此图4的左图将N1与S2和S3相关的条带顶点相连;图4右图给出了一个最大匹配,表示了存储3个被修复块的健康节点选择。
步骤3.2.7.重复步骤3.2.1至3.2.6直至所有重构集合内的块都被成功修复。例如图5给出了对于给定的9个重构集合及其包含块数,并确定每一轮迁移和基于纠删码的重构的修复策略。
基于上述实施例的教导,本发明提出的一种迁移和基于纠删码的重构相耦合快速预知修复方法,可用于分布式存储系统以快速修复即将失效节点数据,通过利用即将失效节点的带宽用以迁移数据(从而相比于完全采用纠删码进行数据重构,可显著减少所需网络开销),并与此同时充分利用存储系统闲置网络资源以进行基于纠删码的重构(从而将修复所需网络开销均衡至整个存储系统)。通过有效耦合和调度迁移和基于纠删码的重构,本发明可最小化预知修复所需的修复时间,并提升系统整体可靠性。除此之外,本发明具有较好的普适性,其可应用于当前所广泛采用的、基于线性计算的纠删码,包括RS码、再生码和局部重构码。
本发明实施例6:
如图6所示,本实施例提供了一种迁移和基于纠删码的重构相耦合快速预知修复装置,包括协调器和修复代理;
所述协调器,包括:
重构集合确定模块,用于将即将失效节点上的块组织为多个重构集合。
具体的,该模块将获取系统的元数据信息,主要包括每个条带所有块的存储节点ID,以及每个块在所属条带内的逻辑块号,其中后者主要用于确定基于纠删码的重构时所需采用的解码参数。当预知一个节点即将失效时,该模块将首先确定存储于该节点之上的所有被修复块及其所归属的条带,并通过将被修复块组织为多个重构集合,以及确定每个块在利用纠删码进行重构时所选择读取数据的健康节点ID。
第一数据修复模块,用于根据重构集合所包含的块数,确定迁移和基于纠删码的重构的耦合策略。
具体的,该模块迭代地从重构集合中选择每轮进行迁移的块和利用纠删码进行重构的块,并按照步骤3.2.6确定存储被修复块的节点ID。对于选择采用纠删码进行数据重构的块,需根据其在所属条带中的逻辑块号,确定修复该块所需的解码参数。在确定每一轮的被修复块及其修复方法(迁移或是利用纠删码进行重构)、存储被修复块的节点ID(如果是分散修复,则为系统的健康节点ID;如果是热备修复,则为热备节点ID)、基于纠删码重构所需联系的健康节点ID和所需解码参数等信息之后,该模块将会为每个参与修复的节点生成一个修复命令。该修复命令由字符串格式构成,描述了该节点在修复中所扮演的角色,具体有如下几种情况:
如果该参与修复的节点需要发送数据以参与基于纠删码的重构,则该修复命令将包含所需发送的块ID、解码参数、以及此次发送的目标节点IP地址等信息;
如果该参与修复的节点需要直接迁移数据,则该修复命令将包括所需发送的块ID,以及此次发送的目标节点IP地址等信息;
如果该参与修复的节点需要接收数据,则该修复命令将包含所需接收的块数以及被修复块的ID。
如果块数大于1,则表示该修复将是基于纠删码的重构;而如果所需接收块数为1,则表示该块修复将是使用迁移操作。
第一交互模块,用于进行与参与修复节点之间的命令交互,即将修复命令发给参与修复的节点,并监听每个节点的回应,当收到所有参与修复节点的回应之后,将会发送回应给所述第一数据修复模块,以进行下一轮的数据修复。
所述修复代理,包括:
第二交互模块,用于进行与所述协调器之间的命令交互,即在收到所述协调器发送的修复命令之后,将解析该修复命令,并获知修复所需的信息,且在修复完成之后,发送回应给所述协调器,以进行下一轮的数据修复。
第二数据修复模块,用于进行数据修复相关操作。
具体的,如果该参与修复的节点需发送数据参与基于纠删码的重构,则从修复命令中获取所需读取的块ID、参与重构所需的解码参数和目标节点IP地址;启动线程将其从本地存储设备中读出所需块ID,以及将所读出数据与解码参数进行伽罗瓦域上的乘法运算,并将结果发送给目标节点;
如果该参与修复的节点需发送数据参与迁移,则从修复命令中获取所需迁移的块ID以及目标节点IP地址;启动线程从本地存储设备中读出该块,并发送给目标节点;
如果该参与修复的节点需接收数据以进行基于纠删码的重构,则从修复命令中获取所需接收的块数以及被修复的块ID;启动多线程用以接收数据,在数据接收的同时,启动其他线程进行已接收数据的异或运算以及写入操作;
如果该参与修复的节点需接受数据以参与迁移,则从修复命令中获取被修复的块ID,并启动线程进行数据的接收和写入操作。
基于上述实施例的教导,在分布式存储系统,通过利用迁移降低数据修复所需网络数据传输,采用基于纠删码的重构以充分利用系统闲置网络资源,并最终实现快速数据修复。
所述第一数据修复单元,具体用于迭代地从重构集合中选择每轮进行迁移的块和利用纠删码进行重构的块;其中,对块数最多的重构集合采用纠删码进行重构,与此同时,对块数最少的重构集合采用迁移。
所述第一数据修复单元,具体还用于在确定每一轮的被修复块及其修复方法、存储被修复块的节点ID、基于纠删码重构所需联系的健康节点ID和所需解码参数等信息之后,为每个参与修复的节点生成一个修复命令。
所述重构集合确定单元,具体用于获取系统的元数据信息,主要包括每个条带所有块的存储节点ID,以及每个块在所属条带内的逻辑块号,所述逻辑块号用于确定基于纠删码的重构时所需采用的解码参数;确定存储于即将失效节点上的所有被修复块及其所归属的条带;将被修复块组织为多个重构集合,以及确定每个被修复块在利用纠删码进行重构时所选择读取数据的健康节点ID。
1、本发明提出了迁移和基于纠删码的重构相耦合的快速修复思想;
2、本发明提出了在基于纠删码的重构中寻找重构集合以尽可能利用和均衡存储系统网络资源的思想;
3、确定重构集合所涉及的关键技术,具体包括:
a)判断一个被修复块是否可以加入一个重构集合所采用的二分图判定方法。
b)不断优化重构集合的技术。每次重构集合的优化将交换未被组织入重构集合的被修复块和已加入重构集合的被修复块,并贪心地选择交换后可让该重构集合增大最多的交换。本发明将不断优化重构集合直至无法让当前所得的重构集合继续增大。
4.基于重构集合调度迁移和纠删码重构的策略,以及利用二分图最大匹配寻找存储被修复块的健康节点技术。
本发明上述实施例的原型系统使用C++编写实现,其中基于纠删码的解码操作是基于Jerasure库函数实现。本实验在Amazon EC2集群上开展了完备的性能测试。该实验运行于美国东部北弗吉尼亚的数据中心的25个类型为m5.large的虚拟机实例之上,其中每个实例运行Ubuntu 14.04.5操作系统,并配备有2颗2.5GHz Intel Xeon Platinum处理器的vCPU、8GB内存和50GB的EBS存储。在实验之前,我们测试了该实例的读写带宽和网络带宽分别为142MB/s和5Gb/s。我们将HDFS的NameNode和本发明的协调器部分运行于一个实例之上,并将HDFS的DataNode和本发明的修复代理部署于其他21个实例之上。我们将剩余的3个实例用作热备节点以测试热备修复。
在测试中,本发明主要与两种方法进行对比,分别为迁移和基于纠删码的重构。迁移直接将被修复块从即将失效节点中读取并传输至其他健康节点或者热备节点,而基于纠删码的重构则是将步骤2所确定的重构集合全部利用纠删码进行重构(即不使用步骤3中的迁移与基于纠删码的重构相耦合的方法)。
本实验主要探究不同包长度、不同块长度、不同网络带宽和不同纠删码参数对修复性能的影响。该测试主要采用以下默认参数:我们使用的RS(9,6),其中每个块长度设置为64MB,且每个包长度设置为4MB(即默认条件下,一个块被切分为多个大小为4MB的包以进行流水线化读取、网络传输和写入)。每个实例之间的网络带宽为5Gb/s。我们将每个条带的块随机分布于所使用的集群之上,并以本发明所提出的方法、基于纠删码的重构方法和迁移方法分别测试了修复即将失效节点的50个块的所需时间。在每次实验中,我们变换一个参数,并观测该参数的变化对修复性能的影响。每个测试实验分别进行5次,实验结果记录了每种方法的修复时间平均值,及其最大值和最小值。
1)不同包长度下的修复性能。本实验测试了三种方法在包长度变换(从1MB变换值64MB)下的修复性能,结果如图7所示。可以看出,当包长度越小时,在多线程流水线化数据读写和传输过程的作用下,三种方法的修复时间越短。本实验表明,在包长度变换的情况下,本发明相比于迁移可减少37.7-52.3%的修复时间,相比于基于纠删码的重构可减少1.9-24.7%的修复时间。
2)不同块长度下的修复性能。在块长度由32MB变换至128MB的情况下,本实验测试了三种修复方法的修复性能,结果如图8所示。修复时间将随着块长度的增加而延长,同时本发明相比于迁移可减少31.1-47.9%的修复时间,相比于基于纠删码的重构可减少10.0-28.3%的修复时间。
3)不同纠删码参数下的修复性能。本实验主要测试了三种被广泛采用的纠删码参数,分别为RS(9,6)、RS(11,10)和RS(16,12)。其中RS(9,6)被应用于QuantCast文件系统,RS(14,10)被Facebook F4存储系统所采用,同时RS(16,12)被微软Azure存储系统所考虑采用。实验结果如图9所示。总体而言,本发明相比于迁移可减少9.6-42.6%的修复时间,相比于基于纠删码的重构可减少17.1-71.7%的修复时间。
4)不同网络带宽下的修复性能。在网络带宽由0.5Gb/s变换至5Gb/s的情况下,本发明分别测试了三种方法的修复性能,结果如图10所示。可以看出,当网络带宽变得愈加稀缺时,基于纠删码的重构将需要更长的修复时间。总体而言,当网络带宽为0.5Gb/s时,本发明相比于迁移可减少27.7%的修复时间,相比于基于纠删码的重构可减少62.5%的修复时间;而当网络带宽为1Gb/s时,本发明相比于迁移可减少27.1%的修复时间,相比于基于纠删码的重构可减少61.5%的修复时间。
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

Claims (12)

1.一种迁移和基于纠删码的重构相耦合快速预知修复方法,其特征在于,包括:
采用节点失效预测算法监测节点状态;
将即将失效节点上的块组织为多个重构集合;
根据重构集合所包含的块数,确定迁移和基于纠删码的重构的耦合策略;
所述根据重构集合所包含的块数,确定迁移和基于纠删码的重构的耦合策略,包括:
迭代地从重构集合中选择每轮进行迁移的块和利用纠删码进行重构的块;其中,对块数最多的重构集合采用纠删码进行重构,与此同时,对块数最少的重构集合采用迁移;
所述将即将失效节点上的块组织为多个重构集合,包括:
获取系统的元数据信息,主要包括每个条带所有块的存储节点ID,以及每个块在所属条带内的逻辑块号,所述逻辑块号用于确定基于纠删码的重构时所需采用的解码参数;
确定存储于即将失效节点上的所有被修复块及其所归属的条带;
将被修复块组织为多个重构集合,以及确定每个被修复块在利用纠删码进行重构时所选择读取数据的健康节点ID。
2.如权利要求1所述的方法,其特征在于,所述根据重构集合所包含的块数,确定迁移和基于纠删码的重构的耦合策略,还包括:
在确定每一轮的被修复块及其修复方法、存储被修复块的节点ID、基于纠删码重构所需联系的健康节点ID和所需解码参数信息之后,为每个参与修复的节点生成一个修复命令。
3.如权利要求2所述的方法,其特征在于,
如果该参与修复的节点需要发送数据以参与基于纠删码的重构,则该修复命令将包含所需发送的块ID、解码参数、以及此次发送的目标节点IP地址信息;
如果该参与修复的节点需要直接迁移数据,则该修复命令将包括所需发送的块ID,以及此次发送的目标节点IP地址信息;
如果该参与修复的节点需要接收数据,则该修复命令将包含所需接收的块数以及被修复块的ID。
4.如权利要求1所述的方法,其特征在于,所述采用节点失效预测算法监测节点状态,包括:
监测并收集SMART模块所返回的各属性值;
以相关属性值为输入,采用节点失效预测算法计算节点失效概率,若节点失效概率超过给定阈值,则判断该节点即将失效。
5.一种迁移和基于纠删码的重构相耦合快速预知修复装置,其特征在于,包括:节点状态监测单元,用于采用节点失效预测算法监测节点状态;
重构集合确定单元,用于将即将失效节点上的块组织为多个重构集合;
数据修复单元,用于根据重构集合所包含的块数,确定迁移和基于纠删码的重构的耦合策略;
所述数据修复单元,具体用于迭代地从重构集合中选择每轮进行迁移的块和利用纠删码进行重构的块;其中,对块数最多的重构集合采用纠删码进行重构,与此同时,对块数最少的重构集合采用迁移;
所述重构集合确定单元,具体用于获取系统的元数据信息,主要包括每个条带所有块的存储节点ID,以及每个块在所属条带内的逻辑块号,所述逻辑块号用于确定基于纠删码的重构时所需采用的解码参数;确定存储于即将失效节点上的所有被修复块及其所归属的条带;将被修复块组织为多个重构集合,以及确定每个被修复块在利用纠删码进行重构时所选择读取数据的健康节点ID。
6.如权利要求5所述的装置,其特征在于,所述数据修复单元,具体还用于在确定每一轮的被修复块及其修复方法、存储被修复块的节点ID、基于纠删码重构所需联系的健康节点ID和所需解码参数信息之后,为每个参与修复的节点生成一个修复命令。
7.如权利要求6所述的装置,其特征在于,
如果该参与修复的节点需要发送数据以参与基于纠删码的重构,则该修复命令将包含所需发送的块ID、解码参数、以及此次发送的目标节点IP地址信息;
如果该参与修复的节点需要直接迁移数据,则该修复命令将包括所需发送的块ID,以及此次发送的目标节点IP地址信息;
如果该参与修复的节点需要接收数据,则该修复命令将包含所需接收的块数以及被修复块的ID。
8.如权利要求5所述的装置,其特征在于,所述节点状态监测单元,具体用于监测并收集SMART模块所返回的各属性值;以相关属性值为输入,采用节点失效预测算法计算节点失效概率,若节点失效概率超过给定阈值,则判断该节点即将失效。
9.一种迁移和基于纠删码的重构相耦合快速预知修复装置,其特征在于,包括协调器和修复代理;
所述协调器,包括:
重构集合确定模块,用于将即将失效节点上的块组织为多个重构集合;
第一数据修复模块,用于根据重构集合所包含的块数,确定迁移和基于纠删码的重构的耦合策略;
第一交互模块,用于进行与参与修复节点之间的命令交互,即将修复命令发给参与修复的节点,并监听每个节点的回应,当收到所有参与修复节点的回应之后,将会发送回应给所述第一数据修复模块,以进行下一轮的数据修复;
所述修复代理,包括:
第二交互模块,用于进行与所述协调器之间的命令交互,即在收到所述协调器发送的修复命令之后,将解析该修复命令,并获知修复所需的信息,且在修复完成之后,发送回应给所述协调器,以进行下一轮的数据修复;
第二数据修复模块,用于进行数据修复相关操作;
所述第一数据修复单元,具体用于迭代地从重构集合中选择每轮进行迁移的块和利用纠删码进行重构的块;其中,对块数最多的重构集合采用纠删码进行重构,与此同时,对块数最少的重构集合采用迁移;
所述重构集合确定单元,具体用于获取系统的元数据信息,主要包括每个条带所有块的存储节点ID,以及每个块在所属条带内的逻辑块号,所述逻辑块号用于确定基于纠删码的重构时所需采用的解码参数;确定存储于即将失效节点上的所有被修复块及其所归属的条带;将被修复块组织为多个重构集合,以及确定每个被修复块在利用纠删码进行重构时所选择读取数据的健康节点ID。
10.如权利要求9所述的装置,其特征在于,所述第一数据修复单元,具体还用于在确定每一轮的被修复块及其修复方法、存储被修复块的节点ID、基于纠删码重构所需联系的健康节点ID和所需解码参数信息之后,为每个参与修复的节点生成一个修复命令。
11.如权利要求10所述的装置,其特征在于,如果该参与修复的节点需要发送数据以参与基于纠删码的重构,则该修复命令将包含所需发送的块ID、解码参数、以及此次发送的目标节点IP地址信息;
如果该参与修复的节点需要直接迁移数据,则该修复命令将包括所需发送的块ID,以及此次发送的目标节点IP地址信息;
如果该参与修复的节点需要接收数据,则该修复命令将包含所需接收的块数以及被修复块的ID。
12.如权利要求9所述的装置,其特征在于,所述第二数据修复模块,具体用于
如果该参与修复的节点需发送数据参与基于纠删码的重构,则从修复命令中获取所需读取的块ID、参与重构所需的解码参数和目标节点IP地址;启动线程将其从本地存储设备中读出所需块ID,以及将所读出数据与解码参数进行伽罗瓦域上的乘法运算,并将结果发送给目标节点;
如果该参与修复的节点需发送数据参与迁移,则从修复命令中获取所需迁移的块ID以及目标节点IP地址;启动线程从本地存储设备中读出该块,并发送给目标节点;
如果该参与修复的节点需接收数据以进行基于纠删码的重构,则从修复命令中获取所需接收的块数以及被修复的块ID;启动多线程用以接收数据,在数据接收的同时,启动其他线程进行已接收数据的异或运算以及写入操作;
如果该参与修复的节点需接受数据以参与迁移,则从修复命令中获取被修复的块ID,并启动线程进行数据的接收和写入操作。
CN201910562015.XA 2019-06-26 2019-06-26 迁移和基于纠删码的重构相耦合快速预知修复方法及装置 Active CN110597655B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910562015.XA CN110597655B (zh) 2019-06-26 2019-06-26 迁移和基于纠删码的重构相耦合快速预知修复方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910562015.XA CN110597655B (zh) 2019-06-26 2019-06-26 迁移和基于纠删码的重构相耦合快速预知修复方法及装置

Publications (2)

Publication Number Publication Date
CN110597655A CN110597655A (zh) 2019-12-20
CN110597655B true CN110597655B (zh) 2023-04-28

Family

ID=68852829

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910562015.XA Active CN110597655B (zh) 2019-06-26 2019-06-26 迁移和基于纠删码的重构相耦合快速预知修复方法及装置

Country Status (1)

Country Link
CN (1) CN110597655B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111614720B (zh) * 2020-04-13 2022-02-18 厦门大学 针对集群存储系统单点失效修复的跨集群流量优化方法
CN111506428B (zh) * 2020-04-20 2022-09-02 中国科学技术大学 一种基于纠删码存储系统的负载均衡修复调度方法
CN111858180B (zh) * 2020-07-25 2022-12-27 苏州浪潮智能科技有限公司 分布式块存储系统的数据重构时间预测方法、系统及终端
CN112667159A (zh) * 2020-12-25 2021-04-16 深圳创新科技术有限公司 一种基于纠删码的数据并行重构方法及系统
CN114595092B (zh) * 2022-04-28 2022-09-20 阿里云计算有限公司 分布式存储系统、数据重构方法、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103645861A (zh) * 2013-12-03 2014-03-19 华中科技大学 一种纠删码集群中失效节点的重构方法
CN103914402A (zh) * 2014-04-17 2014-07-09 华中科技大学 一种基于纠删码缓存的重构优化方法
CN103944981A (zh) * 2014-04-14 2014-07-23 中国科学院计算技术研究所 一种基于纠删码技术改进的云存储系统及实现方法
WO2018001110A1 (zh) * 2016-06-29 2018-01-04 中兴通讯股份有限公司 一种基于纠删码的存储数据重构方法和装置、存储节点
CN109857585A (zh) * 2019-02-20 2019-06-07 哈尔滨工程大学 一种基于平衡二叉树的纠删码失效节点重构方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103645861A (zh) * 2013-12-03 2014-03-19 华中科技大学 一种纠删码集群中失效节点的重构方法
CN103944981A (zh) * 2014-04-14 2014-07-23 中国科学院计算技术研究所 一种基于纠删码技术改进的云存储系统及实现方法
CN103914402A (zh) * 2014-04-17 2014-07-09 华中科技大学 一种基于纠删码缓存的重构优化方法
WO2018001110A1 (zh) * 2016-06-29 2018-01-04 中兴通讯股份有限公司 一种基于纠删码的存储数据重构方法和装置、存储节点
CN107544862A (zh) * 2016-06-29 2018-01-05 中兴通讯股份有限公司 一种基于纠删码的存储数据重构方法和装置、存储节点
CN109857585A (zh) * 2019-02-20 2019-06-07 哈尔滨工程大学 一种基于平衡二叉树的纠删码失效节点重构方法

Also Published As

Publication number Publication date
CN110597655A (zh) 2019-12-20

Similar Documents

Publication Publication Date Title
CN110597655B (zh) 迁移和基于纠删码的重构相耦合快速预知修复方法及装置
US11687423B2 (en) Prioritizing highly performant storage systems for servicing a synchronously replicated dataset
CN107943421B (zh) 一种基于分布式存储系统的分区划分方法及装置
CN103793425B (zh) 用于分布式系统的数据处理方法及装置
US20190361697A1 (en) Automatically creating a data analytics pipeline
US9846540B1 (en) Data durability using un-encoded copies and encoded combinations
CN108351806A (zh) 分布式基于流的数据库触发器
CN107924328A (zh) 选择虚拟机进行迁移的技术
CN107003933B (zh) 部分复制码的构建方法、装置及其数据修复的方法
CN107851102A (zh) 用于键值存储的系统和方法
US20210326047A1 (en) Application-Aware Management of a Storage System
CN110737924B (zh) 一种数据保护的方法和设备
CN115293340B (zh) 数据同步处理方法、装置、计算设备和存储介质
CN109189327A (zh) 区块链数据的压缩处理方法和装置
CN117075821B (zh) 一种分布式存储方法、装置、电子设备及存储介质
CN109196458A (zh) 存储系统可用容量计算方法及装置
US20160342899A1 (en) Collaborative filtering in directed graph
US9753803B2 (en) Storage system and information processing apparatus
CN115878052B (zh) Raid阵列巡检方法、巡检装置和电子设备
Yang et al. Reliability assurance of big data in the cloud: Cost-effective replication-based storage
US20220382455A1 (en) Providing Storage Services And Managing A Pool Of Storage Resources
Shen et al. Cluster-aware scattered repair in erasure-coded storage: Design and analysis
CN113504875B (zh) 一种基于多级调度的纠删码系统恢复方法及系统
US10241878B2 (en) System and method of data allocation providing increased reliability of storage
US11556266B2 (en) Systems and methods for object migration in storage devices

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20230111

Address after: Room 1, Unit 202, Floor 2, Building 4, Tianfu Science and Technology Center, No. 12, Xianan Road, Guicheng Street, Nanhai District, Foshan City, Guangdong Province

Applicant after: Yunlianwang Technology (Guangdong) Co.,Ltd.

Address before: Workstation 11, shared workshop 2, 100 Cyberport Road, Hong Kong, China

Applicant before: Zhongda coding Co.,Ltd.

GR01 Patent grant
GR01 Patent grant