ssd
配置规则:
ceph_crush1
6. 定制化Ceph RBD QOS
6.1 QOS介绍
QoS (Quality of Service,服务质量)起源于网络技术,它用来解决网络延迟和阻塞等问题,能够为指定的网络通信提供更好的服务能力。
问题:
我们总的Ceph集群的iIO能力是有限的,比如带宽,IOPS。如何避免用户争取资源,如果保证集群所有用户资源的高可用性,以及如何保证高优用户资源的可用性。所以我们需要把有限的IO能力合理分配。
6.2 Ceph IO操作类型
- ClientOp:来自客户端的读写I/O请求。
- SubOp:osd之间的I/O请求。主要包括由客户端I/O产生的副本间数据读写请求,以及由数据同步、数据扫描、负载均衡等引起的I/O请求。
- SnapTrim:快照数据删除。从客户端发送快照删除命令后,删除相关元数据便直接返回,之后由后台线程删除真实的快照数据。通过控制snaptrim的速率间接控制删除速率。
- Scrub:用于发现对象的静默数据错误,扫描元数据的Scrub和对象整体扫描的deep Scrub。
- Recovery:数据恢复和迁移。集群扩/缩容、osd失效/从新加入等过程。
6.3 Ceph 官方QOS原理
ceph_mclok_qos
mClock是一种基于时间标签的I/O调度算法,最先被Vmware提出来的用于集中式管理的存储系统。(目前官方QOS模块属于半成品)。
基本思想:
- reservation 预留,表示客户端获得的最低I/O资源。
- weight 权重,表示客户端所占共享I/O资源的比重。
- limit 上限,表示客户端可获得的最高I/O资源。
6.4 定制化QOS原理
6.4.1 令牌桶算法介绍
ceph_token_qos
基于令牌桶算法(TokenBucket)实现了一套简单有效的qos功能,满足了云平台用户的核心需求。
基本思想:
- 按特定的速率向令牌桶投放令牌。
- 根据预设的匹配规则先对报文进行分类,不符合匹配规则的报文不需要经过令牌桶的处理,直接发送。
- 符合匹配规则的报文,则需要令牌桶进行处理。当桶中有足够的令牌则报文可以被继续发送下去,同时令牌桶中的令牌量按报文的长度做相应的减少。
- 当令牌桶中的令牌不足时,报文将不能被发送,只有等到桶中生成了新的令牌,报文才可以发送。这就可以限制报文的流量只能是小于等于令牌生成的速度,达到限制流量的目的。
6.4.2 RBD令牌桶算法流程