一种纠删码存储中负载感知的读优化方法

文档序号:6400213阅读:240来源:国知局
专利名称:一种纠删码存储中负载感知的读优化方法
技术领域
本发明属于计算机存储领域,更具体地,涉及一种纠删码存储中负载感知的读优化方法。
背景技术
廉价冗余磁盘阵列RAID(Redundant Array of Independent DisK)是一种将一堆磁盘通过相关的技术连接起来,构成逻辑上的空间。同时RAID可以使诸多磁盘驱动器同时传输数据,在逻辑上面这些磁盘驱动器又是被看成一个磁盘驱动器。同时对于一般的RAID来说比如RAID2、RAID3、RAID4和RAID5等都提供了相应的校验技术来进行数据的校验。通过校验技术可以保证RAID系统在某个或某些磁盘的数据出现错误的时候还可以通过校验盘的数据和其余剩余未出错盘上的数据恢复出失效数据。作为RAID码的一般化形式,纠删码也具备这种特性,如纠删码在存储集群下的应用,它能保护集群节点的数据失效,构成具有容错特性的纠删码存储集群。在传统的纠删码存储集群中读取数据的大致过程可以分为以下两步:(1)首先接收客户的访问请求,获得所请求分块数据在纠删码集群的具体位置(位于某数据节点上的具体偏移地址)。(2)根据数据节点相应的偏移地址读取出相应的分块数据,并将请求结果返回给客户。如图1所示,其为传统纠删码存储集群中的数据读过程,该过程是接收应用访问请求,直接从数据节点读取相应的分块数据返回给客户,具体不涉及对校验节点进行操作。如图2所示,其为传统纠删码存储集群中数据读的流程图。在传统纠删码存储集群中的读取数据过程中,如果各节点的负载相对比较均衡,读取各分块数据的返回时间是接近的。然而如果各节点的负载相差很大(具体表现为:从不同节点读取相应分块数据的完成时间参差不齐,相差I 2个数量级)时,传统纠删码存储集群中的读数据方法会存在以下问题:1、在纠删码存储集群中请求完成时间受限于最晚返回的分块请求,因此会导致纠删码存储集群很差的读性能,增加应用访问请求的响应时间。2、在纠删码存储集群中,此时某些节点的负载相对较轻,甚至处于空闲状态,而一些节点处于重负载状态,频繁的超重负载往往增加节点崩溃的概率,从而降低了纠删码存储集群的可靠性。

发明内容
针对现有技术的缺陷,本发明的目的在于提供一种纠删码存储中负载感知的读优化方法,其不仅能够保证在各个节点的负载相对比较均衡时,读取应用请求的分块数据与传统纠删码集群读数据方法有相同的性能,同时能够解决传统纠删码集群读数据方法在各节点负载相差很大时存在的应用访问请求的响应时间长、纠删码存储集群的可靠性低的问题。为实现上述目的,本发明提供了一种纠删码存储中负载感知的读优化方法,其是应用于纠删码存储集群中,该方法包括以下步骤:( I)初始化纠删码存储集群中所有节点的节点负载权重值为零;(2)从用户接收应用访问请求;(3)从纠删码存储集群的数据节点中任选一个数据节点;(4)判断该数据节点是否在应用访问请求操作对应的节点号内,如果是则进入步骤(5),否则转入步骤(10);(5)判断该数据节点的节点负载权重值是否大于或等于预定的阈值,若是则转入步骤(6),否则转入步骤(10);(6)将纠删码存储集群中所有节点的节点负载权重值按照从小到大的顺序进行排列;(7)读取前K个节点对应的偏移地址的分块数据,并获取读取该分块数据各自所花费的时间,并利用RS解码算法对读取的前K个节点对应的偏移地址的分块数据进行解码操作;(8)使用步骤(7)获取的前K个节点中各个节点的时间替换该节点最近M次被访问中第一次被访问的响应时间;(9)从解码后的分块数据中选取应用访问请求对应的分块数据,将该分块数据返回给用户,然后转入步骤(12);(10)读取应用访问请求指定的各个节点对应的偏移地址的分块数据,并获取应用访问请求指定的各个节点读取分块数据所花费的时间,并将分块数据返回给用户;(11)使用步骤(10)获取的各个节点的时间替换该节点最近M次被访问中第一次被访问的响应时间;(12)从用户接收下一条应用访问请求,并判断该应用访问请求是否是结束命令,如果是则过程结束,否则将纠删码存储集群中所有节点的节点负载权重值按照从小到大的顺序进行排列,从中选取节点负载权重值最大的数据节点,并返回步骤(4)。应用访问请求包括节点号、偏移、大小和跨越四个元素。阈值的取值范围是50至100毫秒。数据节点的节点负载权重值是通过计算该数据节点最近M次被访问的响应时间之和来获得,M的取值范围是5至10。通过本发明所构思的以上技术方案,与现有技术相比,本发明具有以下的有益效果:1、在各个节点负载不均衡的情况下响应时间短:由于采用了步骤(5)、步骤(6)以及步骤(7)三个步骤对负载权重值最大的节点进行调度处理,减少了该情况下的响应时间。2、提高纠删码存储集群的可靠性:由于采用了步骤(5)、步骤(6)、步骤(7)、步骤(8)和步骤(9)对负载权重值最大的节点进行调度,一定程度上平衡了各个节点的负载情况,降低了纠删码存储集群中各个节点因频繁的超负载而崩溃的概率,从而提高整个纠删码存储集群的可靠性。


