一种分布式存储系统中重构热点消除方法和装置与流程

文档序号:11154740阅读:699来源:国知局
一种分布式存储系统中重构热点消除方法和装置与制造工艺

本发明涉及存储技术领域,特别涉及一种分布式存储系统中重构热点消除方法和装置。



背景技术:

分布式存储系统是将数据分散存储在多台服务器上,利用多机的并行处理能力,提高稳定性和线性扩展能力的一种形式。它相对于以往的集中存储系统,更加注重并发处理、避免单点故障和性能瓶颈。

分布式存储系统对外是单一的IO接口,对内会包括分散的存储节点、节点间的通讯线路和各节点协同工作的管控机制。数据的存储格式虽然多样,但是原则都是增加其冗余性,典型的如RAID。通过对各个节点上直连的存储进行切片。外部数据在存储时会分散到各个节点的各个存储上,同时会依据数学公式计算出冗余性的校验数据parity,parity也会分散在各个节点。这样,针对写请求,系统能够充分利用多节点、多磁盘同时写入的优势,缩短写入所需要的时间。针对读请求,可以并发读取,并且如果部分原始数据无法访问(物理介质损坏或者所在节点不可访问),系统可以利用冗余数据来得到并修复原始数据。

当损坏的物理介质被更换或者掉线的节点重新上线之后,系统再将需要更新的数据重新写到其物理介质上,保证存储数据的正确性,也保证用户数据和校验数据的一致性。这个写入的过程叫做重构。

实际经常发生的情况是网络故障或者维护行为造成的节点短暂离线。节点上线后该节点上就会集中大量的重构IO。过量的IO请求会造成底层磁盘的负载加大,拖慢其处理速度,延长请求的响应时间,也会造成系统自身资源,尤其是缓冲区的浪费。因为系统缓冲区是有限制的,被单个节点拖慢后,其他节点虽然空闲,但是没法执行进一步的处理。如此,原本的高并发就被串行化了,极大削弱了分布式系统的并发能力。



技术实现要素:

有鉴于此,本发明的目的在于提供一种分布式存储系统中重构热点消除方法和装置,能够对重构过程进行管控,保证分布式系统的并发处理能力。

为了达到上述目的,本发明提供了如下技术方案:

一种分布式存储系统中重构热点消除方法,分布式存储系统中的一节点上线后触发针对该节点中需要进行数据更新的所有存储区域的重构过程,该方法用于执行针对该节点中需要进行数据更新的任一存储区域的重构过程,包括:

步骤A、下发指向该节点中该存储区域的重构IO到该节点;

步骤B、检测是否发生重构热点事件,如果发生重构热点事件,则执行步骤C,否则,返回执行步骤A;

步骤C、按照预设算法确定是否需要结束重构过程,如果需要结束重构过程,则执行步骤D,否则,返回执行步骤A。

步骤D、结束针对该节点中该存储区域的重构过程。

一种分布式存储系统中重构热点消除装置,分布式存储系统中的一节点上线后触发针对该节点中需要进行数据更新的所有存储区域的重构过程,该装置用于执行针对该节点中需要进行数据更新的任一存储区域的重构过程,包括:下发单元、检测单元、处理单元;

所述下发单元,用于下发指向该节点中该存储区域的重构IO到该节点;

所述检测单元,用于下发单元下发指向该节点中该存储区域的重构IO到该节点后,检测是否发生重构热点事件;

所述处理单元,用于如果检测单元检测确定未发生重构热点事件,则指示下发单元继续下发指向该节点中该存储区域的重构IO到该节点;如果检测单元检测确定发生重构热点事件,则按照预设算法确定是否需要结束重构过程,若需要结束重构过程,则结束针对该节点中该存储区域的重构过程,若不需要结束重构过程,则指示下发单元继续下发指向该节点中该存储区域的重构IO到该节点。

由上面的技术方案可知,本发明中,在执行重构的过程中,每次下发指向该节点中该存储区域的一个重构IO到该节点后,就检测是否发生重构热点事件,当发生重构热点事件,按照预设算法确定是否需要结束重构过程,从而可以结束部分重构过程,同时保留另一部分重构过程继续正常执行,实现对重构过程进行管控,保证分布式系统的并发处理能力。

附图说明

图1是本发明实施例分布式存储系统中重构热点消除方法流程图;

图2是本发明实施例分布式存储系统中重构热点消除装置的结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图并据实施例,对本发明的技术方案进行详细说明。

