一种纠删码RAID的数据一致性保障方法及系统与流程

文档序号:11918004阅读:693来源:国知局
一种纠删码RAID的数据一致性保障方法及系统与流程

本发明涉及计算机存储领域,特别涉及一种纠删码RAID的数据一致性保障方法及系统。



背景技术:

RAID(独立冗余磁盘阵列)技术是一种提供增强冗余、容量和存储性能的存储方法,有着较强的可管理性、可靠性和可用性。通过冗余计算,RAID技术能够在满足可靠性要求的前提下降低系统的容量开销。RAID技术作为基础存储技术之一,在过去二十余年中有效地保障了用户数据的可靠性。多副本和纠删码技术是RAID系统常用的可靠性保障技术,多副本技术导致系统存储空间利用率过低,带来高存储成本。而纠删码技术相对于多副本技术,可在保证数据可用性和可靠性的前提下大幅提升存储空间利用率,因此已成为存储技术的发展趋势。

纠删码(Erasure Code,EC)是一种数据保护方法,它将数据分割成片段,把冗余数据块扩展、编码,并将其存储在不同的物理位置。基本原理为向数据中加入冗余信息,增加校验位,使得数据损坏后可以通过校验信息进行数据的恢复。使用数据盘n块、校验码盘m块组建RS-Code的RAID存储系统,系统可以容忍小于等于m块的磁盘同时损坏(坏磁盘数<=校验码盘数),并能够保证数据的完整性。与副本技术相比,纠删码技术极大地提高了磁盘阵列的存储效率,并且只引入了少量的额外能耗开销。

随着存储数据量的飞速增长,为减少数据冗余代价并保证数据的可用性和可靠性,纠删码技术成为了存储系统发展的热点。但纠删码存储系统的写性能表现不佳,尤其是对于小数据写的情况。纠删码系统的条带化读-修改-写策略会将小写操作转化为一系列的读写操作组合,导致频繁的磁头抖动,使得纠删码系统的小写性能极低。如图示1,为三个数据盘加两个校验盘组成的3+2纠删码系统(即RAID6)的数据写入过程。由于条带化RAID数据块间存在紧耦合问题,当用户写D1块时,RAID6将先读取D2和D3块的数据至内存,然后在内存中计算新校验P’和Q’,最后将新数据D1’、新校验P’和Q’写入磁盘,完成整个写入过程。可以看出,一个用户的写操作导致了多个磁盘的读写操作,使得RAID6的写性能低下。

根据纠删码系统的工作原理和特点,可知,纠删码的数据更新过程涉及到多个数据和校验设备,且包含一系列的异步读写操作,即纠删码的数据更新过程本身不是原子操作。在纠删码系统中,每次数据的更新都需要同时更新校验,以达到数据和校验一致的目的。这样才能保证在故障后,能通过校验和剩余数据将丢失的数据恢复出来。若在纠删码更新的过程中发生故障中断,那么数据和校验很可能不一致,这种数据更新时故障导致的数据不一致问题又被称为Write Hole问题。

Write Hole问题的经典场景为盘阵降级后发生写更新掉电。以RAID6为例,若在盘阵降级的情况下发生写更新掉电,将可能出现Write Hole问题。如图2所示,RAID6已写入新数据D1’而未写入新数据D2’和新校验P’、Q’。此时,由新数据、旧校验组成的RAID6条带数据已经不一致。

对于这样的一种场景,RAID6在重新恢复并开始接受用户请求后,将无法保证数据的正确性。如图3,用户发起对坏盘D3的数据读请求,此时RAID6将读取所有剩余的数据和校验信息来计算出D3数据,然而此时条带数据已经不一致,将会计算出错误的D3数据返回给用户。这个错误的D3数据,既不为旧版本D3,也不为新版本D3,而是旧数据和新校验计算出来的无意义的比特序列。这样,Write Hole问题导致纠删码系统丢失了正确性和可靠性。

数据一致性是纠删码存储系统的本质属性,保证了数据的可靠性和可用性。Write Hole导致纠删码系统丢失数据一致性,完全规避Write Hole问题成为了纠删码系统亟待改进的重大问题。

基于上述分析,本发明提出AWR(After Write Remapping)事务存储模型,通过保证纠删码RAID系统数据更新过程的原子性和持久性,来保证纠删码RAID数据的一致性。



技术实现要素:

为解决以上技术问题,本发明提出一种纠删码RAID的数据一致性保障方法及系统。

本发明提出一种纠删码RAID的数据一致性保障方法,包括:

步骤1,当有新数据写入时,修改版本设备中各设备的数据映射表,并生成事务日志表,所述版本设备中各设备进行异步下刷操作,完成后,清除所述事务日志表,其中所述版本设备由新数据卷与旧数据卷构成;

步骤2,将所述新数据及与其相对应的新校验信息经所述版本设备转发并写入新数据卷,当所述新数据与所述新校验信息都完整写入后,再触发所述步骤1,将所述新数据与所述新校验信息写入所述旧数据卷。

写入所述新数据时,首先临时存储在所述新数据卷,所述新数据的最终数据存储于所述旧数据卷中。

所述步骤2包括:所述新数据与所述新校验信息经由所述版本设备持久化到所述新数据卷,并修改所述新数据卷中条带状态为提交完成状态。

所述新数据卷与所述旧数据卷各自组成一致性维护的条带结构。

本发明还提出一种纠删码RAID的数据一致性保障系统,包括:

重映射模块,用于当有新数据写入时,修改版本设备中各设备的数据映射表,并生成事务日志表,所述版本设备中各设备进行异步下刷操作,完成后,清除所述事务日志表,其中所述版本设备由新数据卷与旧数据卷构成;

