mgr提供了很多有用的模組,可以通過ceph mgr module ls命令進行查詢,其中enabled_modules表示已經使能的,而disabled_modules表示未使能的模組,使能乙個模組可以使用ceph mgr module enable $module_name命令,本文主要介紹其中乙個模組:balancer。
balancer模組用於平衡pg到osd的分布,從而平均osd的使用率。它支援兩種模式:upmap和crush-compat,upmap會強制重新對映特定pg,而crush-compat通過改變crush weight來調整pg分布,最終實現資料均衡。
同時balancer支援手動觸發pg平衡動作,或者以自動模式定期執行。
upmap是luminous版本新增功能,實現以pg單位重新對映特定的pg到特定的osd,實現方法是將更新的pg對映關係新增到osdmap中,以此實現對pg對映的細粒度控制,使用upmap模式的前提是集群中的所有服務以及客戶端都要公升級到luminous版本,即對於客戶端來說,要能夠理解osdmap中的pg-upmap-items表。可以通過ceph features命令檢視當前集群版本,同時要使用ceph osd set-require-min-compat-client luminous進行設定。
可以通過osdmaptool工具來生成優化結果,官方文件建議針對每個pool進行pg均衡,當對所有pool執行了優化後,實際上就達成了集群均衡,預設的誤差允許範圍是1%。
ceph osd getmap -o om #獲取osdmap
osdmaptool om --upmap out.txt [--upmap-pool ] [--upmap-max ] [--upmap-deviation ] #對指定pool生成優化結果
結果為多條可以執行的記錄:
ceph osd rm-pg-upmap-items 37.fe5
ceph osd pg-upmap-items 37.0 7 4
ceph osd pg-upmap-items 37.4 1 3
執行這些命令時,就發生了pg的重新對映以及相應pg的資料遷移。
同時osdmap中也會同步增加相應的記錄,用於顯示標記pg對映關係。
ceph osd dump:
epoch 2116
fsid 8fc7c303-4db5-46ca-af1f-053c97ebcb88
created 2018-08-27 11:46:56.181084
...pool 10 'default.rgw.intent-log' replicated size 3 min_size 1 crush_rule 2 object_hash rjenkins pg_num 32 pgp_num 32 last_change 1571 flags hashpspool stripe_width 0
...ceph osd rm-pg-upmap-items 37.fe5
ceph osd pg-upmap-items 37.0 7 4
ceph osd pg-upmap-items 37.4 1 3
crush-compat模式在luminous版本引入,實現原理是通過更改crush weigth來實現pg的均衡,這種模式相容於較老的客戶端。通過python實現的balancer計算得分(計算過程可以參考mgr調研文件),得出需要reweight的osd條目。
ceph osd crush weight-set reweight-compat 0 1.002479
ceph osd crush weight-set reweight-compat 1 0.998962
ceph osd crush weight-set reweight-compat 2 1.027126
ceph config-key dump
引數解釋:
mgr/balancer/active:自動週期執行
mgr/balancer/mode:模式
#當前時間在begin_time和end_time範圍內才會執行,格式為小時/分鐘,可以設定後在指定的時間段內才執行均衡動作;
mgr/balancer/begin_time,
mgr/balancer/end _time
mgr/balancer/sleep_interval,在配置的時間段執行的頻率
#修改配置方法:
ceph config-key set
例如:ceph config-key set 「mgr/balancer/sleep_interval」 「30」
修改後重啟mgr生效。
需求模式探索
最近改行專做需求分析了,所以決定在需求領域再下一番功夫。由於問題域的不同,通常我們無法找到類似於設計模式的概念和方法來解決需求,但是有一些專家已經做了這方面的嘗試,如 分析模式 和 軟體需求模式 前者對需求模式的啟發及後者對需求模式的總結都給sa帶來的巨大的幫助。按照需求的問題域,我們可以把需求分為...
設計模式探索二
我們在 前面的文章中已經介紹了一些軟體的設計模式,並給出了一些非軟體的例子。下面,讓我們繼續完成軟體設計模式的探索,來看看這些模式中的行為模式及例項。行為模式 作者總結了十一種行為模式。這些模式可以在硬幣分類銀行 餐館訂餐 運輸 汽車修理 自動售貨機和家庭建築中找到例子。職責鏈 chain of r...
java工廠模式探索
模式其實是伴隨業務的發展演進的,所以從業務的角度理解模式,有會心一擊的效果。本文參考 head first 設計模式 使用voilet uml工具畫圖 ps 此工具易用性不高,好在上手容易 場景一 新開一家pizza店,可以賣各種pizza。原始程式,實現功能 場景二 小店生意不錯,同城有分店了。業...