一种基于纠删码缓存的重构优化方法

文档序号:6544092阅读:182来源:国知局
一种基于纠删码缓存的重构优化方法
【专利摘要】本发明公开了一种基于纠删码缓存的重构优化方法,包括:失效数据缓存过程,包括:接收客户端写失效数据节点的客户端请求记录,将客户端请求记录写入由集群中存活节点预分配内存构成的纠删码缓存区中的数据区,根据纠删码缓存区中数据区的原有数据和新写入的客户端请求记录,更新纠删码缓存区中的校验区,向客户端返回写失效数据节点完成;以及缓存数据迁移过程,包括:读取纠删码缓存区中的一条客户端请求记录,从失效节点对应的替换节点中数据偏移地址为offset的位置读取数据,将客户端请求记录对应的新数据newdata写入替换节点中写数据偏移地址为offset的位置。本发明能够提高失效数据节点的重构性能,并能降低客户端失效写的响应时间。
【专利说明】一种基于纠删码缓存的重构优化方法
【技术领域】
[0001]本发明属于计算机存储领域,更具体地,涉及一种基于纠删码缓存的重构优化方法。
【背景技术】
[0002]纠删码集群存储按照纠删编码方式将多个存储节点进行连接,构成具有一定容错能力的存储系统。构成纠删码集群存储的多个存储节点在逻辑上可以看成是一个大的存储池,各个节点同时工作,提高I/o并行性。由于采用了纠删编码算法,在一定数量的存储节点失效的情况下,可以解码出失效节点上数据,达到容错的目的。一般地,数据恢复操作和客户端I/o相互影响。一方面,在丢失数据恢复的过程中,集群存储的读写性能将降低;另一方面,相对于离线重构模式,在线重构的时间也将增加,原因在于客户端I/o和重构进程双方对磁盘、网络和内存等资源的竞争。另外,研究表明,客户端负载强度对磁盘可靠性存在影响,即当一个磁盘失效后,I/o访问更多地集中到其他存活磁盘上,使得这些存活磁盘的负载强度增加,导致磁盘失效概率增大。同理地,在高负载强度的数据重构过程中,存活磁盘发生失效的概率将进一步提高。
[0003]如图1所示,在现有(k+r,k)纠删码存储集群中,含k个数据节点,r个校验节点。集群内数据分布示意图如图2所示。传统纠删码存储集群中的写失效过程存在以下问题:首先,写失效数据节点过程与失效数据重构过程同时进行,两个过程之间相互竞争网络带宽、磁盘、内存等资源,重构时间随之增加,从而降低了系统可靠性;此外,客户端的写请求涉及失效数据恢复、新数据写入,以及校验数据更新三方面操作,因此客户端写请求的响应时间也会增大。

【发明内容】

[0004]针对现有技术的以上缺陷或改进需求,本发明提供了一种基于纠删码缓存的重构优化方法,其不仅能够保证失效数据节点的重构性能,而且能降低客户端失效写的响应时间。
[0005]为实现上述目的,按照本发明的一个方面,提供了一种基于纠删码缓存的重构优化方法,包括:
[0006](I)失效数据缓存过程,包括如下步骤:
[0007](1.1)接收客户端写失效数据节点的客户端请求记录,其中,该客户端请求记录包括写数据节点编号node、写数据偏移地址offset和写入的新数据newdata ;
[0008](1.2)将客户端请求记录写入由集群中存活节点预分配内存构成的纠删码缓存区中的数据区;
[0009](1.3)根据纠删码缓存区中数据区的原有数据和新写入的客户端请求记录,并利用局部写机制更新纠删码缓存区中的校验区;
[0010](1.4)向客户端返回写失效数据节点完成;[0011](2)缓存数据迁移过程,包括如下步骤:
[0012](2.1)读取纠删码缓存区中的一条客户端请求记录;
[0013](2.2)从失效节点对应的替换节点中数据偏移地址为offset的位置读取数据;
[0014](2.3)将客户端请求记录对应的新数据newdata写入替换节点中写数据偏移地址为offset的位置;
[0015](2.4)将步骤(2.2)和(2.3)中的数据发送至集群中的所有校验节点,由此完成校验节点更新;
[0016](2.5)对于纠删码缓存区中剩余的客户端请求记录,重复上述步骤(2.2)到(2.4),直到其被全部处理完毕为止。
[0017]优选地,该纠删码缓存区是在集群的运行过程中,根据动态选取的k’+r’个存活节点的预分配内存构成,其包括偏移量baseoffset和缓存区大小size,其中k’是集群中存活节点预分配内存构成的纠删码缓存区中数据节点的个数,r’是集群存活节点预分配内存构成的纠删码缓存区中校验节点的个数。
[0018]优选地,该纠删码缓存区中数据区的大小为k’ *size。
[0019]优选地,该纠删码缓存区中校验区的大小是r’ *size。
[0020]优选地,所构成的纠删码缓存区是RS (k’ +r’,k’)缓存区。
[0021]总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
[0022]1、本发明的方法在处理客户端写失效数据节点的数据时,由于接收客户端写失效数据节点的客户端请求记录、将客户端请求记录写入由存活节点预分配内存构成的纠删码缓存区中的数据区、并根据纠删码缓存区中数据区的原有数据和新写入的客户端请求记录并利用局部写机制更新纠删码缓存区中的校验区,由预分配内存构成的RS纠删码缓存区能够提高客户端写失效数据节点的数据可靠性。
[0023]2、本发明的方法在处理客户端写失效数据节点数据时,将位于失效数据节点的客户端数据缓存到纠删码缓存区后,客户端请求立即返回,避免了从替换节点完成客户端请求,缩短了客户端请求的响应时间。
[0024]3、本发明的方法将失效数据缓存过程和数据迁移过程分开处理,减少了前台客户端I/o操作和后台重构请求对内存、磁盘、网络带宽等资源的竞争,确保了重构I/O和客户端请求I/o之间的相互独立,从整体上优化重构性能和客户端响应时间。
【专利附图】

