CN110417677B - 一种基于Ceph分布式存储Osd端数据Recovery的QoS控制方法 - Google Patents
一种基于Ceph分布式存储Osd端数据Recovery的QoS控制方法 Download PDFInfo
- Publication number
- CN110417677B CN110417677B CN201910686495.0A CN201910686495A CN110417677B CN 110417677 B CN110417677 B CN 110417677B CN 201910686495 A CN201910686495 A CN 201910686495A CN 110417677 B CN110417677 B CN 110417677B
- Authority
- CN
- China
- Prior art keywords
- recovery
- osd
- tokens
- data
- token bucket
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/215—Flow control; Congestion control using token-bucket
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种基于Ceph分布式存储Osd端数据Recovery的QoS控制方法,主要在分布式存储Osd服务端添加QoS机制,按照字节流方法进行控制,通过在每个Osd端设置令牌桶,令牌的最大数量是Osd服务端最大的限流大小,每次数据进行均衡时候,判断令牌数量是否足够,如果足够,那么就开始下发请求IO,如果令牌数量不足,那么等待后台进程往令牌桶中下发令牌,当令牌充足开始下发等待IO请求。通过控制后台进程下发令牌的速率,就可以达到精准控制数据流的目的,同时由于QoS具备应对突发IO的效果,使得数据均衡过程中更贴近用户场景控制数据流的场景。
Description
技术领域
本发明属于分布式存储领域,具体涉及一种基于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(Quality of Service)是一种控制机制,可以控制数据流的速率,对数据流进行整形,保证每秒传输数据量控制在一定阈值,从而使得业务IO在可控范围,确保recovery过程中业务的稳定可靠运行。QoS在存储领域主要分为两种,一种是限制IOPS,即限制每秒传输多少个IO,这主要在高IO并发控制中起到限流作用;一种是限制带宽,即限制每秒传输多少字节,主要应用于吞吐量的限制。本发明主要针对带宽的限制,即在限制数据recovery的每秒传输字节,实现数据均衡过程中,对前端业务影响可控目的。
发明内容
本发明针对现有技术中的不足,提供一种基于Ceph分布式存储Osd端数据Recovery的QoS控制方法,为分布式存储系统Ceph提供一种数据均衡(recovery/rebalance)过程中QoS限流,从而减小对业务IO影响的方法。
分布式存储系统Ceph具有统一整理网络、存储、计算资源的能力,同时由于Ceph分布式存储天生的无中心化以及Hash和Crush算法,使得数据的存储可以多点分布在不同的服务器存储设备上,多个管理monitor节点也可以相互校验、同步数据,从而单台服务器或副本内多块磁盘损坏,可以保证系统正常使用,数据不会丢失的效果。但该机制的弊端是Ceph集群发生变化如新增Osd(object storage device)节点或某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一次最多能执行几个object recovery;所述Osd_recovery_sleep是指recovery请求之间的间隔,这里设置为0。
进一步地,当有Osd服务端的recovery IO请求时,先读取令牌桶,如果请求数据量小于令牌桶中已有的令牌数,直接进行recovery IO请求的处理;如果请求数据量大于令牌桶中已有的令牌数时,将recovery添加到下发队列,等待后台进程往令牌桶中下发令牌,直到令牌充足,然后进行recovery IO请求的下发,通过控制后台进程下发令牌的速率,实现数据流的精准控制。
进一步地,将recovery添加到下发队列时进行判断,如果下发队列中已经有正在等待的recovery,那么就不让这个recovery添加到下发队列。
进一步地,在本次recovery IO请求完成之后,将本次recovery的实际数据量作为下次recovery的请求数据量,对于首次recovery,采用预设的初始值作为首次recovery的请求数据量。
本发明的有益效果是:系统存储发生变化时,数据均衡恢复过程带宽可以精准控制效果,从而极大的降低recovery IO流量大导致业务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(recovery IO)是系统进行均衡恢复过程中的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服务端的recovery IO请求时,会先读取QoS模块的令牌桶(TokenBucket),如果请求数据量小于令牌桶中已有的令牌数,可以直接进行请求IO的处理,如果请求数据量大于令牌桶中已有的令牌数时,等待令牌桶中的令牌数增加,直到令牌充足,然后进行IO请求的下发。由于无法在做recovery之前就得知这次要做的recovery量,那么本次处理的请求作为下次输入的令牌数。另外,本发明设置recovery添加到下发队列时进行判断,如果TokenBucket已经有正在等待的recovery,那就不让这个recovery添加到队列。主要是因为当TokenBucket已经有正在等待的recovery,代表token不足,而这个recovery若添加到队列有很大的几率会要不到足够的token而陷入等待造成资源浪费。
需要注意的是,发明中所引用的如“上”、“下”、“左”、“右”、“前”、“后”等的用语,亦仅为便于叙述的明了,而非用以限定本发明可实施的范围,其相对关系的改变或调整,在无实质变更技术内容下,当亦视为本发明可实施的范畴。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
Claims (2)
1.一种基于Ceph分布式存储Osd端数据Recovery的QoS控制方法,其特征在于,包括:在每个Osd服务端设置令牌桶,所述令牌桶中令牌的最大数量是该Osd服务端的限流阈值,计算出多个Osd服务端的限流阈值,实现对Osd客户端的数据流总阈值的限制;每一个令牌对应一个字节,每下发一个字节,消耗一个令牌;
当有Osd服务端的recovery IO请求时,先读取令牌桶,如果请求数据量小于令牌桶中已有的令牌数,直接进行recovery IO请求的处理;如果请求数据量大于令牌桶中已有的令牌数时,将recovery添加到下发队列,等待后台进程往令牌桶中下发令牌,直到令牌充足,然后进行recovery IO请求的下发,通过控制后台进程下发令牌的速率,实现数据流的精准控制;
其中,将recovery添加到下发队列时进行判断,如果下发队列中已经有正在等待的recovery,那么就不让这个recovery添加到下发队列;
在本次recovery IO请求完成之后,将本次recovery的实际数据量作为下次recovery的请求数据量,对于首次recovery,采用预设的初始值作为首次recovery的请求数据量。
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服务端的数量;
其中,所述Osd_max_backfills是指一个Osd上允许最多几个pg同时做backfills,这里设置为无限大;所述Osd_recovery_max_active是指限定每个Osd上同时有多少个pg可以同时进行recovery,这里设置为无限大;所述Osd_recovery_max_single_start是指一个pg一次最多能执行几个object recovery;所述Osd_recovery_sleep是指recovery请求之间的间隔,这里设置为0。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910686495.0A CN110417677B (zh) | 2019-07-29 | 2019-07-29 | 一种基于Ceph分布式存储Osd端数据Recovery的QoS控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910686495.0A CN110417677B (zh) | 2019-07-29 | 2019-07-29 | 一种基于Ceph分布式存储Osd端数据Recovery的QoS控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110417677A CN110417677A (zh) | 2019-11-05 |
CN110417677B true CN110417677B (zh) | 2021-03-09 |
Family
ID=68363639
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910686495.0A Active CN110417677B (zh) | 2019-07-29 | 2019-07-29 | 一种基于Ceph分布式存储Osd端数据Recovery的QoS控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110417677B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110891089B (zh) * | 2019-11-29 | 2022-04-29 | 中国经济信息社有限公司 | 一种基于令牌桶算法的Ceph块存储镜像同步QoS优化方法 |
CN113032410B (zh) * | 2019-12-25 | 2024-05-03 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置、电子设备及计算机存储介质 |
CN111917823B (zh) * | 2020-06-17 | 2022-02-18 | 烽火通信科技股份有限公司 | 一种基于分布式存储Ceph的数据重构方法与装置 |
CN112087401B (zh) * | 2020-09-10 | 2024-05-28 | 北京星辰天合科技股份有限公司 | 分布式存储中实现服务质量的方法和装置 |
CN112231137B (zh) * | 2020-12-14 | 2021-03-30 | 广东睿江云计算股份有限公司 | 一种分布式存储数据的重平衡方法及其系统 |
US11979341B2 (en) | 2021-09-28 | 2024-05-07 | Red Hat, Inc. | Adaptive message queue timeouts for message queues related to storage systems |
CN114465958B (zh) * | 2021-12-22 | 2024-04-26 | 天翼云科技有限公司 | 一种输入输出的控制方法、装置及介质 |
CN115150415B (zh) * | 2022-06-30 | 2024-04-19 | 联想(北京)有限公司 | 一种控制方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107579926A (zh) * | 2017-10-20 | 2018-01-12 | 南京易捷思达软件科技有限公司 | 基于令牌桶算法的Ceph云存储系统的QoS设置方法 |
CN107948090A (zh) * | 2017-11-23 | 2018-04-20 | 郑州云海信息技术有限公司 | 一种Ceph存储集群卷的带宽控制方法及装置 |
CN108804043A (zh) * | 2018-06-26 | 2018-11-13 | 郑州云海信息技术有限公司 | 分布式块存储系统带宽流量控制方法、装置、设备及介质 |
US10754735B2 (en) * | 2017-11-20 | 2020-08-25 | Salesforce.Com, Inc. | Distributed storage reservation for recovering distributed data |
-
2019
- 2019-07-29 CN CN201910686495.0A patent/CN110417677B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107579926A (zh) * | 2017-10-20 | 2018-01-12 | 南京易捷思达软件科技有限公司 | 基于令牌桶算法的Ceph云存储系统的QoS设置方法 |
US10754735B2 (en) * | 2017-11-20 | 2020-08-25 | Salesforce.Com, Inc. | Distributed storage reservation for recovering distributed data |
CN107948090A (zh) * | 2017-11-23 | 2018-04-20 | 郑州云海信息技术有限公司 | 一种Ceph存储集群卷的带宽控制方法及装置 |
CN108804043A (zh) * | 2018-06-26 | 2018-11-13 | 郑州云海信息技术有限公司 | 分布式块存储系统带宽流量控制方法、装置、设备及介质 |
Non-Patent Citations (1)
Title |
---|
基于Bluestore的分布式存储Ceph集群QoS研究;袁猛;《中国优秀硕士学位论文全文数据库》;20190228;第24-30页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110417677A (zh) | 2019-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110417677B (zh) | 一种基于Ceph分布式存储Osd端数据Recovery的QoS控制方法 | |
US11960412B2 (en) | Systems and methods for identifying storage resources that are not in use | |
US8892716B2 (en) | Quality of service management using host specific values | |
US10768823B2 (en) | Flow control for unaligned writes in network storage device | |
US7739418B2 (en) | Resource management system | |
CN107818056B (zh) | 一种队列管理方法及装置 | |
US7925805B2 (en) | Critical resource management | |
TWI559706B (zh) | 網路處理器中的封包調度 | |
US20120059981A1 (en) | Apparatus, system, and method for storage space recovery | |
US8429315B1 (en) | Stashing system and method for the prevention of cache thrashing | |
US20200136986A1 (en) | Multi-path packet descriptor delivery scheme | |
CN107465630A (zh) | 一种带宽流量监管方法及系统 | |
US20050210144A1 (en) | Load balancing method and system | |
US10628241B2 (en) | Determining when to send message to computing node to process items by training a machine learning module | |
US7934027B2 (en) | Critical resource management | |
KR20220084844A (ko) | 스토리지 장치 및 스토리지 장치의 동작 방법 | |
US20200042367A1 (en) | Determining when to send message to a computing node to process items using a machine learning module | |
US7729259B1 (en) | Reducing latency jitter in a store-and-forward buffer for mixed-priority traffic | |
CN114020209A (zh) | 一种客户端业务限速方法、装置、设备及存储介质 | |
KR100985166B1 (ko) | 분산 저장 시스템에서 파일을 동기화하는 장치 및 방법 | |
US8392675B1 (en) | System and method for reduced-overhead snapshot creation | |
WO2014035584A1 (en) | Limiting bandwidth for write transactions across networks of components in computer systems | |
JPH11331309A (ja) | データ転送システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |