CN107544862B - 一种基于纠删码的存储数据重构方法和装置、存储节点 - Google Patents

一种基于纠删码的存储数据重构方法和装置、存储节点 Download PDF

Info

Publication number
CN107544862B
CN107544862B CN201610495313.8A CN201610495313A CN107544862B CN 107544862 B CN107544862 B CN 107544862B CN 201610495313 A CN201610495313 A CN 201610495313A CN 107544862 B CN107544862 B CN 107544862B
Authority
CN
China
Prior art keywords
load
fault
starting
recovery threshold
queue
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
CN201610495313.8A
Other languages
English (en)
Other versions
CN107544862A (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.)
ZTE Corp
Original Assignee
ZTE Corp
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 ZTE Corp filed Critical ZTE Corp
Priority to CN201610495313.8A priority Critical patent/CN107544862B/zh
Priority to PCT/CN2017/088477 priority patent/WO2018001110A1/zh
Publication of CN107544862A publication Critical patent/CN107544862A/zh
Application granted granted Critical
Publication of CN107544862B publication Critical patent/CN107544862B/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

Abstract

本发明实施例提供一种基于纠删码的存储数据重构方法和装置、存储节点,通过确定启动故障恢复阈值,启动故障恢复阈值小于等于条带存储数据块数量与纠删码重构最少数据块数量的差值,且大于等于1;对于故障数据块数量达到启动故障恢复阈值的条带,启动该条带的故障恢复;利用该条带的非故障数据块进行数据重构。相比于现有技术减少了进行故障恢复的次数,从而减轻了系统的带宽消耗,使得系统更稳定,提高了系统的业务性能。

Description