在分布式存储系统中,当因损坏的物理介质被更换或节点掉线再上线的时段内,如果用户写入新的数据,则会造成该节点中的部分存储区域上所存的原始的用户数据或者系统生成的冗余校验数据需要更新。当节点重新上线后,为保证存储数据的正确性,保证用户数据和校验数据的一致性,需要针对该节点中的需要进行数据更新的所有存储区域启动重构过程,其中,对于每个需要进行数据更新的存储区域,均启动一个对应的重构过程(也即重构进程)。

为了避免多个重构过程因争夺资源而导致分布式系统的并发能力的削弱,本发明中,在每个重构过程中引入重构热点事件的概念,当重构速度过慢,和,磁盘响应时间(wait)值过大时,确定发生重构热点事件。

一般情况下,在一个重构过程中检测到重构热点事件时,其它重构过程检测到重构热点事件的概率也很大,如果此时都结束重构过程,并都在此后选择其他时间进行重构的话,则还会造成拥塞。因此,本发明中,在检测确定发生重构热点事件时,按照预设算法确定是继续执行重构过程或暂时结束重构过程,从而可以避免同时结束过多重构过程。

参见图1,图1是本发明实施例分布式存储系统中重构热点消除方法流程图,其特征在于,分布式存储系统中的一节点上线后触发针对该节点中需要进行数据更新的所有存储区域的重构过程,该方法用于执行针对该节点中需要进行数据更新的任一存储区域的重构过程,包括:

步骤101、下发指向该节点中该存储区域的重构IO到该节点;

步骤102、检测是否发生重构热点事件,如果发生重构热点事件,则执行步骤103,否则,返回执行步骤101;

步骤103、按照预设算法确定是否需要结束重构过程,如果需要结束重构过程,则执行步骤104,否则,返回执行步骤101。

步骤104、结束针对该节点中该存储区域的重构过程。

结束针对该节点中该存储区域的重构过程之后,还可以等待一段时间后,再次重启重构过程,也即再次执行上述下发重构步骤101-104,而且再次重启的重构过程只针对尚未下发的指向该节点中该存储区域的重构IO即可,因此,本实施例还包括以下步骤105:

步骤105、在预设时长后,基于尚未下发的指向该节点中该存储区域的重构IO,重启针对该节点中该存储区域的重构过程。

在实际应用中,过量的IO请求会导致底层磁盘的负载加大,拖慢其处理速度,延长请求的响应时间,此时该存储区域的重构速度必然会变慢,而该存储区域所属磁盘的响应时间(wait)值也会变大,因此,将该存储区域的重构速度和/或该存储区域所属磁盘的wait值作为衡量是否出现重构热点事件的衡量因素。

检测是否发生重构热点事件的方法至少有以下三种:

1)计算该节点中该存储区域的重构速度,如果该存储区域的重构速度低于预设重构速度,则确定发生重构热点事件,否则,确定未发生重构热点事件;

2)获取该节点中该存储区域所属磁盘的wait值,如果该磁盘wait值大于预设响应时间阈值,则确定发生重构热点事件,否则,确定未发生重构热点事件;

3)计算该节点中该存储区域的重构速度,并获取该节点中该存储区域所属磁盘的响应时间wait值,如果该存储区域的重构速度低于预设重构速度且该磁盘wait值大于预设响应时间阈值,则确定发生重构热点事件,否则,确定未发生重构热点事件。

其中,

上述存储区域的重构速度,也即该存储区域的写入速度,可以使用最近一段时间内下发到该存储区域的重构IO的平均写入速度衡量,也可以使用最近一次下发到该存储区域的重构IO的写入速度衡量。

上述磁盘的wait值,根据操作系统不同,获取手段也不相同,但是均可以使用命令获得,例如,在linux环境下可以通过iostat(1)命令获得。wait值越大,表明IO等待磁盘处理的时间越长,表明磁盘越繁忙。

在本实施例中,按照检测到重构热点事件的次数越多,结束重构过程的几率越大的原则设计判断是否需要结束重构过程的算法。

在本发明的一个实施例中,当首次检测到重构热点事件时,需要将该节点中该存储区域ID除以第一预设值(例如16)的余数设置为第一衡量值x,同时还获取检测到重构热点事件的时间T,将T除以第一预设值的余数作为第二衡量值y。

将上述第一衡量值x和第二衡量值y用于判断是否需要结束重构过程的算法中,其中第一衡量值x随检测到重构热点事件的次数变化而变化。

具体地,按照预设算法确定是否需要结束重构过程包括:

如果不是首次检测到重构热点事件,则将x赋值为x与第二预设值(例如2)的商;

比较x与y的大小,如果x小于y,则确定需要结束重构过程,否则,确定不需要结束重构过程。

这里,第二预设值为大于1的自然数。

