LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资讯 > MEMO分散式云存储系统的风险感知数据失效确认策略(RAFI)

MEMO分散式云存储系统的风险感知数据失效确认策略(RAFI)

2021-09-03 Memolabs 来源:区块链网络

传统的分布式存储系统故障率较高,为了容忍频繁发生的故障,现有系统采用各种冗余技术,如采用多副本技术或纠删码技术,它们的修复原理各不相同。

数据修复原理

多副本:在使用多副本技术的存储系统中,数据以固定长度的数据块存储,然后将数据块复制多份放置在不同的节点上,任意一个副本的不可用或丢失,都可使用剩余的可用副本进行修复。

纠删码:在使用纠删码技术的存储系统中,首先数据被分为固定长度的原始数据块,然后这些原始数据块会生成校验数据块,最后这些原始数据块与由它们生成的校验数据块组成了一个条带,条带是保证数据可靠性与可用性的基本单元。条带中的数据块被放置在不同的节点上,在故障发生后,当条带中有部分数据块丢失或者不可用的时候,可以用此数据块对应的条带中的可用数据块来重构丢失数据块以完成数据修复或重构不可用数据以响应服务请求,从而保障数据的可靠性、可用性以及服务能力。数据修复常用的优化方法

在分布式存储系统中,数据修复常用的优化方法有降级纠删码的修复惩罚、提高恢复率、优化恢复的调度、优化数据块放置策略以及失效检测优化五类。

1、 降级纠删码的修复惩罚

为了修复纠删码的数据,需要传输数倍于此数据量的数据,这个倍数称为修复惩罚。为了降低修复惩罚,研究人员从编码的修复入手,设计新的低修复惩罚的编码方案。

2、提高恢复率

以从编码实际运用的系统出发,研究 如何加快数据的修复,如从增大数据修复的恢复能力手,比如增大网络带宽,增加并行能力等,从而提高数据的可靠性与可用性。

3、优化恢复的调度

数据恢复的调度策略是基于条带中所含的丢失数据块的个数进行恢复调度。当条带包含的丢失数据块个数相同的时候,使用先到先服务的策略,先加入修复队列的条带,先进行服务。对于包含的丢失数据块个数不同的数据块,使用优先级策略,丢失包含丢失数据块个数越多的条带,其恢复的优先级的越高。

4、优化数据块放置策略

除了随机策略的数据块放置方式,很多新的放置策略也被提出,如有研究人员研究顺序放置策略和随机放置策略,提出了条带放置策略将小的目标聚集起来,从而提高可靠性。

5、失效检测优化

失效检测优化是指优化失效数据的检测策略,从而提高检测的准确性和降低检测时间。如有研究使用存储节点的历史信息与节点失效概率,估算系统中每个条带可用的数据块。上述五类优化方法中,失效检测是研究重点。失效数据的传统确认流程与恢复流程

1、失效确认流程

传统策略中,数据块的失效确认基于此数据块所在节点的失效确认。系统使用心跳机制来检测节点是否失效,节点每三秒钟向系统中的管理节点发送心跳信息,管理节点周期性(例如每 5 分钟)检测系统中每个节点的心跳信息。当管理节点一段时间内没有收到某节点的心跳信息的时候,管理节点确认此节点失效,将此节点标记为死亡节点。在节点记为死亡节点后,需要恢复死亡节点上面的数据块。但是,在暂时性故障期间,由于触发了不必要的恢复流程,系统可能会浪费带宽。为了减少暂时性故障后数据恢复的成本,一旦节点重新加入系统,数据块就会重新集成到系统中。由于大多数节点故障是由于节点临时宕机或者重启导致的,管理节点在丢失某数据节点的心跳超过一个给定的超时时间阈值的时候,才会将此节点记为死亡节点。

当一个节点的失效被确认后,此节点上的所有数据块的失效被确认,这些数据块的状态变为丢失。在传统的失效确认策略下,所有的数据块的失效确认与节点的失效确认共享一个超时时间阈值。

2、失效恢复流程

当数据块的状态被确认为丢失后,此数据块对应条带中的可用数据块用于恢复此数据块,从而保证条带中数据的可靠性与可用性。当一个条带中的失效数据块被确认为丢失数据块的时候,此条带称为故障条带。故障条带的恢复按照以下三个规则:

(1) 包含多个丢失数据块的条带比包含少量的丢失数据块的条带优先恢复。例如包含 2 个丢失数据块的条带比包含 1 个丢失数据块的条带先进行恢复。

