前言
ceph比較老的版本使用的reweight或者osd weight來調整平衡的,本篇介紹的是ceph新的自帶的插件balancer的使用,官網有比較詳細的操作手冊可以查詢
使用方法
查詢插件的開啟情況
[root@node1 ceph]# ceph mgr module ls
{
"enabled_modules": [
"balancer",
"restful",
"status"
],
"disabled_modules": [
"dashboard",
"influx",
"localpool",
"prometheus",
"selftest",
"telemetry",
"zabbix"
]
}
默認balancer就是enable的
查詢balancer活動情況
[root@node1 ceph]# ceph balancer status
{
"last_optimize_duration": "",
"plans": [],
"mode": "none",
"active": false,
"optimize_result": "",
"last_optimize_started": ""
}
可以看到active是false,這里有手動的方法和自動的方法,我一般使用自動的,然后調整完了關閉
首先設置兼容模式
ceph balancer mode crush-compat
開啟調整前,我們需要先看下我們的調整的效果,這里可以用
查詢osd上的pg數
提供的腳本來進行查詢,效果如下
[root@node1 ceph]# sh getpg.sh
dumped all
pool : 6 | SUM
------------------------
osd.0 159 | 159
osd.1 136 | 136
osd.2 167 | 167
osd.3 163 | 163
osd.4 143 | 143
------------------------
SUM : 768 |
Osd : 5 |
AVE : 153.60 |
Max : 167 |
Osdid : osd.2 |
per: 8.7% |
------------------------
min : 136 |
osdid : osd.1 |
per: -11.5% |
之所以要這個腳本,是因為自帶的提供的是osd上面的pg之和,有的時候我們的存儲池混用物理osd的,上面的有的空存儲池的pg會影響查看效果,所以需要分存儲池去計算統計
開啟調整
ceph balancer on
查看情況
[root@node1 ceph]# ceph balancer status
{
"last_optimize_duration": "0:00:00.989178",
"plans": [],
"mode": "crush-compat",
"active": true,
"optimize_result": "Optimization plan created successfully",
"last_optimize_started": "Wed Jun 17 14:34:53 2020"
}
現在的這個狀態查詢比以前做的好了,還帶上了最后的執行時間,從監控來看,1分鍾會觸發一次,差不多等個幾分鍾,基本就調整完了,這個的前提是空的環境,有數據的環境,那就看每一輪的需要遷移的數據量了,所以搭建完集群,一定需要調整平衡
我們檢查下我們的環境
[root@node1 ceph]# sh getpg.sh
dumped all
pool : 6 | SUM
------------------------
osd.0 153 | 153
osd.1 153 | 153
osd.2 154 | 154
osd.3 154 | 154
osd.4 154 | 154
------------------------
SUM : 768 |
Osd : 5 |
AVE : 153.60 |
Max : 154 |
Osdid : osd.2 |
per: 0.3% |
------------------------
min : 153 |
osdid : osd.1 |
per: -0.4% |
再次查詢
[root@node1 ceph]# ceph balancer status
{
"last_optimize_duration": "0:00:00.114673",
"plans": [],
"mode": "crush-compat",
"active": true,
"optimize_result": "Unable to find further optimization, change balancer mode and retry might help",
"last_optimize_started": "Wed Jun 17 14:40:57 2020"
}
效果相當驚人,結果提示這個無法更好了,這個調整看自己接受的程度了,之前遇到過一次主機不對稱的crush,實際上會出現永遠調不平的情況,所以自己判斷下即可,目前的情況非常的均衡了,這個時候我個人的操作是關閉掉這個調整,以免后面有變化,有數據的時候自動觸發了調整引起不必要的麻煩
關閉自動平衡
[root@node1 ceph]# ceph balancer off
[root@node1 ceph]# ceph balancer status
{
"last_optimize_duration": "0:00:00.114152",
"plans": [],
"mode": "crush-compat",
"active": false,
"optimize_result": "Unable to find further optimization, change balancer mode and retry might help",
"last_optimize_started": "Wed Jun 17 14:44:58 2020"
}
手動調整方法
ceph balancer optimize tune
ceph balancer execute tune
總結
現在的平衡跟之前通過weight的調整,最終的效果比之前會好很多,之前H版本J版本一個集群能調整到5%,基本就是調整極限了
變更記錄
Why | Who | When |
---|---|---|
創建 | 武漢-運維-磨渣 | 2020-06-17 |