【附图说明】
[0025]图1是现有(k+r,k)纠删码存储集群示意图。
[0026]图2是现有存储集群存活节点预分配内存纠删码缓冲区数据分块示意图。
[0027]图3是本发明存储集群失效节点写数据示意图。
[0028]图4是本发明存储集群失效数据缓存过程流程图。
[0029]图5是本发明存储集群缓存数据迁移过程流程图。
[0030]图6是RS (9,6)编码实施示例图。
【具体实施方式】[0031]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0032]以下首先就本发明的技术术语进行解释和说明:
[0033]预分配缓冲区:预先在节点的内存中申请固定大小的连续内存,用以临时保存数据。在本发明中,我们使用存活节点的预分配内存,缓冲客户端写入失效节点的请求记录。在提高客户端响应速度的同时,使重构I/o和客户端请求I/O之间相互独立,从整体上优化重构性能和客户端响应时间。
[0034]局部写:在写数据节点的过程中,由于数据节点中数据分块内容的改变,根据纠删码的编码存储方式,校验节点对应位置的数据分块也要随之改变。如图1,(k+r, k)纠删码存储集群示意图所示,存储区包含k个数据节点,分别标记为DNO、DNU…、DNk-1 ;以及r个校验节点,分别标记PN0、PN1、…、PNr-1。图2为图1对应各节点的数据分块示意图,Di,j表示数据节点i中偏移位置为j*512字节处的数据块,Py表示校验节点i中偏移位置为j*512字节处的数据块。数据节点中数据块Dy、D1, P…Dk+ ^和校验节点中数据块Pq、
…、匕^,」构成一个条带。P0, Pljj^…、Prt,」存放由Dtl,^D1,」、…D1^j编码得到的校验数据。当数据块0“(0〈=i〈k)改变为Di,/时,条带中校验节点数据Pq、P1^…、Pg, j也随之发生改变。局部写机制即为,新校验数据Ptl,…、Pg,/可以由原校验数据Ρ0^.>Ρ^>…、P^j,以及数据块DyIPDi,/计算得到的一种更新方法。
[0035]偏移位置:数据分块的偏移位置为数据分块中低地址处的起始位置。如图2中存活节点预分配内存数据分块示意图所示,数据分块的大小为512字节,则Dm的偏移位置为j*512字节。纠删码集群中的数据读写最小单位为数据分块,即512字节。
[0036]编解码过程:编码过程为根据所有数据节点中特定数据分块计算出同一条带中对应位置校验节点数据分块的过程。在图2各存活节点预分配内存数据分块示意图中,若用f
表不计算过程,贝1J编码过程可以表不为f (D0j j, Dlj j,......,Dh,P — (P。,」,P1,」,......,Pf-1,
P。解码过程为编码过程的逆过程,即在存活节点(未失效的数据节点和校验节点)数量大于等于k的情况下,任意选取k个存活节点数据分块,计算出同一条带中其它节点数据分块的过程。
[0037]Reed-Solomon阵列:简称RS阵列,RS类纠删码为三大纠删码中的一种,具有很强的纠错能力,包括范德蒙码和柯西码两种编码方式。RS阵列即为使用RS类纠删码进行数据校验的存储阵列。
[0038]在本发明实施例中,选定m个存活节点,利用该m个节点的预分配内存区构成纠删码缓存阵列,用于缓存客户端的请求记录。总体思路为:将写入失效数据节点的数据缓存到由存活节点预分配的内存组成的纠删码缓存区(以下称为纠删码缓存区)中,以保障缓存数据的可靠性。本发明将缓存客户端请求到纠删码缓存区的过程分为失效数据缓存过程和缓存数据迁移过程两部分。两过程分开处理,降低二者对磁盘、内存、网络带宽等资源的竞争,在加速后台重构过程的同时,优化前台客户端访问性能。
[0039]如图3所示,为本发明纠删码存储集群失效节点写数据示意图。其中DNO数据节点为失效数据节点,DN0’为DNO的替换节点。深色部分为内存区域,浅色部分为磁盘区域。存活节点预分配内存区(深色区域)构成纠删码缓存区,该预分配内存区的起始偏移地址为baseoffset。其中失效数据恢复过程只标明了纠删码缓存中数据区的用户请求记录的写入,校验器的更新未显示表示。
[0040]对于失效数据缓存过程,存储集群将客户端请求的写记录保存至纠删码缓存区之后,客户端请求立即返回,并继续响应其它客户端请求。客户端写请求记录是写数据的具体信息,包括写数据节点编号node,写数据偏移地址offset,和写入的新数据newdata。以下称客户端写数据的具体信息为一条客户端请求记录。
[0041]本发明基于纠删码缓存的重构优化方法包括失效数据缓存过程和缓存数据迁移过程,如图4所示,失效数据缓存过程包括如下步骤:
[0042](Al)接收客户端写失效数据节点的客户端请求记录,其中,该客户端请求记录包括写数据节点编号node、写数据偏移地址offset和写入的新数据newdata。
[0043]例如,客户端请求记录为〈2,3,1, buffer〉,则表示从客户端缓存buffer中取出1*512字节的数据,并从集群的写数据节点编号为2的数据节点中写数据偏移地址为3*512字节的位置开始写入。
[0044](A2)将客户端请求记录写入由集群中存活节点预分配内存构成的纠删码缓存区中的数据区;其中该纠删码缓存区是在集群的运行过程中,根据需要动态的选取k’ +r’个(其中k’是集群中存活节点预分配内存构成的纠删码缓存区中数据节点的个数,r’是集群存活节点预分配内存构成的纠删码缓存区中校验节点的个数)存活节点的预分配内存构成,其包括偏移量baseoffset和缓存区大小size,在该纠删码缓存区中数据区的大小k’*size,校验区的大小是r’*size在本实施方式中,所构成的纠删码缓存区是RS (k’+r’,k’ )缓存区,当r’ =1时,即构成RAID5缓冲区。
[0045](A3)根据纠删码缓存区中数据区的原有数据和新写入的客户端请求记录,并利用局部写机制更新纠删码缓存区中的校验区;
[0046](A4)向客户端返回写失效数据节点完成,过程结束。
[0047]如图5所示,缓存数据迁移过程包括如下步骤:
[0048](BI)读取纠删码缓存区中的一条客户端请求记录;
[0049](B2)从失效节点对应的替换节点中写数据偏移地址为offset的位置读取数据;
[0050](B3)将客户端请求记录对应的新数据newdata写入替换节点中写数据偏移地址为offset的位置;
[0051](B4)将步骤(B2)和(B3)中的数据发送至集群中的所有校验节点,由此完成校验节点更新;
[0052](B5)对于纠删码缓存区中剩余的客户端请求记录,重复上述步骤(B2)到(B4),直到其被全部处理完毕为止。
[0053]如图6所示,其是本发明重构优化方法的一个实例,其中DN0,DNl, DN2, DN3, DN4,DN5为数据节点,DNO为失效数据节点,DNO'为DNO的替换节点,ΡΝ0,PNl, PN2为校验节点。图中a,b,c,d,e, f,g,h,i,j分别为各个节点偏移位置为3*512处开始1*512字节大小的数据分块。图中A,B,C,D,E为由DN4, DN5, ΡΝ0, PNl, PN2预分配内存区构成的纠删码缓存区RAID (5,3)。客户端发出一条〈0,3,1,buffer〉的应用访问请求。
[0054]本发明的操作过程为:首先,接收客户端写失效数据节点的客户端请求记录〈0,3,1, buffer〉,然后将客户端请求记录写入纠删码缓存区中的数据区,如图6位置A处。再根据纠删码缓存区中数据区的原有数据和新写入的客户端请求记录并利用局部写机制更新纠删码缓存区中的校验区,即根据A中写入前后的数据更新校验区D、E。向客户端返回写失效数据节点完成。其次,读取纠删码缓存区中的一条客户端请求记录〈O, 3,1,buffer〉,然后从失效节点对应的替换节点中写数据偏移地址为offset的位置读取数据,即读取a中数据olddata。再将客户端请求记录对应的新数据newdata写入替换节点中写数据偏移地址为offset的位置,即将buffer中1*512字节的数据写入位置a。再将olddata和newdata发送至所有校验节点PO、P1、P2,各校验节点完成更新。
[0055]总而言之,本发明具有以下的有益效果:
[0056]1、本发明的方法在处理客户端写失效数据节点的数据时,由于接收客户端写失效数据节点的客户端请求记录、将客户端请求记录写入由存活节点预分配内存构成的纠删码缓存区中的数据区、并根据纠删码缓存区中数据区的原有数据和新写入的客户端请求记录并利用局部写机制更新纠删码缓存区中的校验区,由预分配内存构成的RS纠删码缓存区能够提高客户端写失效数据节点的数据可靠性。
[0057]2、本发明的方法在处理客户端写失效数据节点数据时,将位于失效数据节点的客户端数据缓存到纠删码缓存区后,客户端请求立即返回,避免了从替换节点完成客户端请求,缩短了客户端请求的响应时间。
[0058]3、本发明的方法将失效数据缓存过程和数据迁移过程分开处理,减少了前台客户端I/o操作和后台重构请求对内存、磁盘、网络带宽等资源的竞争,确保了重构I/O和客户端请求I/o之间的相互独立,从整体上优化重构性能和客户端响应时间。
[0059]本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种基于纠删码缓存的重构优化方法,其特征在于,包括: (1)失效数据缓存过程,包括如下步骤: (1.1)接收客户端写失效数据节点的客户端请求记录,其中,该客户端请求记录包括写数据节点编号node、写数据偏移地址offset和写入的新数据newdata ; (1.2)将客户端请求记录写入由集群中存活节点预分配内存构成的纠删码缓存区中的数据区; (1.3)根据纠删码缓存区中数据区的原有数据和新写入的客户端请求记录,并利用局部写机制更新纠删码缓存区中的校验区; (1.4)向客户端返回写失效数据节点完成; (2)缓存数据迁移过程,包括如下步骤: (2.1)读取纠删码缓存区中的一条客户端请求记录; (2.2)从失效节点对应的替换节点中数据偏移地址为offset的位置读取数据; (2.3)将客户端请求记录对应的新数据newdata写入替换节点中写数据偏移地址为offset的位置; (2.4)将步骤(2.2)和(2.3)中的数据发送至集群中的所有校验节点,由此完成校验节点更新; (2.5)对于纠删码缓存区中剩余的客户端请求记录,重复上述步骤(2.2)到(2.4),直到其被全部处理完毕为止。
2.根据权利要求1所述的重构优化方法,其特征在于,该纠删码缓存区是在集群的运行过程中,根据需要动态的选取的k’ +r’个存活节点的预分配内存构成,其包括偏移量baseoffset和缓存区大小size,其中k’是集群中存活节点预分配内存构成的纠删码缓存区中数据节点的个数,r’是集群存活节点预分配内存构成的纠删码缓存区中校验节点的个数。
3.根据权利要求1所述的重构优化方法,其特征在于,该纠删码缓存区中数据区的大小为 k’ *size。
4.根据权利要求1所述的重构优化方法,其特征在于,该纠删码缓存区中校验区的大小是 r’ *size。
5.根据权利要求1至4中任意一项所述的重构优化方法,其特征在于,所构成的纠删码缓存区是RAID5 (k,+r’,k’)缓存区,或其它RS阵列。
【文档编号】G06F12/08GK103914402SQ201410154741
【公开日】2014年7月9日 申请日期:2014年4月17日 优先权日:2014年4月17日
【发明者】黄建忠, 曹强, 谢长生, 王艳群, 梁先海 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1