10、osd的numa親和
????????????ceph14開始支持osd的自動numa親和滋将,這樣就不用麻煩再寫腳本做numa綁定了捏悬。osd會根據(jù)網(wǎng)卡和存儲的numa位置實現(xiàn)自動numa親和。因此验庙,14提供了三個新的參數(shù)實現(xiàn)numa節(jié)點自動綁定和手動綁定顶吮,分別是:????
????????????osd_numa_auto_affinity自動實現(xiàn)numa親和;
? ? ? ? ? ? osd_numa_node指定osd的運行的numa節(jié)點粪薛;
? ? ? ? ? ?osd_numa_prefer_iface使osd使用同一個numa節(jié)點上的網(wǎng)絡(luò)接口悴了;
? ? ? ? ? ? 這幾個參數(shù)都需要重啟osd進(jìn)程,運行期修改是無效的违寿。在osd啟動時會檢測存儲后端的numa位置湃交,存儲內(nèi)外網(wǎng)網(wǎng)卡的numa位置,如果這三者相等且大于等于0那么就執(zhí)行綁定藤巢。如果這三者不等就放棄綁定搞莺。需要說明的是,按照現(xiàn)在的代碼顯示掂咒,如果網(wǎng)卡是做了綁定的才沧,那么ceph代碼是無法識別綁定后的網(wǎng)卡使用了那個numa節(jié)點,因此绍刮,要使用numa自動親和就不能使用網(wǎng)卡綁定温圆。機(jī)械盤也是不支持自動numa親和的,只有使用了pci總線的存儲后端才可以使用numa自動親和孩革,比如:nvme的ssd岁歉。
? ? ? ? ? ? ceph14還提供了一個命令:ceph osd numa-status來顯示osd的numa狀態(tài)。
11膝蜈、ceph集群的qos
? ? ? ? ?在以往版本增加了recovery刨裆、scrub澈圈、snap_trim操作的sleep動作基礎(chǔ)上又增加了osd_delete_sleep參數(shù),這個參數(shù)可以限制刪除動作的帶寬帆啃,防止批量刪除過度消耗io資源瞬女。
? ? ? ? ?期待已久的基于mclock的qos現(xiàn)在還是處在試驗狀態(tài),嘗試了將osd_op_queue從wpq改為mclock_opclass或者mclock_opclass努潘,然后設(shè)置osd_op_queue_mclock_client_op_lim為100,但是似乎沒有作用诽偷。
12、rbd組件相關(guān)新功能
? ? ? ? ?rbd的新功能里最讓人激動的是rbd的qos疯坤,在這個版本里rbd已經(jīng)可以實現(xiàn)對image的限速报慕,而且限速相當(dāng)精確。對rbd的image的限速分為三個層面:集群層面压怠、pool層面和image層面眠冈。使用以下參數(shù)進(jìn)行控制:
????????????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
? ? ? ? ? ? 這些參數(shù)除了rbd_qos_schedule_tick_min默認(rèn)參數(shù)為50外,其他都是0菌瘫。0表示不限速蜗顽,rbd_qos_schedule_tick_min=50表示qos的最小調(diào)度間隔是50毫秒。每個參數(shù)的意義都很明確就不做說明了雨让。
????????????在集群層面使用ceph config set? global設(shè)置rbd_qos_*這組參數(shù)雇盖,如果設(shè)置了這組參數(shù),全集群內(nèi)的image都將受到這組參數(shù)的限制栖忠。
????????????在pool層面使用rbd config pool set 設(shè)置rbd_qos_*這組參數(shù)崔挖,如果設(shè)置了這組參數(shù),全poo的image將受到這組參數(shù)的限制庵寞。在這個pool內(nèi)狸相,全局層面的參數(shù)將被覆蓋、失效捐川。
????????????在image層面使用 rbd config image set image設(shè)置rbd_qos_*這組參數(shù)卷哩,如果設(shè)置了這組參數(shù),對全局和pool的參數(shù)設(shè)置都將被覆蓋属拾。
? ? ? ? ? ? rbd 全局和pool的qos參數(shù)修改后不會即時生效将谊,必須等待下次rbd客戶端重新被初始化,但是在image層面的參數(shù)修改是即時生效的渐白,rbd客戶端無需重新初始化尊浓。
? ? ? ? ? ? 以下展示一個image限速為例子:
? ??????????rbd -p rbd-ssd config image set test000 rbd_qos_iops_limit 1000
? ??????????rbd -p rbd-ssd config image ls test000列出所有與test000相關(guān)的參數(shù)
下圖顯示對rbd-ssd池的test000限速,對rbd-hdd池的test002不限速的對比纯衍。
? ? ? ? ? ? 需要說明的是image的qos并沒有使用mclock算法實現(xiàn)栋齿,而是使用了ceph原生的節(jié)流閥機(jī)制,是無法實現(xiàn)對io資源的預(yù)留的,還得耐心等待基于mclock的qos可用瓦堵。
????????????在rbd命令也同時提供了兩個新的命令rbd perf image iostat和rbd perf image iotop基协,可以監(jiān)控pool內(nèi)各個image的iops、吞吐和延時菇用,實時控用戶的io使用率澜驮,實現(xiàn)對用戶的區(qū)別服務(wù)有很大幫助。
????????rbd perf image iostat結(jié)果如下:
????????rbd perf image iotop結(jié)果如下:
????????????rbd工具提供了跨pool遷移的工具惋鸥,比較遺憾的是只能冷遷移杂穷,不能熱遷移。
????????????rbd ???migration abort ??????????????????中斷一個遷移動作
????????????rbd ???migration commit ?????????????????提交一個image遷移
????????????rbd ???migration execute ????????????????執(zhí)行一個image遷移
????????????rbd ???migration prepare ????????????????準(zhǔn)備一個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自動均衡等功能,但都處在試驗狀態(tài)溅漾,不可用山叮,所以沒有深入了解。
當(dāng)前ceph14無論是集群還是客戶端都不算穩(wěn)定樟凄,還得等14.2.x放出后再做測試聘芜。