一种基于纠删码的存储数据重构方法和装置、存储节点
技术领域
本发明涉及通信领域,尤其涉及一种基于纠删码的存储数据重构方法和装置、存储节点。
背景技术
近年来,随着信息资源和数据的爆炸性增长,分布式存储系统凭借高性能、高扩展、高可用、易管理等特点,成为云存储和大数据的基础和核心。但是由于硬件损坏和软件故障等原因,在数据存储过程中可能发生数据的损坏和丢失。云存储系统一般采用纠删码技术来提升容错能力,提高数据资源的使用效率和系统性能。纠删码在没有增加过量的存储空间的基础上,通常通过合理的冗余编码来保证数据的高可靠性和可用性。在云存储系统中,采用纠删码技术对数据进行保存,相对于完全复制技术,在很大程度上降低了系统的空间开销,但同时由于数据重构会带来巨大的网络开销,采用这种纠删码技术可能导致整个系统的网络或者部分节点的网络拥塞而无法提供服务,影响系统的性能。而且随着系统规模和磁盘容量增大,当前存储系统中部署的节点量越来越大,每天失效的节点数量也随之增多,数据恢复流量比重在总网络流量中还会不断增长,则会极大影响日常业务数据的访问。所以如何降低纠删码技术中的带宽消耗,保障业务性能是当前值得考虑的问题。
发明内容
本发明实施例提供的基于纠删码的存储数据重构方法和装置、存储节点,主要解决的技术问题是现有技术中纠删码技术进行存储数据重构时带宽消耗高,使得系统不稳定,业务性能不好的问题。
为解决上述技术问题,本发明实施例提供一种基于纠删码的存储数据重构方法,包括:
确定启动故障恢复阈值,启动故障恢复阈值小于等于条带存储数据块数量与纠删码重构最少数据块数量的差值,且大于等于1;
对于故障数据块数量达到启动故障恢复阈值的条带,启动该条带的故障恢复;
利用该条带的非故障数据块进行数据重构。
本发明实施例还提供一种基于纠删码的存储数据重构装置,包括:
启动故障恢复阈值确定模块,用于确定启动故障恢复阈值,启动故障恢复阈值小于等于条带存储数据块数量与纠删码重构最少数据块数量的差值,且大于等于1;
故障恢复启动模块,用于对于故障数据块数量达到启动故障恢复阈值的条带,启动该条带的故障恢复;
数据重构模块,用于利用该条带的非故障数据块进行数据重构。
本发明实施例还提供一种基于纠删码的存储节点,包括物理存储介质和处理器,处理器用于:
确定启动故障恢复阈值,并将启动故障恢复阈值分发到其它存储节点;启动故障恢复阈值小于等于条带存储数据块数量与纠删码重构最少数据块数量的差值,且大于等于1;
扫描本存储节点负责的各条带的故障情况,对于故障数据块数量达到启动故障恢复阈值的条带,启动该条带的故障恢复;
从本存储节点的物理存储介质以及其他存储节点的物理存储介质中提取该条带的非故障数据块进行数据重构。
本发明实施例还提供一种计算机存储介质,计算机存储介质中存储有计算机可执行指令,计算机可执行指令用于执行前述的任一项的基于纠删码的存储数据重构方法。
本发明的有益效果是:
本发明实施例提供的基于纠删码的存储数据重构方法和装置、存储节点,以及计算机存储介质,通过确定启动故障恢复阈值,启动故障恢复阈值小于等于条带存储数据块数量与纠删码重构最少数据块数量的差值,且大于等于1;对于故障数据块数量达到启动故障恢复阈值的条带,启动该条带的故障恢复;利用该条带的非故障数据块进行数据重构。相比于现有技术减少了进行故障恢复的次数,从而减轻了系统的带宽消耗,使得系统更稳定,提高了系统的业务性能。
附图说明
图1为本发明实施例任一实施例的纠删码技术原理示意图;
图2为本发明实施例任一实施例的纠删码分布式数据存储示意图;
图3为本发明实施例一的基于纠删码的存储数据重构方法流程图;
图4为本发明实施例二的基于纠删码的存储数据重构装置示意图;
图5为本发明实施例三的基于纠删码的存储节点示意图;
图6为本发明实施例四的基于纠删码的存储集群示意图;
图7为本发明实施例四的基于纠删码的存储数据重构方法流程图。
具体实施方式
下面通过具体实施方式结合附图对本发明实施例作进一步详细说明。
采用纠删码技术对数据进行存储,具体请参见图1,包括:将原始文件进行切块,得到k个源数据块,然后将该k个源数据块进行编码生成n个编码数据块,即一个(n,k)纠删码是k个源数据块经过编码运算得到n个数据块;然后在进行数据重构时,使用这n个数据块中任意k个数据块均可通过解码恢复出原来的k个源数据块,将该k个源数据块进行组合则重构出原始文件。基于纠删码的分布式数据存储模型可具体参见图2,假设系统中含有n个存储节点,其中k个是数据节点,m个是编码节点,即满足n=k+m。k个数据节点存储原始数据块,分别标记为D0,D1,…,Dk-1;m个编码节点存储编码数据块,标记为C0,C1,…,Cm-1。纠删码算法需要将原始文件切割成k等份后依次存储在k个数据节点中,即将原始文件进行切换得到k个源数据块,并将编码生成的m份数据放入m个编码节点中。当存储大文件时,需要对原始文件进行二次切割,即每次从文件中读取指定大小的数据量进行编码,我们将一次编码过程中涉及的原始数据和编码数据称为一个stripe(条带)。一个stripe独立地构成一个编码的信息集合,不同stripe之间相互无关。
对于一个条带,通常情况下,只要条带中一个数据块发生故障,即触发数据重构,其中,进行数据重构时,新节点需要首先从k个节点中下载全部数据恢复出原始文件,再重新编码生成失效的数据,这个过程中传输的数据量是失效数据的k倍。当全系统存在多条条带、多数据块故障时,则会引发大量数据重构流量。而现有技术中一味限制数据恢复可用的网络带宽,势必会导致节点重构过程变慢,对于不断发生故障的分布式存储系统来说,节点的重构速率直接影响到系统可靠性。如果重构速率过慢,甚至赶不上节点发生故障的速度,那么系统将无法维持其可靠性。并且限制数据恢复带宽,只是短期内降低网络带宽占用,而从长期来看,数据恢复所占用的带宽并没有实质的降低。所以需要一种更为合理、可靠的数据重构方法来减轻系统带宽占用,保证系统稳定性。
实施例一:
为解决现有技术中纠删码技术进行存储数据重构时带宽消耗高,使得系统不稳定,业务性能不好的问题,本实施例提供一种基于纠删码的存储数据重构方法,请参见图3,具体包括:
步骤S301,确定启动故障恢复阈值,启动故障恢复阈值小于等于条带存储数据块数量与纠删码重构最少数据块数量的差值,且大于等于1。
具体的,在保证系统冗余度的同时,为减少进行存储数据恢复的次数,本实施例提供的基于纠删码的存储数据重构方法中,引入了启动故障恢复阈值的概念,即在进行启动故障恢复阈值设置时,根据系统的负载等资源情况,为每个条带设置进行数据恢复的启动故障恢复阈值,对于故障数据块数量达到该启动故障恢复阈值的条带,才启动该条带的故障恢复。其中,将启动故障恢复阈值定义为r,对于每个条带,当故障数据块数达到r,则立即启动故障恢复。对于(n,k)纠删码,为了保证纠删码技术的可靠性,其中r最大可为n-k,最小为1,该n为条带存储数据块数量,对应于系统中的n个存储节点,k为纠删码重构最少数据块数量,对应于k个数据节点。设置启动故障恢复阈值,对故障数据块数量达到该启动故障恢复阈值的条带启动该条带的故障恢复,相比于现有技术中,只要一个存储节点失效,即触发数据恢复及重构,有效的降低了进行数据恢复的频率,减少了带宽占用,从而可以保障业务性能,提高系统稳定性。
进一步的,本实施例提供的基于纠删码的存储数据重构方法中,还包括将启动故障恢复阈值设置为初始值;根据系统负载情况动态调整启动故障恢复阈值,系统负载越重启动故障恢复阈值越大。
具体的,由于系统中的负载是在不断发生变化的,为使进行数据故障恢复和重构的次数更加符合系统实时地状态,从而可以更加合理的降低数据恢复频率,减少恢复占用的带宽,尽可能保障业务性能,可以在存储系统初始化时,将确定的该启动故障恢复阈值设置为存储系统中的初始值,然后根据系统实时的资源状态对该启动故障恢复阈值进行动态调整,其中,系统的负载越重该启动故障恢复阈值越大;该实时的对启动故障恢复阈值进行动态调整具体包括设置一调整周期,每隔一段时间对此启动故障恢复阈值进行一次调整。另外,在存储系统初始化时,为保证系统冗余度最大,可靠性最高,可以将该启动故障恢复阈值r的初始值设置为1。然后,根据系统负载情况动态调整启动故障恢复阈值包括:周期性计算系统的负载信息,并根据预设的规则判定系统负载为重载或轻载;当重载时将下一周期的启动故障恢复阈值增加预设步进值,当轻载时将下一周期的启动故障恢复阈值减去预设步进值;该预设步进值包括大于等于1,且小于等于条带存储数据块数量与纠删码重构最少数据块数量差值的正整数。具体的,当重载时将下一周期的启动故障恢复阈值加1,且不大于条带存储数据块数量与纠删码重构最少数据块数量的差值;当重载轻载时将下一周期的启动故障恢复阈值减1,且不小于1。即当经判断,系统的负载较轻,系统带宽尚不构成瓶颈时,启动故障恢复阈值使其不断趋于1,保证系统数据快速恢复。而当负载较重时,启动故障恢复阈值最大为n-k,保证故障严重的条带快速恢复,从而有效保障了系统可靠性,提升了系统业务性能。
上述周期性计算系统的负载信息,并根据预设的规则判定系统负载为重载或轻载包括:记Numi为时间周期Pi内完成的用户I/O请求个数,Latencyi(k)是在周期Pi内的第k个用户I/O的服务时间;设周期Pi的延迟上限为Limiti,且延迟协议为要求对于每个用户I/O,都满足Latencyi(k)≤Limiti;定义Violatei为违反延迟协议的用户I/O所占比率:
Figure BDA0001035261130000051
如果在周期Pi内发生系统拥塞或者Violatei>δ,δ称为松弛因子,则判断负载为重载,否则,则判为轻载;其中δ可以根据需要具体设置,本实施例对此不做限定。
步骤S102,对于故障数据块数量达到启动故障恢复阈值的条带,启动该条带的故障恢复。
具体的,检测系统中发生故障的数据块的数量,并对各条带对应的故障数据块的数量进行统计,当条带的故障数据块达到启动故障恢复阈值时,对该条带进行故障恢复。
步骤S103,利用该条带的非故障数据块进行数据重构。
具体的,对于故障数据块数量达到启动故障恢复阈值的条带进行故障恢复的过程中,为准确和方便的进行故障数据块的统计,对于存在故障数据块的各条带,构建至少一个待重构队列,待重构队列中记录条带标识信息,每个队列对应的各条带具有相同的故障数据块数量;对于达到启动故障恢复阈值的待重构队列,根据队列对应的各条带具有的故障数据块数量从大到小依次选择待重构队列,对选择的待重构队列中的条带分别启动故障恢复。即可以通过该待重构队列进行故障数据块和条带的统计,然后根据统计情况进行故障恢复。对于故障数据块个数达到启动故障恢复阈值的条带进行数据重构,其具体为依次选择故障数据块多的条带进行故障恢复,从系统中读取该条带对应的k个正常存储数据,根据数据解码和组合得到原始文件;然后根据条带id及当前节点、网络可用性情况,计算出放置该条带的新的n个节点集合;并根据纠删码算法编码得到n个数据块,通过网络将条带信息及数据块分别发送到该新节点;各新节点根据具体情况更新本地信息,将数据写入本节点,完成数据重构。
本实施例提供的基于纠删码的存储数据重构方法,通过确定启动故障恢复阈值,启动故障恢复阈值小于等于条带存储数据块数量与纠删码重构最少数据块数量的差值,且大于等于1;对于故障数据块数量达到启动故障恢复阈值的条带,启动该条带的故障恢复;利用该条带的非故障数据块进行数据重构。相比于现有技术,减少了进行故障恢复的次数,从而减轻了系统的带宽消耗,使得系统更稳定,提高了系统业务性能。
实施例二:
本实施例提供一种基于纠删码的存储数据重构装置,具体请参见图4,具体包括:启动故障恢复阈值确定模块41,故障恢复启动模块42和数据重构模块43,其中启动故障恢复阈值确定模块41用于确定启动故障恢复阈值,启动故障恢复阈值小于等于条带存储数据块数量与纠删码重构最少数据块数量的差值,且大于等于1;故障恢复启动模块42用于对于故障数据块数量达到启动故障恢复阈值的条带,启动该条带的故障恢复;数据重构模块43用于利用该条带的非故障数据块进行数据重构。
具体的,在保证系统冗余度的同时,为减少进行存储数据恢复的次数,本实施例提供的基于纠删码的存储数据重构装置中,通过启动故障恢复阈值确定模块41进行启动故障恢复阈值设置,根据系统的负载等资源情况,为每个条带设置进行数据恢复的启动故障恢复阈值,对于故障数据块数量达到该启动故障恢复阈值的条带,才启动该条带的故障恢复。其中,将启动故障恢复阈值定义为r,对于每个条带,当故障数据块数达到r,则立即启动故障恢复。对于(n,k)纠删码,为了保证纠删码技术的可靠性,其中r最大可为n-k,最小为1。设置启动故障恢复阈值,对故障数据块数量达到该启动故障恢复阈值的条带启动该条带的故障恢复,相比于现有技术中,只要条带中一个数据块发生故障,即触发数据恢复及重构,有效的降低了进行数据恢复的频率,减少了带宽占用,从而可以保障业务性能,提高系统稳定性。
进一步的,本实施例提供的基于纠删码的存储数据重构装置中,还包括启动故障恢复阈值调整模块44,该启动故障恢复阈值调整模块用于将启动故障恢复阈值设置为初始值;根据系统负载情况动态调整启动故障恢复阈值,系统负载越重启动故障恢复阈值越大。
具体的,由于系统中的负载是在不断发生变化的,为使进行数据故障恢复和重构的次数更加符合系统实时地状态,从而可以更加合理的降低数据恢复频率,减少恢复占用的带宽,尽可能保障业务性能,可以在存储系统初始化时,将确定的该启动故障恢复阈值设置为存储系统中的初始值,然后根据系统实时的资源状态对该启动故障恢复阈值进行动态调整,其中,系统的负载越重该启动故障恢复阈值越大。另外,在存储系统初始化时,为保证系统冗余度最大,可靠性最高,可以由启动故障恢复阈值调整模块将该启动故障恢复阈值r的初始值设置为1。然后,根据系统负载情况动态调整启动故障恢复阈值包括:周期性计算系统的负载信息,并根据预设的规则判定系统负载为重载或轻载;当重载时将下一周期的启动故障恢复阈值加1,且不大于条带存储数据块数量与纠删码重构最少数据块数量的差值;当重载轻载时将下一周期的启动故障恢复阈值减1,且不小于1。即当经判断,系统的负载较轻,系统带宽尚不构成瓶颈时,启动故障恢复阈值使其不断趋于1,保证系统数据快速恢复。而当负载较重时,启动故障恢复阈值最大为n-k,保证故障严重的条带快速恢复,从而有效保障了系统可靠性,提升了系统业务性能。上述周期性计算系统的负载信息,并根据预设的规则判定系统负载为重载或轻载具体可以通过在周期Pi内是否发生系统拥塞或者Violatei是否大于δ,δ称为松弛因子,来进行判断。
故障恢复启动模块42对于故障数据块数量达到启动故障恢复阈值的条带,包括:检测系统中发生故障的数据块的数量,并对各条带对于的故障数据块的数据进行统计,当条带的故障数据块达到时,对该条带进行故障恢复,启动该条带的故障恢复。
本实施例提供的基于纠删码的存储数据重构装置,还包括重构队列处理模块45,重构队列处理模块用于:对于存在故障数据块的各条带,构建至少一个待重构队列,待重构队列中记录条带标识信息,每个队列对应的各条带具有相同的故障数据块数量;对于达到启动故障恢复阈值的待重构队列,根据队列对应的各条带具有的故障数据块数量从大到小依次选择待重构队列,对选择的待重构队列中的条带分别启动故障恢复。
数据重构模块43利用该条带的非故障数据块进行数据重构。具体的,依次选择故障数据块多的条带进行故障恢复,从网络中读取该条带对应的k个正常存储数据,得到原始文件;然后根据条带id及当前节点、网络可用性情况,计算出放置条带的新的n个节点集合;并根据纠删码算法编码得到n个数据块,通过网络将条带信息及数据块分别发送到该新节点;各新节点根据具体情况更新本地信息;将数据写入本节点,完成数据重构。
本实施例提供的基于纠删码的存储数据重构装置,通过确定启动故障恢复阈值,启动故障恢复阈值小于等于条带存储数据块数量与纠删码重构最少数据块数量的差值,且大于等于1;对于故障数据块数量达到启动故障恢复阈值的条带,启动该条带的故障恢复;利用该条带的非故障数据块进行数据重构。相比于现有技术,有效的减少了进行故障恢复的次数,从而减轻了系统的带宽消耗,使得系统更稳定,提高了系统业务性能。
实施例三:
本实施例提供一种基于纠删码的存储节点,具体请参见图5,包括处理器51和物理存储介质52,其中处理器51用于:确定启动故障恢复阈值,并将阈值分发到其它存储节点;启动故障恢复阈值小于等于条带存储数据块数量与纠删码重构最少数据块数量的差值,且大于等于1;扫描本存储节点负责的各条带的故障情况,对于故障数据块数量达到启动故障恢复阈值的条带,启动该条带的故障恢复;从本存储节点的物理存储介质以及其他存储节点的物理存储介质中提取该条带的非故障数据块进行数据重构。
具体的,该处理器51在系统初始化时,对系统中的启动故障恢复阈值进行设置,将启动故障恢复阈值设置为初始值;然后在系统进行文件读写操作时,根据系统负载情况动态调整启动故障恢复阈值,系统负载越重启动故障恢复阈值越大。通过该启动故障恢复阈值的设置,根据系统负载动态调整系统中进行数据重构的频率,有效的减轻了系统的带宽消耗。
进一步的,为能方便的统计故障数据块和条带信息,该处理器51还用于:对于本存储节点存在故障数据块的各条带,构建至少一个待重构队列,待重构队列中记录条带标识信息,每个待重构队列对应的各条带具有相同的故障数据块数量;对于达到启动故障恢复阈值的待重构队列,根据待重构队列对应的各条带具有的故障数据块数量从大到小依次选择待重构队列,对选择的待重构队列中的条带分别启动故障恢复。该服务器51在进行数据重构时,可以从其所在存储节点的物理存储介质中获取该条带的非故障数据块,也可以从其他存储的物理存储介质中获取该条带的非故障数据块。本实施例中的物理存储介质具体可以是用于存储数据的存储单元。
需要理解的是,本实施例中的处理器51具体可以是一个处理器51,其中设置有不同的功能模块来完成上述不同的处理过程;该处理器51也可以是具有不同处理功能的多个处理器51,每个处理器51完成上述的一项处理或几项处理。
本实施例提供的基于纠删码的存储节点,通过确定启动故障恢复阈值,启动故障恢复阈值小于等于条带存储数据块数量与纠删码重构最少数据块数量的差值,且大于等于1;对于故障数据块数量达到启动故障恢复阈值的条带,启动该条带的故障恢复;利用该条带的非故障数据块进行数据重构。相比于现有技术,有效减少了进行故障恢复的次数,从而减少了系统的带宽消耗,使得系统更稳定,提高了业务性能。
实施例四:
在对数据进行存储的存储集群中,通常包括多个存储节点,该存储节点可以是上述实施例三提供的存储节点,如图6所示,该存储节点通常包括管理中心61,管理代理62,分布式文件存储客户端63,数据路由64和本地数据存储服务65等部分。其中管理中心61用于维护集群的成员和状态,以及数据分布规则、数据恢复规则等,提供强一致性的决策,。其通常默认部署在3个存储节点上,形成管理中心集群;该管理中心61也可部署在独立服务器上,进行集群管理。管理中心集群基于paxos算法设计实现了更适用的一致性选举算法,使节点状态的变化在整系统所有节点上是统一的。管理代理62用于实现各节点与管理中心61的通信,周期性向管理中心61提供节点健康信息,并接收管理中心61的控制指令。管理中心61具体的可以部署在每个存储节点上。分布式文件存储客户端63用于提供分布式集群接入点服务,也可以看作应用程序访问存储系统的代理,提供给应用程序通用的文件操作接口,如C API、IAVA API、NFS(Network File System,网络文件系统)、CIFS(Common InternetFile System,通用网络文件系统)等;与客户端60进行数据交互,该客户端60具体可以是该存储集群对应的用户客户端。数据路由64负责文件访问控制,数据文件分布和各种数据的管理,元数据保存。通过数据定位功能与本地数据存储服务进程通信,响应来自分布式文件存储客户端的读写请求,将请求路由到具体节点上的本地数据存储服务进程,实现数据的访问、副本分发等。其采用集群方式部署在每个存储节点上,各数据定位模块之间可以共享内存数据,零故障切换时间,可以很方便的进行扩容,以提供海量元数据容量。数据路由中维护待重构队列Qi本地数据存储服务管理负责实际物理介质的空间资源管理维护,主要负责存储和查找本地对象,执行具体的I/O操作。本地数据存储服务是实际处理数据读写的进程,与物理存储设备交互,实现数据的读写功能。上述存储集群具体可以是NAS存储集群,也可以是其他任何用于数据存储的存储集群。
基于上述存储集群,本实施例提供一种基于纠删码的存储数据重构方法,请参见图7,具体包括:
步骤S701,对存储系统进行初始化设置。
具体的,对系统进行初始化设置,包括:通过管理中心61设置采用纠删码(n,k),则可容忍最大故障数据块数为n-k,当n-k个数据块故障时,可以通过另外k个正常的数据块恢复原始文件,并重新生成n个数据块保持系统冗余度。系统必须通过向新节点写额外的冗余数据来维持必要的数据可靠性。然后初始化设置当前启动故障恢复阈值,为保证系统冗余度最大,可靠性最高,该初始化启动故障恢复阈值r可以为1。然后各存储节点初始化本节点的条带列表,条带列表中每项内容包括条带id,条带主id信息,条带涉及所有节点及磁盘id信息。各存储节点初始化本节点的待重构队列Qi,i对应条带相关数据块故障数(1<=i<=n-k)。Q1中所有条带数据块故障数为1,同样的,Qn-k中所有条带数据块故障数为n-k。队列中每项记录条带id。故存储系统初始化时,每个存储节点上有n-k个待重构队列,且每个队列为空。
步骤S702,进行文件写入操作。
在完成系统初始化设置后,进行文件写入操作,具体包括:分布式文件存储客户端63根据负载均衡原则,动态选取一个存储节点的数据路由响应写入请求;数据路由根据当前存储系统规则查找或计算得到文件file应写入的n个节点及磁盘id,同时确定其中一个(节点id,磁盘id)元组为主id;然后根据(n,k)纠删码编码得到n个数据块;并将条带信息及数据块分别发送到n个节点。前述的n个节点上,数据路由将条带信息记录入条带列表,本地数据存储服务将数据写入本地磁盘。
步骤S703,检测系统的状态信息。
当完成存储系统初始化,系统运行过程中用户频繁发起读写文件操作,在文件读写过程中,由于硬件损坏和软件故障等原因,在数据存储过程中可能发生数据的损坏和丢失等数据故障,此时为保证系统的稳定性,需要对系统中的存储数据块状态进行检测,以对发生故障的数据块对应的条带进行及时的故障恢复。其中,检测系统的状态信息,包括:管理中心61从各节点管理代理62周期性读取当前时间周期Pi内系统负载信息和系统可用性状态信息,其中系统可用性状态信息包括各节点、磁盘、网络链路状态等。同时管理中心61需要将收集到的信息进行加工,包括过滤掉从故障节点获取到的脏数据等;管理中心61根据处理过后的系统可用信息、决策节点及网络故障情况,主动心跳等方式,进一步确认系统的故障情况。同时根据系统负载信息,确定下一周期Pi+1的启动故障恢复阈值r。然后将确定好的启动故障恢复阈值下发到各存储节点的数据路由64,并将全局的故障情况也下发到各存储节点。
步骤S704,进行数据重构。
具体的,当系统中存在故障数据块时,对于满足启动故障恢复阈值的条带开启故障恢复,进行数据重构。当检测到系统中存在故障数据块后,进行待重构队列的设置或更新预先构建的待重构队列。具体的,在数据读写过程中,数据路由64扫描本节点负责的各条带(条带主数据块在本节点),刷新待重构队列,包括:若条带S的所有数据块所在的节点或磁盘均正常,且条带S上一周期未在任一待重构队列,则跳过该条带,扫描下一个条带;若条带S的所有数据块所在的节点或磁盘均正常,但条带S上一周期在待重构队列Qi中,则将条带S从Qi删除,同时更新条带S的队列信息;若条带S涉及的故障节点、磁盘块个数为i(条带S的部分数据块所在的节点或磁盘异常),且条带S上一周期在待重构队列Qi中,则将条带S从Qi删除,而后插入到队列Qi队尾,同时更新条带S的队列信息;若条带S涉及的故障节点、磁盘块个数为i(条带S的部分数据块所在的节点或磁盘异常),且条带S上一周期未在任一待重构队列,则将条带S插入到队列Qi队尾,同时更新条带S的队列信息,通过上述更新过程使得一个待重构队列中的条带的故障数相同,在进行重构时,优先选择故障数多的待重构队列中的条带进行数据重构。
如果Qi(i=n-k)不为空,则依次从Qi队首取出条带id,启动重构流程;若Qi为空,则i=i-1,则重复进行条带扫描,直至i小于r。当待重构条带较多,以致单个周期无法完成所有重构时,可能会发生重构过程中,队列Qi被排队模块调整。对于这种情况,始终从Qi(i=n-k)开始重构,具体流程包括:数据路由64根据本地条带队列中记录的队列、节点对应关系,获取到条带S当前存储在的n个节点集合Set;根据系统节点、网络故障状态,确定k个正常节点;然后通过网络从k个节点的本地数据存储服务读取数据;根据纠删码算法解码得到原始文件。再根据条带id及当前节点、网络可用性情况,计算出放置条带的新的n个节点集合Set’;将根据纠删码算法编码得到的n个数据块,通过网络将条带信息及数据块分别发送到集合Set∪Set’中所有可达节点;各新节点根据具体情况更新本地信息。对于Set’中的节点n,如果n∈Set∩Set’,节点n的数据路由将条带信息记录入条带列表;如果
Figure BDA0001035261130000121
节点N的数据路由将条带信息记录入条带列表,本地数据存储服务模块将数据写入本节点,完成数据重构;对于Set中的节点n,如果
Figure BDA0001035261130000122
空间回收模块将条带S对应数据删除,空间回收,同时,数据路由将对应条带信息记录从条带列表中删除。
本实施例提供的基于纠删码的存储数据重构方法,根据系统可用情况及系统负载情况,将同一条带的多个数据块恢复合并为一次完成,有效降低数据恢复带宽占用。相比于现有技术中的一个数据块故障,要消耗k倍带宽恢复,恢复多个数据块(假设f),需要消耗f*k倍带宽。本实施例提供的基于纠删码的存储数据重构方法,将恢复f个数据块需要k倍带宽,折算到恢复一个数据块,仅需要k/f倍带宽,从而避免不必要的数据恢复,大大降低带宽占用;而且通过减少数据恢复造成的带宽消耗,有效降低网络通信成本,提升业务性能;根据负载动态调整启动故障恢复阈值,当负载较轻,保证系统数据快速恢复。而当负载较重时,保证故障严重的条带快速恢复,从而有效保障了系统可靠性,在系统可靠性和系统业务性能间达到较好的平衡。另外,本实施例提供的基于纠删码的存储数据重构方法,实现简单,无需修改底层内核,对于windows、Linux等各种操作系统均适用;并且与平台无关,即实用于各种不同架构的分布式存储系统都适用。
显然,本领域的技术人员应该明白,上述本发明实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在计算机存储介质(ROM/RAM、磁碟、光盘)中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。所以,本发明不限制于任何特定的硬件和软件结合。
以上内容是结合具体的实施方式对本发明实施例所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

