首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

一种基于Ceph分布式存储Osd端数据Recovery的QoS控制方法 

申请/专利权人:北京易捷思达科技发展有限公司

申请日:2019-07-29

公开(公告)日:2019-11-05

公开(公告)号:CN110417677A

主分类号:H04L12/819(20130101)

分类号:H04L12/819(20130101);H04L29/08(20060101)

优先权:

专利状态码:有效-授权

法律状态:2021.03.09#授权;2019.11.29#实质审查的生效;2019.11.05#公开

摘要:一种基于Ceph分布式存储Osd端数据Recovery的QoS控制方法,主要在分布式存储Osd服务端添加QoS机制,按照字节流方法进行控制,通过在每个Osd端设置令牌桶,令牌的最大数量是Osd服务端最大的限流大小,每次数据进行均衡时候,判断令牌数量是否足够,如果足够,那么就开始下发请求IO,如果令牌数量不足,那么等待后台进程往令牌桶中下发令牌,当令牌充足开始下发等待IO请求。通过控制后台进程下发令牌的速率,就可以达到精准控制数据流的目的,同时由于QoS具备应对突发IO的效果,使得数据均衡过程中更贴近用户场景控制数据流的场景。

主权项:1.一种基于Ceph分布式存储Osd端数据Recovery的QoS控制方法,其特征在于,包括:在每个Osd服务端设置令牌桶,所述令牌桶中令牌的最大数量是该Osd服务端的限流阈值,计算出多个Osd服务端的限流阈值,实现对Osd客户端的数据流总阈值的限制。

