Ceph

ceph14.1.x的一下新功能(二)

2019-03-16  本文已影响0人  月亮之上_cab4

10、osd的numa亲和

            ceph14开始支持osd的自动numa亲和,这样就不用麻烦再写脚本做numa绑定了。osd会根据网卡和存储的numa位置实现自动numa亲和。因此,14提供了三个新的参数实现numa节点自动绑定和手动绑定,分别是:    

            osd_numa_auto_affinity自动实现numa亲和;

            osd_numa_node指定osd的运行的numa节点;

           osd_numa_prefer_iface使osd使用同一个numa节点上的网络接口;

            这几个参数都需要重启osd进程,运行期修改是无效的。在osd启动时会检测存储后端的numa位置,存储内外网网卡的numa位置,如果这三者相等且大于等于0那么就执行绑定。如果这三者不等就放弃绑定。需要说明的是,按照现在的代码显示,如果网卡是做了绑定的,那么ceph代码是无法识别绑定后的网卡使用了那个numa节点,因此,要使用numa自动亲和就不能使用网卡绑定。机械盘也是不支持自动numa亲和的,只有使用了pci总线的存储后端才可以使用numa自动亲和,比如:nvme的ssd。

            ceph14还提供了一个命令:ceph osd numa-status来显示osd的numa状态。

11、ceph集群的qos

         在以往版本增加了recovery、scrub、snap_trim操作的sleep动作基础上又增加了osd_delete_sleep参数,这个参数可以限制删除动作的带宽,防止批量删除过度消耗io资源。

         期待已久的基于mclock的qos现在还是处在试验状态,尝试了将osd_op_queue从wpq改为mclock_opclass或者mclock_opclass,然后设置osd_op_queue_mclock_client_op_lim为100,但是似乎没有作用。

12、rbd组件相关新功能

         rbd的新功能里最让人激动的是rbd的qos,在这个版本里rbd已经可以实现对image的限速,而且限速相当精确。对rbd的image的限速分为三个层面:集群层面、pool层面和image层面。使用以下参数进行控制:

            rbd_qos_bps_burst

            rbd_qos_bps_limit

            rbd_qos_iops_burst

            rbd_qos_iops_limit

            rbd_qos_read_bps_burst

            rbd_qos_read_bps_limit

            rbd_qos_read_iops_burst

            rbd_qos_read_iops_limit

            rbd_qos_schedule_tick_min

            rbd_qos_write_bps_burst

            rbd_qos_write_bps_limit

            rbd_qos_write_iops_burst

            rbd_qos_write_iops_limit

            这些参数除了rbd_qos_schedule_tick_min默认参数为50外,其他都是0。0表示不限速,rbd_qos_schedule_tick_min=50表示qos的最小调度间隔是50毫秒。每个参数的意义都很明确就不做说明了。

            在集群层面使用ceph config set  global设置rbd_qos_*这组参数,如果设置了这组参数,全集群内的image都将受到这组参数的限制。

            在pool层面使用rbd config pool set 设置rbd_qos_*这组参数,如果设置了这组参数,全poo的image将受到这组参数的限制。在这个pool内,全局层面的参数将被覆盖、失效。

            在image层面使用 rbd config image set image设置rbd_qos_*这组参数,如果设置了这组参数,对全局和pool的参数设置都将被覆盖。

            rbd 全局和pool的qos参数修改后不会即时生效,必须等待下次rbd客户端重新被初始化,但是在image层面的参数修改是即时生效的,rbd客户端无需重新初始化。

            以下展示一个image限速为例子:

            rbd -p rbd-ssd config image set test000 rbd_qos_iops_limit 1000

            rbd -p rbd-ssd config image ls test000列出所有与test000相关的参数

下图显示对rbd-ssd池的test000限速,对rbd-hdd池的test002不限速的对比。

            需要说明的是image的qos并没有使用mclock算法实现,而是使用了ceph原生的节流阀机制,是无法实现对io资源的预留的,还得耐心等待基于mclock的qos可用。

            在rbd命令也同时提供了两个新的命令rbd perf image iostatrbd perf image iotop,可以监控pool内各个image的iops、吞吐和延时,实时控用户的io使用率,实现对用户的区别服务有很大帮助。

        rbd perf image iostat结果如下:

        rbd perf image iotop结果如下:

            rbd工具提供了跨pool迁移的工具,比较遗憾的是只能冷迁移,不能热迁移。

            rbd    migration abort                   中断一个迁移动作

            rbd    migration commit                  提交一个image迁移

            rbd    migration execute                 执行一个image迁移

            rbd    migration prepare                 准备一个image迁移

            例如:

            rbd migration prepare rbd-hdd/test000 rbd-ssd/test000

            rbd migration execute rbd-hdd/test000

            rbd migration commit rbd-hdd/test000

            完成rbd-hdd/test000的跨池迁移

            rbd sparsify使image稀疏化。就是清理没有使用的块,减少存储实际占用。

13、cephfs相对13增加了子卷、mds自动均衡等功能,但都处在试验状态,不可用,所以没有深入了解。

当前ceph14无论是集群还是客户端都不算稳定,还得等14.2.x放出后再做测试。

上一篇下一篇

猜你喜欢

热点阅读