Claims (8)

1.一种基于纠删码的存储数据重构方法,包括:
确定启动故障恢复阈值,所述启动故障恢复阈值小于等于条带存储数据块数量与纠删码重构最少数据块数量的差值,且大于等于1;
对于故障数据块数量达到所述启动故障恢复阈值的条带,启动该条带的故障恢复;
利用该条带的非故障数据块进行数据重构;
所述方法还包括:
将所述启动故障恢复阈值设置为初始值;
根据系统负载情况动态调整所述启动故障恢复阈值,系统负载越重所述启动故障恢复阈值越大;
判断所述系统负载情况包括:周期性计算系统的负载信息,并根据预设的规则判定系统负载为重载或轻载;
所述周期性计算系统的负载信息,并根据预设的规则判定系统负载为重载或轻载包括:
记Numi为时间周期Pi内完成的用户I/O请求个数,Latencyi(k)是在周期Pi内的第k个用户I/O的服务时间;
设周期Pi的延迟上限为Limiti,且延迟协议为要求对于每个用户I/O,都满足Latencyi(k)≤Limiti;定义Violatei为违反延迟协议的用户I/O所占比率:
Figure FDF0000014592300000011
如果在周期Pi内发生系统拥塞或者Violatei>δ,δ称为松弛因子,判断负载为重载,否则,则判为轻载。
2.根据权利要求1所述的基于纠删码的存储数据重构方法,其特征在于,所述根据系统负载情况动态调整所述启动故障恢复阈值包括:设置启动故障恢复阈值的初始值为1,当重载时将下一周期的启动故障恢复阈值增加预设步进值,当轻载时将下一周期的启动故障恢复阈值减去预设步进值;所述预设步进值包括大于等于1,且小于等于条带存储数据块数量与纠删码重构最少数据块数量差值的正整数。
3.根据权利要求1或2所述的基于纠删码的存储数据重构方法,其特征在于,还包括:
对于存在故障数据块的各条带,构建至少一个待重构队列,所述待重构队列中记录条带标识信息,每个待重构队列对应的各条带具有相同的故障数据块数量;
对于达到所述启动故障恢复阈值的待重构队列,根据待重构队列对应的各条带具有的故障数据块数量从大到小依次选择待重构队列,对选择的待重构队列中的条带分别启动故障恢复。
4.一种基于纠删码的存储数据重构装置,包括:
启动故障恢复阈值确定模块,用于确定启动故障恢复阈值,所述启动故障恢复阈值小于等于条带存储数据块数量与纠删码重构最少数据块数量的差值,且大于等于1;
故障恢复启动模块,用于对于故障数据块数量达到所述启动故障恢复阈值的条带,启动该条带的故障恢复;
数据重构模块,用于利用该条带的非故障数据块进行数据重构;
所述装置还包括:启动故障恢复阈值调整模块,所述启动故障恢复阈值调整模块用于:
将所述启动故障恢复阈值设置为初始值;
根据系统负载情况动态调整所述启动故障恢复阈值,系统负载越重所述启动故障恢复阈值越大;
所述启动故障恢复阈值调整模块还用于:周期性计算系统的负载信息,并根据预设的规则判定系统负载为重载或轻载;
所述周期性计算系统的负载信息,并根据预设的规则判定系统负载为重载或轻载包括:
记Numi为时间周期Pi内完成的用户I/O请求个数,Latencyi(k)是在周期Pi内的第k个用户I/O的服务时间;
设周期Pi的延迟上限为Limiti,且延迟协议为要求对于每个用户I/O,都满足Latencyi(k)≤Limiti;定义Violatei为违反延迟协议的用户I/O所占比率:
Figure FDF0000014592300000031
如果在周期Pi内发生系统拥塞或者Violatei>δ,δ称为松弛因子,判断负载为重载,否则,则判为轻载。
5.根据权利要求4所述的基于纠删码的存储数据重构装置,其特征在于,所述启动故障恢复阈值调整模块还用于:设置启动故障恢复阈值的初始值为1,当重载时将下一周期的启动故障恢复阈值增加预设步进值,当轻载时将下一周期的启动故障恢复阈值减去预设步进值;所述预设步进值包括大于等于1,且小于等于条带存储数据块数量与纠删码重构最少数据块数量差值的正整数。
6.根据权利要求4或5所述的基于纠删码的存储数据重构装置,其特征在于,还包括重构队列处理模块,所述重构队列处理模块用于:
对于存在故障数据块的各条带,构建至少一个待重构队列,所述待重构队列中记录条带标识信息,每个待重构队列对应的各条带具有相同的故障数据块数量;
对于达到所述启动故障恢复阈值的待重构队列,根据待重构队列对应的各条带具有的故障数据块数量从大到小依次选择待重构队列,对选择的待重构队列中的条带分别启动故障恢复。
7.一种基于纠删码的存储节点,包括物理存储介质和处理器,其特征在于,所述处理器用于:
确定启动故障恢复阈值,并将所述启动故障恢复阈值分发到其它存储节点;所述启动故障恢复阈值小于等于条带存储数据块数量与纠删码重构最少数据块数量的差值,且大于等于1;
扫描本存储节点负责的各条带的故障情况,对于故障数据块数量达到所述启动故障恢复阈值的条带,启动该条带的故障恢复;
从本存储节点的物理存储介质以及其他存储节点的物理存储介质中提取该条带的非故障数据块进行数据重构;
所述处理器还用于:
将所述启动故障恢复阈值设置为初始值;
根据系统负载情况动态调整所述启动故障恢复阈值,系统负载越重所述启动故障恢复阈值越大;
判断所述系统负载情况包括:周期性计算系统的负载信息,并根据预设的规则判定系统负载为重载或轻载;
所述周期性计算系统的负载信息,并根据预设的规则判定系统负载为重载或轻载包括:
记Numi为时间周期Pi内完成的用户I/O请求个数,Latencyi(k)是在周期Pi内的第k个用户I/O的服务时间;
设周期Pi的延迟上限为Limiti,且延迟协议为要求对于每个用户I/O,都满足Latencyi(k)≤Limiti;定义Violatei为违反延迟协议的用户I/O所占比率:
Figure FDF0000014592300000041
如果在周期Pi内发生系统拥塞或者Violatei>δ,δ称为松弛因子,判断负载为重载,否则,则判为轻载。
8.根据权利要求7所述的基于纠删码的存储节点,其特征在于,所述处理器还用于:
对于本存储节点存在故障数据块的各条带,构建至少一个待重构队列,所述待重构队列中记录条带标识信息,每个待重构队列对应的各条带具有相同的故障数据块数量;
对于达到所述启动故障恢复阈值的待重构队列,根据待重构队列对应的各条带具有的故障数据块数量从大到小依次选择待重构队列,对选择的待重构队列中的条带分别启动故障恢复。
CN201610495313.8A 2016-06-29 2016-06-29 一种基于纠删码的存储数据重构方法和装置、存储节点 Active CN107544862B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201610495313.8A CN107544862B (zh) 2016-06-29 2016-06-29 一种基于纠删码的存储数据重构方法和装置、存储节点
PCT/CN2017/088477 WO2018001110A1 (zh) 2016-06-29 2017-06-15 一种基于纠删码的存储数据重构方法和装置、存储节点

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610495313.8A CN107544862B (zh) 2016-06-29 2016-06-29 一种基于纠删码的存储数据重构方法和装置、存储节点