全文数据:一种基于Ceph分布式存储Osd端数据Recovery的QoS控制方法技术领域本发明属于分布式存储领域,具体涉及一种基于Ceph分布式存储Osd端数据Recovery的QoS控制方法。背景技术传统的存储系统采用集中式的服务器存储方法,提高单个大型机的性能、容量、网络等途径,进行改善当下日益增长的数据需求,但由于传统的存储系统只能局限于单台大型计算机、以及数据存储在单台服务器的弊端,一方面,存储的性能受限于服务器成为瓶颈,另一方面,数据的可靠性和安全性受到严峻的考验。分布式存储的诞生极大地改善和突破了传统存储系统的瓶颈,它把许多服务器资源统一整合、甚至跨多个数据中心,并且数据的存储采用hash和CRUSH算法按照一定规则进行打散存放在多台服务器上,在提升数据存储性能的同时,数据以副本的形式存在,当灾难发生,通过恢复副本方法,有效的提高了数据的安全可靠性。Ceph分布式存储消除了对单一中心节点的依赖,真正实现了无中心结构的一个分布式存储系统,这是其它的分布式存储系统所不能比的。Ceph分布式存储的Recovery机制是当存储集群发生存储Osd服务down或者新加入Osd服务时候,数据进行的一种自均衡机制,目前Ceph使用较为经典的是副本策略,通过该自均衡机制,可以让数据重新的在当前所有Osd上形成最大副本数,确保数据的高可靠和安全性。目前,数据的Recovery主要采用控制一个Osd的pg每秒能够做多少objects的recovery,但由于每个object中数据量多少是不确定的,导致当下存储系统无法精确地控制数据recovery时候的每秒的传输带宽量。这很容易影响到业务IO的处理速度。本发明主要针对在数据recovery时候,在Osd服务端,添加QoS控制机制,确保可以更精确地控制recovery每秒传输的带宽量,从而有效的控制对业务IO的影响。QoS(QualityofService)是一种控制机制,可以控制数据流的速率,对数据流进行整形,保证每秒传输数据量控制在一定阈值,从而使得业务IO在可控范围,确保recovery过程中业务的稳定可靠运行。QoS在存储领域主要分为两种,一种是限制IOPS,即限制每秒传输多少个IO,这主要在高IO并发控制中起到限流作用;一种是限制带宽,即限制每秒传输多少字节,主要应用于吞吐量的限制。本发明主要针对带宽的限制,即在限制数据recovery的每秒传输字节,实现数据均衡过程中,对前端业务影响可控目的。发明内容本发明针对现有技术中的不足,提供一种基于Ceph分布式存储Osd端数据Recovery的QoS控制方法,为分布式存储系统Ceph提供一种数据均衡(recoveryrebalance)过程中QoS限流,从而减小对业务IO影响的方法。分布式存储系统Ceph具有统一整理网络、存储、计算资源的能力,同时由于Ceph分布式存储天生的无中心化以及Hash和Crush算法,使得数据的存储可以多点分布在不同的服务器存储设备上,多个管理monitor节点也可以相互校验、同步数据,从而单台服务器或副本内多块磁盘损坏,可以保证系统正常使用,数据不会丢失的效果。但该机制的弊端是Ceph集群发生变化如新增Osd(objectstoragedevice)节点或某Osd节点宕掉,Ceph为保护数据安全和副本存储进行的数据迁移等一系列操作,会产生大量的recovery和backfill等IO请求。当进行这些IO的均衡过程中,会根据均衡数据量大小对前端业务造成不同程度的影响。当前分布式存储系统在数据均衡过程中可以采用系统的参数osd_max_backfills(限制一个Osd端最多有多少个pg进行backfill)、osd_recovery_max_single_start(一个pg最多同时可以recovery多少个对象)、osd_recovery_max_active(限制一个Osd端最多有多少个pg进行recovery)。由于对象(object)实际大小存在很大差异性,当前分布式存储系统只具备大概数据恢复的限制效果,很难精确地控制数据IO大小。本发明主要在分布式存储Osd服务端添加QoS机制,按照字节流方法进行控制,通过在每个Osd端设置令牌桶,令牌的最大数量是该Osd服务端的限流阈值,每次数据进行均衡时候,判断令牌桶数量是否足够,如果足够,那么就开始下发请求IO,如果令牌桶数量不足,那么等待后台进程往令牌桶中下发令牌,当令牌充足开始下发等待IO请求。所以通过控制后台进程下发令牌的速率,就可以达到精准控制数据流的目的,同时由于QoS具备应对突发IO的效果,使得数据均衡过程中更贴近用户场景控制数据流的场景。为实现上述目的,本发明采用以下技术方案:一种基于Ceph分布式存储Osd端数据Recovery的QoS控制方法,其特征在于,包括:在每个Osd服务端设置令牌桶,所述令牌桶中令牌的最大数量是该Osd服务端的限流阈值,计算出多个Osd服务端的限流阈值,实现对Osd客户端的数据流总阈值的限制。为优化上述技术方案,采取的具体措施还包括:进一步地,根据控制参数osd_max_backfills、osd_recovery_max_active、osd_recovery_max_single_start、osd_recovery_bps、osd_recovery_sleep,结合QoS的令牌桶算法,计算出多个Osd服务端的限流阈值,进而计算出数据流总阈值,所述数据流总阈值等于每个Osd服务端的限流阈值乘以Osd服务端的数量。进一步地,所述Osd_max_backfills是指一个Osd上允许最多几个pg同时做backfills,这里设置为无限大;所述Osd_recovery_max_active是指限定每个Osd上同时有多少个pg可以同时进行recovery,这里设置为无限大;所述Osd_recovery_max_single_start是指一个pg一次最多能执行几个objectrecovery;所述Osd_recovery_sleep是指recovery请求之间的间隔,这里设置为0。进一步地,当有Osd服务端的recoveryIO请求时,先读取令牌桶,如果请求数据量小于令牌桶中已有的令牌数,直接进行recoveryIO请求的处理;如果请求数据量大于令牌桶中已有的令牌数时,将recovery添加到下发队列,等待后台进程往令牌桶中下发令牌,直到令牌充足,然后进行recoveryIO请求的下发,通过控制后台进程下发令牌的速率,实现数据流的精准控制。进一步地,将recovery添加到下发队列时进行判断,如果下发队列中已经有正在等待的recovery,那么就不让这个recovery添加到下发队列。进一步地,在本次recoveryIO请求完成之后,将本次recovery的实际数据量作为下次recovery的请求数据量,对于首次recovery,采用预设的初始值作为首次recovery的请求数据量。本发明的有益效果是:系统存储发生变化时,数据均衡恢复过程带宽可以精准控制效果,从而极大的降低recoveryIO流量大导致业务IO受影响的场景,同时也降低了数据大量均衡引发系统数据不受控制的并发等问题。附图说明图1是基于Ceph分布式存储Osd端数据Recovery的QoS控制框架图。图2是基于Ceph分布式存储Osd端数据Recovery的QoS控制流程图。具体实施方式现在结合附图对本发明作进一步详细的说明。一种基于Ceph分布式存储Osd端数据Recovery的QoS控制方法,用于实现限制数据均衡时的流量控制方法,能有效应用于系统发生变化时,包括Osd服务的加入和移出等触发条件。数据均衡过程中,精准控制数据恢复的速率,减少对业务IO的冲击影响。令牌桶(TokenBucket)是一个存放令牌的容器,该容器有一个后台进程以一定的速率不断地往容器中释放令牌,当令牌总数大于令牌桶所能容纳的最大令牌时候,丢弃多余令牌,保持最大额,当令牌总数小于令牌桶最大令牌限制数时,增加令牌数。令牌(Token)是一个大小为字节单位的抽象描述,每一个令牌对应一个字节,每下发一个字节,消耗一个令牌。当请求总字节数大于令牌桶限额字节时,以最大限额令牌作为下发大小令牌,当请求总字节数小于令牌桶,以实际字节下发相应令牌。令牌阈值(Osd_recovery_bps)是每个Osd服务端所有PG的对象在均衡过程中恢复的最大值。均衡恢复IO(recoveryIO)是系统进行均衡恢复过程中的IO请求。上次recovery请求字节大小(last_recovery_bytes),由于无法在做recovery之前就得知这次要做的recovery量,但可以在做完recovery后得知这次的recovery量,所以利用上一次的recovery量,来当做这次的recovery量,然后去TokenBucket里面看有没有足够的token,若有则从TokenBucket里减去这次的recovery量,并且让这次的recovery继续做,否则把这个recovery驻列起来,直到TokenBucket有足够的token满足这个recovery所需要的recovery量,再让它做recovery。Osd_max_backfills是指一个Osd上允许最多几个pg同时做backfills,这里设置无限大,允许同时有很多pg做recovery,是为了避免在少数pg情况下容易会有带宽浮动过大的问题。Osd_recovery_max_active是指限定每个Osd上同时有多少个pg可以同时进行recovery,这里也设置为无限大,同Osd_max_backfills。Osd_recovery_max_single_start是指一个pg一次最多能执行几个objectrecovery。是考虑到并发recovery多个object的话,若果写的object正在恢复时,那么这个写io就会等待本次所有objects完成才能继续,会增加latency。Osd_recovery_sleep是指recovery请求之间的间隔,这里设置为0,即recovery请求之间没有间隔,主要依靠QoS的TokenBucket中令牌输入速度控制请求的间隔。Osd_recovery_bps,是指每个Osd服务端限制的字节大小,默认设置为4M大小。数据流总阈值是指每个Osd服务端限流阈值*Osd数。如图1所示,每个Osd服务端对应一个令牌桶,当有数据均衡恢复IO时,会读取自己的令牌桶中的令牌。根据osd_max_backfills、osd_recovery_max_active、osd_recovery_max_single_start、osd_recovery_bps、osd_recovery_sleep控制参数,结合QoS的令牌桶算法,计算出多个Osd服务端的限流阈值,实现对Osd客户端的数据流总阈值的限制效果。即每个Osd端有一个令牌桶进行限流,数据流总阈值是所有Osd的令牌桶的结果总和,也是整个分布式存储系统的限流结果。如图2所示,当有Osd服务端的recoveryIO请求时,会先读取QoS模块的令牌桶(TokenBucket),如果请求数据量小于令牌桶中已有的令牌数,可以直接进行请求IO的处理,如果请求数据量大于令牌桶中已有的令牌数时,等待令牌桶中的令牌数增加,直到令牌充足,然后进行IO请求的下发。由于无法在做recovery之前就得知这次要做的recovery量,那么本次处理的请求作为下次输入的令牌数。另外,本发明设置recovery添加到下发队列时进行判断,如果TokenBucket已经有正在等待的recovery,那就不让这个recovery添加到队列。主要是因为当TokenBucket已经有正在等待的recovery,代表token不足,而这个recovery若添加到队列有很大的几率会要不到足够的token而陷入等待造成资源浪费。需要注意的是,发明中所引用的如“上”、“下”、“左”、“右”、“前”、“后”等的用语,亦仅为便于叙述的明了,而非用以限定本发明可实施的范围,其相对关系的改变或调整,在无实质变更技术内容下,当亦视为本发明可实施的范畴。以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。