纠删码模块,用于将所述新数据及与其相对应的新校验信息经所述版本设备转发并写入新数据卷,当所述新数据与所述新校验信息都完整写入后,再触发所述重映射模块,将所述新数据与所述新校验信息写入所述旧数据卷。

写入所述新数据时,首先临时存储在所述新数据卷,所述新数据的最终数据存储于所述旧数据卷中。

所述纠删码模块包括:所述新数据与所述新校验信息经由所述版本设备持久化到所述新数据卷,并修改所述新数据卷中条带状态为提交完成状态。

所述新数据卷与所述旧数据卷各自组成一致性维护的条带结构。

由以上方案可知,本发明的优点在于:

本发明提出了“写后重映射”存储模型(After Write Remapping,AWR)和事务实现方法,保证了纠删码数据的一致性。AWR模型为纠删码数据的更新过程提供原子性和持久性,采用数据异地更新和原子重映射机制保证了更新过程中数据的一致性。

附图说明

图1为RAID6写入过程图;

图2为Write Hole问题经典场景图;

图3为纠删码条带丢失一致性后的读错误图;

图4为版本设备结构图;

图5为remap日志事务及元数据异步下刷机制图;

图6为AWR模型纠删码结构图;

图7为条带状态位图及含义图;

图8为BRD、ARD新旧版本结构图;

图9为AWR模型数据更新流程图。

具体实施方式

下面给出本发明的具体实施方式,结合附图对本发明做出了详细描述,本发明包括高效remap机制和AWR事务模型两个部分。

(一)高效remap机制

分析MD-RAID6系统中的一致性问题原因可以得出结论,MD-RAID6在不能保证一致的新数据、校验信息都已下盘的情况下就覆盖了一致的旧数据、校验信息,导致条带处于新旧数据混合的中间阶段,丢失了数据的一致性。

针对这个问题,本发明设计了由新旧设备组成的版本设备并实现了版本设备间无数据拷贝的高效迁移操作。版本设备由新数据卷BRD(Before Remap Device)和旧数据卷ARD(After Remap Device)组建而成,版本设备结构如图示4所示,新数据的写入均落于BRD设备,BRD设备占用的物理空间很小,仅作为数据更新过程的临时存放位置,最终的数据均存储于ARD设备中,remap操作实现了数据从BRD设备至ARD设备的高效迁移,其核心为仅修改设备中地址的映射信息,从而达到数据迁移的目的,而不发生任何实际的数据拷贝过程,remap过程涉及到两个设备数据映射表的修改,单纯的设备间独立修改各自的元数据并非原子操作,为此,版本设备还为remap机制还添加了事务日志和异步元数据写入的优化工作,如图示5,在完成记录remap日志和修改缓存中映射表项后,即可认为remap成功,此后,数据卷BRD和旧数据卷ARD各自完成元数据的异步下刷工作,最后,再通知日志事务设备清除日志,完成整个remap过程,这样一来,日志事务保证了整个remap过程的原子性,即使过程中发生中断也能够根据日志信息将映射表回滚到一个正确的状态,同时,元数据的异步下刷机制使得remap过程开销仅为记录日志开销和内存映射表项的修改开销,进一步减少了remap操作开销。

(二)AWR事务结构及工作流程

RAID6中新数据直接覆盖旧数据的做法,最终将导致数据的一致性问题,针对此问题,AWR事务存储模型提出了三点原则:

1、数据和校验的更新采用非原位更新方式,新数据和校验信息固化于新的物理位置;

2、新的数据和校验信息均固化并一致后,需要替换旧的数据和校验信息;

3、新旧数据校验替换的过程需保证为原子操作,或者在发生故障时可以根据相关信息进行回滚,最终能够将数据校验恢复到一个一致的状态。

根据这些原则,本发明构建了AWR模型依赖的纠删码结构,如图示6所示,在这个结构中,由新数据卷BRD和旧数据卷ARD组成版本设备WR(Write and Remap),再由WR设备组成纠删码设备。

发生数据写时,新校验信息和新数据经WR设备转发而写入BRD设备,当新数据和校验信息都完整写入后,再触发版本设备的remap流程,最终将一致的数据及校验信息都存储于ARD设备,也就是说,BRD、ARD设备各自组成了一致性维护的条带结构,新旧状态中任意一个达到一致都能保证条带数据的一致性,如图示7所示。

基于AWR模型的纠删码结构,本发明设计了AWR存储模型的两阶段写提交协议来保证新旧数据替换时的数据一致性。

两阶段写的提交协议将纠删码的数据更新流程划分为了两个阶段,第一个阶段为write阶段,负责将新数据及新校验写入BRD设备;第二个阶段为remap阶段,负责将BRD中一致的数据remap至ARD设备,为了标志条带的数据状态,两阶段提交协议为每个纠删码条带引入了两个位的状态位图,位图在仅在内存中保存,无需固化,代表的含义如图示8所示。

详细的数据更新流程如图示9所示,即

write阶段:

(1)纠删码模块计算校验,下发数据和校验盘的写请求;

(2)新数据和新校验信息经由WR设备持久化于BRD设备;

(3)新数据和新校验信息写完成,修改新数据卷的条带状态为COMMITTED(提交完成状态);

remap阶段:

(4)纠删码模块对条带中的数据盘发送remap操作;

(5)数据盘remap完成后,发送对条带中校验盘的remap操作;

(6)校验盘remap操作完成,修改条带状态为NORMAL(正常状态)。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1