Publications (2)

Publication Number Publication Date
CN107544862A CN107544862A (zh) 2018-01-05
CN107544862B true CN107544862B (zh) 2022-03-25

Family

ID=60786768

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610495313.8A Active CN107544862B (zh) 2016-06-29 2016-06-29 一种基于纠删码的存储数据重构方法和装置、存储节点

Country Status (2)

Country Link
CN (1) CN107544862B (zh)
WO (1) WO2018001110A1 (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108804039B (zh) * 2018-06-04 2021-01-29 平安科技(深圳)有限公司 自适应的数据恢复流控方法、装置、电子设备及存储介质
CN108959399B (zh) * 2018-06-04 2022-07-15 平安科技(深圳)有限公司 分布式数据删除流控方法、装置、电子设备及存储介质
CN108763107B (zh) * 2018-06-04 2022-03-01 平安科技(深圳)有限公司 后台写盘流控方法、装置、电子设备及存储介质
CN110865901B (zh) * 2018-08-28 2021-05-04 华为技术有限公司 组建ec条带的方法和装置
CN110874284B (zh) * 2018-09-03 2024-03-22 阿里巴巴集团控股有限公司 数据处理的方法和装置
CN109213637B (zh) * 2018-11-09 2022-03-04 浪潮电子信息产业股份有限公司 分布式文件系统集群节点的数据恢复方法、装置及介质
CN111506450B (zh) * 2019-01-31 2024-01-02 伊姆西Ip控股有限责任公司 用于数据处理的方法、设备和计算机程序产品
CN110597655B (zh) * 2019-06-26 2023-04-28 云链网科技(广东)有限公司 迁移和基于纠删码的重构相耦合快速预知修复方法及装置
CN110568993B (zh) * 2019-08-06 2022-04-12 新华三技术有限公司成都分公司 一种数据更新方法及相关装置
CN111176900A (zh) * 2019-12-30 2020-05-19 浪潮电子信息产业股份有限公司 一种分布式存储系统及其数据恢复方法、装置和介质
CN111475329B (zh) * 2020-02-25 2023-07-18 成都信息工程大学 一种大数据应用平台下降低预测式纠删码修复的方法及装置
CN111400083B (zh) * 2020-03-17 2024-02-23 上海七牛信息技术有限公司 数据存储方法及系统、存储介质
CN111614720B (zh) * 2020-04-13 2022-02-18 厦门大学 针对集群存储系统单点失效修复的跨集群流量优化方法
CN111581020B (zh) * 2020-04-22 2024-03-19 上海天玑科技股份有限公司 一种分布式块存储系统中数据恢复的方法和装置
CN111625394B (zh) * 2020-05-27 2023-03-21 成都信息工程大学 基于纠删码的数据恢复方法、装置、设备及存储介质
CN111679793B (zh) * 2020-06-16 2023-03-14 成都信息工程大学 一种基于star码的单盘故障快速恢复方法
CN111917823B (zh) * 2020-06-17 2022-02-18 烽火通信科技股份有限公司 一种基于分布式存储Ceph的数据重构方法与装置
US11182249B1 (en) * 2020-06-24 2021-11-23 International Business Machines Corporation Block ID encoding in an erasure coded storage system
CN112799882A (zh) * 2021-02-08 2021-05-14 上海交通大学 一种基于图算法的文件感知恢复方法及装置
CN112783688B (zh) * 2021-02-10 2022-06-03 上海交通大学 一种基于可用分区级的纠删码数据恢复方法及装置
CN113205836A (zh) * 2021-03-26 2021-08-03 重庆冷存科技有限公司 基于纠删码的冷数据重构系统及其方法
CN113190384B (zh) * 2021-05-21 2022-07-22 重庆紫光华山智安科技有限公司 基于纠删码的数据恢复控制方法、装置、设备及介质
CN113504875B (zh) * 2021-06-24 2023-08-01 中国科学院计算技术研究所 一种基于多级调度的纠删码系统恢复方法及系统
CN114415970B (zh) * 2022-03-25 2022-06-17 北京金山云网络技术有限公司 分布式存储系统的磁盘故障处理方法、装置及服务器
CN115657965B (zh) * 2022-11-16 2023-04-07 苏州浪潮智能科技有限公司 一种元数据的配置方法、装置及介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103577274A (zh) * 2012-07-31 2014-02-12 国际商业机器公司 管理存储器阵列的方法和装置
US8683296B2 (en) * 2011-12-30 2014-03-25 Streamscale, Inc. Accelerated erasure coding system and method
CN103955343A (zh) * 2014-04-16 2014-07-30 华中科技大学 一种基于i/o流水线的失效节点数据重构优化方法
CN104881370A (zh) * 2015-05-11 2015-09-02 中国人民解放军国防科学技术大学 协同使用纠删码和纠错码的可靠闪存存储系统构建方法
TW201606541A (zh) * 2014-07-09 2016-02-16 高通公司 用於使用流動分散式儲存來可靠地儲存資料的系統和方法(一)
WO2016093797A1 (en) * 2014-12-09 2016-06-16 Hitachi Data Systems Corporation A system and method for providing thin-provisioned block storage with multiple data protection classes
US9495246B2 (en) * 2013-01-21 2016-11-15 Kaminario Technologies Ltd. Raid erasure code applied to partitioned stripe

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6993701B2 (en) * 2001-12-28 2006-01-31 Network Appliance, Inc. Row-diagonal parity technique for enabling efficient recovery from double failures in a storage array
JP2006171957A (ja) * 2004-12-14 2006-06-29 Fujitsu Ltd ストレージ制御装置および方法
US9026748B2 (en) * 2011-01-11 2015-05-05 Hewlett-Packard Development Company, L.P. Concurrent request scheduling
CN103207761A (zh) * 2013-04-17 2013-07-17 浪潮(北京)电子信息产业有限公司 一种raid5系统热备盘的数据备份方法和重构方法
CN104391759B (zh) * 2014-11-11 2017-06-13 华中科技大学 一种纠删码存储中负载感知的数据归档方法
CN104935481B (zh) * 2015-06-24 2018-03-09 华中科技大学 一种分布式存储下基于冗余机制的数据恢复方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8683296B2 (en) * 2011-12-30 2014-03-25 Streamscale, Inc. Accelerated erasure coding system and method
CN103577274A (zh) * 2012-07-31 2014-02-12 国际商业机器公司 管理存储器阵列的方法和装置
US9495246B2 (en) * 2013-01-21 2016-11-15 Kaminario Technologies Ltd. Raid erasure code applied to partitioned stripe
CN103955343A (zh) * 2014-04-16 2014-07-30 华中科技大学 一种基于i/o流水线的失效节点数据重构优化方法
TW201606541A (zh) * 2014-07-09 2016-02-16 高通公司 用於使用流動分散式儲存來可靠地儲存資料的系統和方法(一)
WO2016093797A1 (en) * 2014-12-09 2016-06-16 Hitachi Data Systems Corporation A system and method for providing thin-provisioned block storage with multiple data protection classes
CN104881370A (zh) * 2015-05-11 2015-09-02 中国人民解放军国防科学技术大学 协同使用纠删码和纠错码的可靠闪存存储系统构建方法

Also Published As

Publication number Publication date
CN107544862A (zh) 2018-01-05
WO2018001110A1 (zh) 2018-01-04

Similar Documents

Publication Publication Date Title
CN107544862B (zh) 一种基于纠删码的存储数据重构方法和装置、存储节点
US11716385B2 (en) Utilizing cloud-based storage systems to support synchronous replication of a dataset
US11086555B1 (en) Synchronously replicating datasets
US11237927B1 (en) Resolving disruptions between storage systems replicating a dataset
CN107807794B (zh) 一种数据存储方法和装置
US9195392B2 (en) Distributed storage method, apparatus, and system
US9846540B1 (en) Data durability using un-encoded copies and encoded combinations
US9773015B2 (en) Dynamically varying the number of database replicas
US11442825B2 (en) Establishing a synchronous replication relationship between two or more storage systems
US9703504B2 (en) Storage system, recording medium storing data rebalancing program, and data rebalancing method
CN108540315B (zh) 分布式存储系统、方法和装置
CN103763383A (zh) 一体化云存储系统及其存储方法
CN107422989B (zh) 一种Server SAN系统多副本读取方法及存储系统
JP6671708B2 (ja) バックアップリストアシステム及びバックアップリストア方法
Akash et al. Rapid: A fast data update protocol in erasure coded storage systems for big data
US10241878B2 (en) System and method of data allocation providing increased reliability of storage
CN113312211A (zh) 一种确保分布式学习系统的高可用性方法
US20090276598A1 (en) Method and system for capacity-balancing cells of a storage system
US20230353635A1 (en) Replication Utilizing Cloud-Based Storage Systems
CN117032566A (zh) 一种数据自分类异构分布式存储方法及系统
CN115202581A (zh) 一种视频流数据的存储方法、装置以及介质
CN115550274A (zh) 一种数据流量控制方法及相关装置
CN103095767A (zh) 分布式缓存系统及基于分布式缓存系统的数据重构方法
CN109542353A (zh) 一种面向广域分布式存储系统的一致性算法
Yang et al. Replication for Global Data Plane

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
GR01 Patent grant
GR01 Patent grant