(2) 包含相同数量的丢失数据块的条带按照先到先服务原则进行调度。

(3)为了加快恢复,系统根据系统中空闲节点进行并行恢复,即当系统有多个空闲节点的时候,可以并行的恢复多个故障条带。

数据失效问题的确认

上述传统失效确认策略下,包含多个丢失数据块的条带中的失效数据块的确认是基于节点失效确认的,所以包含多个丢失数据块的条带中的失效数据块的其确认时间取决于并且比通常比超时时间阈值更长。因此,包含多个丢失数据块的条带仍然面临数据不可用甚至丢失的风险。因此,一个长的超时时间阈值会极大的减少修复用网络流量,但是会造成更多的数据不可用与丢失增加数据丢失的风险,降低数据的可靠性。

为了保证数据的高可靠性与可用性,需要在故障发生后尽快开始数据的修复。但是故障可能是暂时性失效,90% 以上的节点故障的持续时间在 10 分钟内。因此,过早的修复这类失效数据会导致大量的不必要的修复流量。修复纠删码系统中的一个数据块会导致数倍于此数据块的网络流量传输,失效导致的修复流量是个极为严峻的问题。

风险感知的数据失效确认技术 RAFI

为了加快失效检测,MEMO 独创了风险感知的数据失效确认技术 RAFI,该项技术的重点是能够帮助快速确认数据失效节点。

因为传统的方案中对于条带的风险分类忽略了数据块的确认时间,即数据块从失效到被确认为丢失需要经过一段时间,在这段时间内数据块处于不可用状态。然而,此条带若再有一个可用数据块发生了失效,那么这些失效数据块就不能被直接访问,也不能被恢复,从而导致数据的不可用。若这些失效是永久性失效的,则发生了数据丢失。

因此对条带进行风险分类的时候,RAFI 不再根据条带中丢失数据块的个数,而是根据条带中失效数据块的个数进行分类,即包含的所有丢失数据块与不可用数据块的个数。例如在拥有两个校验数据块的条带中,在这个分类方法下,有两个失效数据块的条带称为高风险条带,有一个失效数据块的条带称为低风险条带。在这种情况下,有一个丢失数据块与两个不可用数据块被当作高风险条带,高风险条带会被优先处理,从而减少数据不可用与丢失的可能性。

RAFI 的核心思想是一个条带拥有越多的失效数据块,这些数据块的失效确认时间应该越短。对不同风险程度的条带中的失效数据块使用不同确认时间,对包含有多个失效数据块的高风险条带给予短的失效确认时间,对包含有少量失效数据块的低风险条带给予长的的失效确认时间。

具体说,在纠删码系统中,RAFI 加快了高风险条带中失效数据块的确认,进而加快高风险条带的修复;与此同时,延迟低风险条带中的失效数据块的确认,进而推迟低风险条带的修复,减少不必要的修复引起的网络传输流量,从而提高系统的服务能力。在高风险条带的修复过程中,条带中失效数据块的确认占据主导位置,因此 RAFI 可以很有效的加快高风险条带的修复。由于在所有需要修复的条带中,只包含少量的丢失数据块的条带占据绝大部分,因此,延迟低风险条带中的失效数据块的确认可以有效降低修复引起的网络流量。

实验结果证明,在一个 1000 节点的 RS(6, 3) 编码的存储集群中,相对于传统的数据失效确认策略,在最好的情况下,RAFI 能够在提升 11 倍可靠性并降低 45% 的不可用时间的同时,减少 28% 的修复网络流量。 在三副本系统中,相对于传统的数据失效确认策略,在最好的情况下,RAFI 可以提高 4 倍的可靠性,同时引起的额外的修复流量不会超过全部修复流量的 1%。对于纠删码系统,高的修复惩罚会导致修复流量的成倍增长,从而极大影响系统的其他服务,因此,在纠删码系统中更多关注修复流量的问题。

综上,RAFI 的好处是:

(1)可以加快高风险条带中失效数据块的确认,提高数据的可靠性与可用性;

(2)可以推迟低风险条带中的数据块的失效确认,减少修复流量,从而提高服务能力。

小结:MEMO 分散式云存储系统在多层次容错机制的基础上独创了 RAFI 技术,该项技术能让数据修复能力大大提高,进而有效提高系统的可靠性、可用性与服务能力。因此,RAFI 是 MEMO 分散式云存储的核心优势之一。

查看更多

—-

编译者/作者:Memolabs

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...