1 概述
ceph存儲中存儲池的pg隨機分布至存儲池所使用的硬盤域規則內osd上,會有osd上的pg數相差較大的情況出現。
當數據寫入存儲池,會導致不同的osd上的數據讀寫壓力不均衡,影響總體性能。因此在測試性能前對存儲池進行pg均衡操作是必需操作。
2 操作步驟
2.1查看當前osd的pg分布狀態
從PGS值中看到,osd.18上pg數為56,osd.7上pg數為28,相差一倍,
# ceph osd df
ID CLASS WEIGHT REWEIGHT SIZE USE AVAIL %USE VAR PGS
0 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 44
1 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 34
2 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 49
3 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 38
4 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 41
5 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 37
7 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 28
8 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 44
9 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 44
10 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 41
11 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 38
12 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 49
13 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 41
14 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 39
15 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 32
16 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
17 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 54
18 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 56
19 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 38
20 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 46
21 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
22 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 47
23 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 41
TOTAL 86.6TiB 24.5GiB 86.5TiB 0.03
MIN/MAX VAR: 1.00/1.00 STDDEV: 0
2.2開啟balancer模塊
# ceph mgr module enable balancer
2.3設置均衡模式
# ceph balancer mode crush-compat
說明:
1.balancer mode支持兩者模式:upmap、crush-compat。
2.upmap會以pg單位強制重新映射特定pg到特定的osd上,實現方式為將更新的pg映射關系添加到osdmap中,實現對PG映射的細粒度控制。
3.crush-compat是通過改變crush weight來調整pg分布,最終實現pg均衡。
2.4創建計划
格式:ceph balancer optimize <plan‐name> <pool‐name>
說明:
單個存儲池均衡:創建計划時,設置<pool‐name>,表示對指定的存儲池進行pg均衡操作。
全局均衡:創建計划時,不設置<pool‐name>,表示對集群中所有的存儲池進行pg均衡操作,需注意的是,當osd同時被多個存儲池復用時,會出現相互影響的現象,因此不建議在osd復用時進行全局pg均衡操作。
# ceph balancer optimize rbd rbd
2.5執行計划
格式:ceph balancer execute <plan‐name>
# ceph balancer execute rbd
2.6查看均衡操作后的osd上pg分布情況
可以看到,各個osd上的pg分布比較均勻,誤差小於5%
# ceph osd df
ID CLASS WEIGHT REWEIGHT SIZE USE AVAIL %USE VAR PGS
0 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 42
1 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
2 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
3 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
4 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
5 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
6 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 41
7 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 42
8 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
9 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
10 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
11 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 42
12 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
13 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
14 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
15 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
16 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 42
17 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
18 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
19 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 42
20 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
21 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 42
22 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
23 hdd 1.00000 1.00000 3.61TiB 1.02GiB 3.61TiB 0.03 1.00 43
TOTAL 86.6TiB 24.5GiB 86.5TiB 0.03
MIN/MAX VAR: 1.00/1.00 STDDEV: 0
說明:單次pg均衡操作可能不會達到分布均勻的結果,需要進行操作。
3 均衡操作命令
# ceph mgr module enable balancer //開啟均衡
# ceph balancer mode <none|crush-compat|upmap> //設置均衡模式
# ceph balancer optimize <plan‐name> <pool‐name> //創建均衡計划
# ceph balancer execute <plan‐name> //執行均衡計划
# ceph balancer status //查看狀態
# ceph balancer eval //查看當前集群得分,分數越低說明集群pg分布越均衡
# ceph balancer eval <plan_name> //查看執行計划后的集群得分,分數越低說明集群pg分布越均衡
# ceph balancer show <plan_name> //查看該計划要執行的動作
# ceph balancer rm <plan_name> //刪除均衡計划
# ceph balancer reset //清空所有的均衡計划
# ceph balancer off //關閉均衡模式