权利要求:1.一种基于Ceph分布式存储Osd端数据Recovery的QoS控制方法,其特征在于,包括:在每个Osd服务端设置令牌桶,所述令牌桶中令牌的最大数量是该Osd服务端的限流阈值,计算出多个Osd服务端的限流阈值,实现对Osd客户端的数据流总阈值的限制。2.如权利要求1所述的一种基于Ceph分布式存储Osd端数据Recovery的QoS控制方法,其特征在于:根据控制参数osd_max_backfills、osd_recovery_max_active、osd_recovery_max_single_start、osd_recovery_bps、osd_recovery_sleep,结合QoS的令牌桶算法,计算出多个Osd服务端的限流阈值,进而计算出数据流总阈值,所述数据流总阈值等于每个Osd服务端的限流阈值乘以Osd服务端的数量。3.如权利要求2所述的一种基于Ceph分布式存储Osd端数据Recovery的QoS控制方法,其特征在于:所述Osd_max_backfills是指一个Osd上允许最多几个pg同时做backfills,这里设置为无限大;所述Osd_recovery_max_active是指限定每个Osd上同时有多少个pg可以同时进行recovery,这里设置为无限大;所述Osd_recovery_max_single_start是指一个pg一次最多能执行几个objectrecovery;所述Osd_recovery_sleep是指recovery请求之间的间隔,这里设置为0。4.如权利要求1所述的一种基于Ceph分布式存储Osd端数据Recovery的QoS控制方法,其特征在于:当有Osd服务端的recoveryIO请求时,先读取令牌桶,如果请求数据量小于令牌桶中已有的令牌数,直接进行recoveryIO请求的处理;如果请求数据量大于令牌桶中已有的令牌数时,将recovery添加到下发队列,等待后台进程往令牌桶中下发令牌,直到令牌充足,然后进行recoveryIO请求的下发,通过控制后台进程下发令牌的速率,实现数据流的精准控制。5.如权利要求4所述的一种基于Ceph分布式存储Osd端数据Recovery的QoS控制方法,其特征在于:将recovery添加到下发队列时进行判断,如果下发队列中已经有正在等待的recovery,那么就不让这个recovery添加到下发队列。6.如权利要求4所述的一种基于Ceph分布式存储Osd端数据Recovery的QoS控制方法,其特征在于:在本次recoveryIO请求完成之后,将本次recovery的实际数据量作为下次recovery的请求数据量,对于首次recovery,采用预设的初始值作为首次recovery的请求数据量。

百度查询: 北京易捷思达科技发展有限公司 一种基于Ceph分布式存储Osd端数据Recovery的QoS控制方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。