在实际实现中,当连续多次未检测到重构热点事件时,说明节点在此段时间内的节点底层磁盘负载不大,此后如果再次检测到重构热点事件,可以将该次重构热点事件视为首次发生重构热点事件,从而降低此时结束重构过程的概率。

为此,本发明中以重构冲突次数标记检测到重构热点事件的次数,以重构未冲突次数标记未检测到重构热点事件的次数,在初始情况下,可以将重构冲突次数和重构未冲突次数初始化为0。

在执行重构的过程中,在检测确定发生重构热点事件之后,可以将重构冲突次数增1,将重构未冲突次数清零。而在检测确定未发生重构热点事件之后,可以将重构未冲突次数增1,如果重构未冲突次数大于第三预设值(例如4),则将重构冲突次数清零。相应地,判断是否为首次检测到重构热点事件的方法具体为:如果重构冲突次数为1,则确定是首次检测到重构热点事件,否则,确定不是首次检测到重构热点事件。可以看出,当连续多次未检测到重构热点事件时,如果再次检测到重构热点事件时,重构冲突次数为0,之后执行增1操作后变为1,因此视为首次检测到重构热点事件。

以上对本发明分布式存储系统中重构热点消除方法进行了详细说明,本发明还提供了一种分布式存储系统中重构热点消除装置,以下结合图2进行详细说明。

参见图2,图2是本发明实施例分布式存储系统中重构热点消除装置的结构示意图,其中,分布式存储系统中的一节点上线后触发针对该节点中需要进行数据更新的所有存储区域的重构过程,该装置用于执行针对该节点中需要进行数据更新的任一存储区域的重构过程,包括:下发单元201、检测单元202、处理单元203;其中,

下发单元201,用于下发指向该节点中该存储区域的重构IO到该节点;

检测单元202,用于下发单元201下发指向该节点中该存储区域的重构IO到该节点后,检测是否发生重构热点事件;

处理单元203,用于如果检测单元202检测确定未发生重构热点事件,则指示下发单元201继续下发指向该节点中该存储区域的重构IO到该节点;如果检测单元202检测确定发生重构热点事件,则按照预设算法确定是否需要结束重构过程,若需要结束重构过程,则结束针对该节点中该存储区域的重构过程,若不需要结束重构过程,则指示下发单元201继续下发指向该节点中该存储区域的重构IO到该节点。

图2所示装置中,

所述处理单元203,结束针对该节点中该存储区域的重构过程之后,进一步用于:在预设时长后,基于尚未下发的指向该节点中该存储区域的重构IO,重启针对该节点中该存储区域的重构过程。

图2所示装置中,

所述检测单元202,检测是否发生重构热点事件时,用于:计算该节点中该存储区域的重构速度,如果该存储区域的重构速度低于预设重构速度,则确定发生重构热点事件,否则,确定未发生重构热点事件;

或者,

所述检测单元202,检测是否发生重构热点事件时,用于:获取该节点中该存储区域所属磁盘的响应时间wait值,如果该磁盘wait值大于预设响应时间阈值,则确定发生重构热点事件,否则,确定未发生重构热点事件;

或者,

所述检测单元202,检测是否发生重构热点事件时,用于:计算该节点中该存储区域的重构速度,并获取该节点中该存储区域所属磁盘的响应时间wait值,如果该存储区域的重构速度低于预设重构速度且该磁盘wait值大于预设响应时间阈值,则确定发生重构热点事件,否则,确定未发生重构热点事件。

图2所示装置中,

所述处理单元203,在检测单元202首次检测到重构热点事件时,进一步将该节点中该存储区域ID除以第一预设值的余数设置为第一衡量值x,同时还获取检测到重构热点事件的时间T,将T除以第一预设值的余数作为第二衡量值y;

所述处理单元203,按照预设算法确定是否需要结束重构过程包括:

如果不是首次检测到重构热点事件,则将x赋值为x与第二预设值的商;

比较x与y的大小,如果x小于y,则确定需要结束重构过程,否则,确定不需要结束重构过程。

图2所示装置中,

所述处理单元203,在检测单元202检测确定发生重构热点事件之后,进一步用于:将重构冲突次数增1,将重构未冲突次数清零;

所述处理单元203,在检测单元202检测确定未发生重构热点事件之后,进一步用于:将重构未冲突次数增1,如果重构未冲突次数大于第三预设值,则将重构冲突次数清零;

所述处理单元203,判断是否为首次检测到重构热点事件时,用于:如果重构冲突次数为1,则确定是首次检测到重构热点事件,否则,确定不是首次检测到重构热点事件。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

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