图1为传统数据读示意图。
图2为传统纠删码存储集群数据读流程图。图3为纠删码存储集群中各节点的条带与分块数据示意图。图4为RS (N, K)编码的结构组成图。图5为本发明数据读示意图。图6为本发明纠删码存储中负载感知的读优化方法的流程图。图7为RS (8,5)编码应用访问请求分布图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。以下首先就本发明的技术术语进行解释和说明:节点负载权重:在本发明中以Load_weight表示,其指示节点在一段时间窗口内的负载情况,负载权重值(LoacLweight)还可以用许多状态量如CPU利用率、存储空间、I/O带宽等表征。在本发明中,用负载权重值(Load_weight)表示节点在一段时间窗口内的平均请求响应时间。Load_weight值越大表示节点的负载越重,负载权重值(Load_weight)的取值可以是任意的正数。调度层:本发明中在客户层和底层节点之间增加一调度功能模块,充当I/O调度层,其主要任务是维护纠删码存储集群中各个节点的负载权重值(LoacLweight)。分块数据和数据条带以及偏移地址:节点的分块数据表示节点中一定大小的数据块。如图3中所示的分块数据Du、Dcu…、D0,^等即为数据节点上的分块数据,校验分块P。,。、Pcu等即为校验节点上的分块数据。偏移地址表示为相对于节点首地址的偏移量。如图3中所示的0、1...η-1、η表示的离节点首地址偏移量为0*512字节、1*512字节…(η_1)*512字节、η*512字节的位置。所有节点上相同偏移地址的各个分块数据构成一个数据条带。在图3中表示为分块数据Dci^Dcu-Dtl,,这N块分块数据组成一个数据条带。如图3所示一分块数据的大小为512字节。本发明提供了一种纠删码存储中负载感知的读优化方法,其采用RS(N, K)编码,即水平Vandermondev Reed-Solomon编码,如图4所示,其中K表示存储集群中数据节点数目,N表示存储集群中节点的总数(具体表示为:存储集群中节点总数为数据节点数目与校验节点数目之和,即校验节点数目为(Ν-Κ)),对于节点数N处于重构时间考虑,节点数通常低于20,比如微软Azure存储中,参数K=12,(N-K)=4,这样总节点数为16。如果整个整个系统规模很大,则对所有节点进行分组,在分组内进行纠删码数据组织。每个分组是一个独立的纠删码集群存储系统。如图5所示,本发明方法主要在传统纠删码存储集群的数据读过程中增加一 I/O调度层(以I/o调度模块的方式呈现),该I/O调度层的主要任务是维护纠删码集群节点的节点负载权重值,并对应用访问请求进行调度。具体而言,以下的步骤(6)至(8)都是通过I/O调度模块实现的。如图6所示,本发明纠删码存储中负载感知的读优化方法是应用于纠删码存储集群中,并包括以下步骤:
( I)初始化纠删码存储集群中所有节点的节点负载权重值为零;
(2)从用户接收应用访问请求;应用访问请求包括节点号(node)、偏移(offset)、大小(size)和跨越(across)四个元素,表示为〈节点号,偏移,大小,跨越〉,各个元素的含义如下:
节点号:表示应用访问请求的各个节点中,第一个访问的节点的编号(节点的编号是从I开始标记的,如数据节点I标记为1、数据节点2标记为2、数据节点3标记为3,…,依次类推)。偏移:表示节点上的偏移地址,具体表示为在节点的具体位置读取分块数据,单位是字节(Byte)。大小:表示读取数据的大小,单位是字节。跨越:表示应用访问请求中请求操作的节点个数。举例而言,应用访问请求命令为〈1,20,40,3>,其表示从节点号为I的节点开始,连续读取节点号1、2、3三个节点,从上述节点的偏移地址20字节开始读取大小为40字节的数据。(3)从纠删码存储集群的数据节点中任选一个数据节点;(4)判断该数据节点是否在应用访问请求操作对应的节点号内,如果是则进入步骤(5),否则转入步骤(10);(5)判断该数据节点的节点负载权重值是否大于或等于预定的阈值,若是则转入步骤(6),否则转入步骤(10);该阈值的取值范围是50至100毫秒,优选为60毫秒;具体而言,数据节点的节点负载权重值是通过计算该数据节点最近M次被访问的响应时间之和来获得,M的取值范围是5至10 ;(6)将纠删码存储集群中所有节点的节点负载权重值按照从小到大的顺序进行排列;(7)读取前K个节点对应的偏移地址的分块数据,并获取读取该分块数据各自所花费的时间,并利用RS解码算法对读取的前K个节点对应的偏移地址的分块数据进行解码操作;(8)使用步骤(7)获取的前K个节点中各个节点的时间替换该节点最近M次被访问中第一次被访问的响应时间;(9)从解码后的分块数据中选取应用访问请求对应的分块数据,将该分块数据返回给用户,然后转入步骤(12);( 10)读取应用访问请求指定的各个节点对应的偏移地址的分块数据,并获取应用访问请求指定的各个节点读取分块数据所花费的时间,并将分块数据返回给用户;(11)使用步骤(10)获取的各个节点的时间替换该节点最近M次被访问中第一次被访问的响应时间;(12)从用户接收下一条应用访问请求,并判断该应用访问请求是否是结束命令,如果是则过程结束,否则将纠删码存储集群中所有节点的节点负载权重值按照从小到大的顺序进行排列,从中选取节点负载权重值最大的数据节点,并返回步骤(4)。如图7所示,其示出以RS (8,5)编码为实例的应用访问请求分布图。对图7的说明如下:图7中各个节点的偏移地址以512字节为基数。
图7中虚线以上的部分表示各个节点数据块的分布图,虚线以下部分表示当前各个节点的负载权重值(Load_weight)的情况,各个节点的负载权重值(Load_weight)通过直方图反映。图7中客户发出一条〈1,4*512,1*512,3>的应用访问请求。该应用访问请求在两种不同的读过程中的操作分别如下:(I)传统的纠删码存储集群中的操作为:如图7所示,直接从三个数据节点{数据节点1、数据节点2、数据节点3}的偏移地址为4*512字节的位置,读取大小为1*512字节的分块数据,返回给客户(具体为取附图7中a、b、c三个分块数据返回给客户)。( 2)本发明中的操作分为:第一步:根据各个节点的节点负载权重值对所有节点进行升序排列,排序结果为:数据节点2、数据节点1、冗余节点1、数据节点4、数据节点5、冗余节点2、冗余节点3、数据节点4。第二步:取节点负载权重值(Load_weight)最大的数据节点2进行判断,判断该节点是否在客户应用访问请求的节点内(客户请求访问的节点为数据节点1、数据节点2、数据节点3)。第三步:由于数据节点2的节点负载权重值大于阈值(本实例选取最佳阈值为60ms) (70ms>60ms),则进行调度处理:读取节点负载权重值值相对较小的数据节点3、数据节点4、数据节点5、冗余节点2、冗余节点3五个节点相应位置的分块数据(具体在图7中即为读取分块数据c、d、e、g、h到调度层)。第四步:利用分块数据C、d、e、g、h解码出所有数据节点的分块数据{a、b、C、d、e},然后从已解码的分块数据中选取应用访问请求所需的分块数据{a、b、c}返回给用户。到此应用访问请求执行完毕。总而言之,本发明具有以下的有益效果:1、在各个节点负载不均衡的情况下响应时间短:由于采用了步骤(5)、步骤(6)以及步骤(7)三个步骤对负载权重值最大的节点进行调度处理,减少了该情况下的响应时间。2、提高纠删码存储集群的可靠性:由于采用了步骤(5)、步骤(6)、步骤(7)、步骤
(8)和步骤(9)对负载权重值最大的节点进行调度,一定程度上平衡了各个节点的负载情况,降低了纠删码存储集群中各个节点因频繁的超负载而崩溃的概率,从而提高整个纠删码存储集群的可靠性。本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种纠删码存储中负载感知的读优化方法,其是应用于纠删码存储集群中,其特征在于,该方法包括以下步骤: (1)初始化纠删码存储集群中所有节点的节点负载权重值为零; (2)从用户接收应用访问请求; (3)从纠删码存储集群的数据节点中任选一个数据节点; (4)判断该数据节点是否在应用访问请求操作对应的节点号内,如果是则进入步骤(5),否则转入步骤(10); (5)判断该数据节点的节点负载权重值是否大于或等于预定的阈值,若是则转入步骤(6),否则转入步骤(10); (6)将纠删码存储集群中所有节点的节点负载权重值按照从小到大的顺序进行排列; (7)读取前K个节点对应的偏移地址的分块数据,并获取读取该分块数据各自所花费的时间,并利用RS解码算法对读取的前K个节点对应的偏移地址的分块数据进行解码操作; (8 )使用步骤(7 )获取的前K个节点中各个节点的时间替换该节点最近M次被访问中第一次被访问的响应时间; (9)从解码后的分块数据中选取应用访问请求对应的分块数据,将该分块数据返回给用户,然后转入步骤(12); (10)读取应用访问请求指定的各个节点对应的偏移地址的分块数据,并获取应用访问请求指定的各个节点读取分块数据所花费的时间,并将分块数据返回给用户; (11)使用步骤(10)获取的各个节点的时间替换该节点最近M次被访问中第一次被访问的响应时间; (12)从用户接收下一条应用访问请求,并判断该应用访问请求是否是结束命令,如果是则过程结束,否则将纠删码存储集群中所有节点的节点负载权重值按照从小到大的顺序进行排列,从中选取节点负载权重值最大的数据节点,并返回步骤(4)。
2.根据权利要求1所述的读优化方法,其特征在于,应用访问请求包括节点号、偏移、大小和跨越四个元素。
3.根据权利要求1所述的读优化方法,其特征在于,阈值的取值范围是50至100毫秒。
4.根据权利要求1所述的读优化方法,其特征在于,数据节点的节点负载权重值是通过计算该数据节点最近M次被访问的响应时间之和来获得,M的取值范围是5至10。
全文摘要
本发明公开了一种纠删码存储中负载感知的读优化方法,包括初始化纠删码存储集群中所有节点的节点负载权重值为零,从用户接收应用访问请求,从纠删码存储集群的数据节点中任选一个数据节点,判断该数据节点是否在应用访问请求操作对应的节点号内,如果是则判断该数据节点的节点负载权重值是否大于或等于预定的阈值,若是则将纠删码存储集群中所有节点的节点负载权重值按照从小到大的顺序进行排列,读取前K个节点对应的偏移地址的分块数据,并获取读取该分块数据各自所花费的时间,并利用RS解码算法对分块数据进行解码操作。本方法能够解决传统方法在各节点负载相差很大时存在的应用访问请求的响应时间长、纠删码存储集群的可靠性低的问题。
文档编号G06F11/14GK103176865SQ20131007728
公开日2013年6月26日 申请日期2013年3月12日 优先权日2013年3月12日
发明者黄建忠, 曹强, 谢长生, 黄思倜, 梁先海 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1