ceph 数据均衡调整
情况一:ceph osd full - osd磁盘满的处理
根据Ceph官方文档中的描述,当一个OSD full比例达到95%时,集群将不接受任何Ceph Client端的读写数据的请求。所以导致虚拟机在重启时,无法启动的情况。
解决方法
方法一:
根据官方的建议,首选的方案是添加osd磁盘,添加后将触发数据的重新均衡,full的osd使用率降到95%以下后err状态自然会清除。
方法二:
调整每个osd的weigh值,使数据重新分布
语法:ceph osd crush reweight osd名称 新的比重值
ceph osd crush reweight osd.4 0.0099
[root@rook-ceph-tools-6f44db7c58-zw47s /]# ceph osd df
ID CLASS WEIGHT REWEIGHT SIZE RAW USE DATA OMAP META AVAIL %USE VAR PGS STATUS
0 sas 0.00969 1.00000 10 GiB 1.1 GiB 92 MiB 152 KiB 1024 MiB 8.9 GiB 10.91 1.01 99 up
5 ssd 0.00980 1.00000 10 GiB 1.1 GiB 60 MiB 65 KiB 1024 MiB 8.9 GiB 10.59 0.99 94 up
1 sas 0.00980 1.00000 10 GiB 1.1 GiB 93 MiB 133 KiB 1024 MiB 8.9 GiB 10.92 1.02 98 up
2 ssd 0.00980 1.00000 10 GiB 1.1 GiB 59 MiB 89 KiB 1024 MiB 8.9 GiB 10.58 0.98 95 up
3 sas 0.00989 1.00000 10 GiB 1.1 GiB 89 MiB 115 KiB 1024 MiB 8.9 GiB 10.88 1.01 100 up
4 ssd 0.00980 1.00000 10 GiB 1.1 GiB 63 MiB 113 KiB 1024 MiB 8.9 GiB 10.62 0.99 93 up
TOTAL 60 GiB 6.4 GiB 458 MiB 668 KiB 6.0 GiB 54 GiB 10.75
[root@rook-ceph-tools-6f44db7c58-zw47s /]# ceph osd crush reweight osd.4 0.0099
reweighted item id 4 name 'osd.4' to 0.0099 in crush map
[root@rook-ceph-tools-6f44db7c58-zw47s /]#
[root@rook-ceph-tools-6f44db7c58-zw47s /]# ceph osd df
ID CLASS WEIGHT REWEIGHT SIZE RAW USE DATA OMAP META AVAIL %USE VAR PGS STATUS
0 sas 0.00969 1.00000 10 GiB 1.1 GiB 93 MiB 152 KiB 1024 MiB 8.9 GiB 10.91 1.01 99 up
5 ssd 0.00980 1.00000 10 GiB 1.1 GiB 60 MiB 65 KiB 1024 MiB 8.9 GiB 10.59 0.99 94 up
1 sas 0.00980 1.00000 10 GiB 1.1 GiB 93 MiB 133 KiB 1024 MiB 8.9 GiB 10.92 1.02 98 up
2 ssd 0.00980 1.00000 10 GiB 1.1 GiB 60 MiB 89 KiB 1024 MiB 8.9 GiB 10.59 0.98 95 up
3 sas 0.00989 1.00000 10 GiB 1.1 GiB 89 MiB 115 KiB 1024 MiB 8.9 GiB 10.88 1.01 100 up
4 ssd 0.00989 1.00000 10 GiB 1.1 GiB 64 MiB 113 KiB 1024 MiB 8.9 GiB 10.62 0.99 93 up
TOTAL 60 GiB 6.4 GiB 459 MiB 668 KiB 6.0 GiB 54 GiB 10.75
情况二:ceph 数据不一致时,可以对ceph pg的数据进行平衡
1:检查数据分布是否均衡
查看osd_id,PGS, %USE,status
出现部分osd使用率高,部分很低的情况,就可以考虑进行数据平衡
[root@rook-ceph-tools-6f44db7c58-zw47s /]# ceph osd df
ID CLASS WEIGHT REWEIGHT SIZE RAW USE DATA OMAP META AVAIL %USE VAR PGS STATUS
0 sas 0.00969 1.00000 10 GiB 1.1 GiB 93 MiB 152 KiB 1024 MiB 8.9 GiB 10.91 1.01 99 up
5 ssd 0.00980 1.00000 10 GiB 1.1 GiB 60 MiB 65 KiB 1024 MiB 8.9 GiB 10.59 0.99 94 up
1 sas 0.00980 1.00000 10 GiB 1.1 GiB 93 MiB 133 KiB 1024 MiB 8.9 GiB 10.92 1.02 98 up
2 ssd 0.00980 1.00000 10 GiB 1.1 GiB 60 MiB 89 KiB 1024 MiB 8.9 GiB 10.59 0.98 95 up
3 sas 0.00989 1.00000 10 GiB 1.1 GiB 89 MiB 115 KiB 1024 MiB 8.9 GiB 10.88 1.01 100 up
4 ssd 0.00989 1.00000 10 GiB 1.1 GiB 64 MiB 113 KiB 1024 MiB 8.9 GiB 10.62 0.99 93 up
TOTAL 60 GiB 6.4 GiB 459 MiB 668 KiB 6.0 GiB 54 GiB 10.75
2:reweight-by-pg 按归置组分布情况调整 OSD 的权重
[root@rook-ceph-tools-6f44db7c58-zw47s /]# ceph osd reweight-by-pg
no change
moved 0 / 579 (0%)
avg 96.5
stddev 2.62996 -> 2.62996 (expected baseline 8.96753)
min osd.4 with 93 -> 93 pgs (0.963731 -> 0.963731 * mean)
max osd.3 with 100 -> 100 pgs (1.03627 -> 1.03627 * mean)
oload 120
max_change 0.05
max_change_osds 4
average_utilization 9838.0461
overload_utilization 11805.6554
EX:
$ceph osd reweight-by-pg
moved 35 / 4032 (0.868056%) #35个PG发送迁移
avg 115.2 #每个OSD承载的平均PG数目为115.2
stddev 10.378 -> 9.47418 (expected baseline 10.5787) #执行本次调整后, 标准方差将由10.378变为9.47418
min osd.15 with 93 -> 92 pgs (0.807292 -> 0.798611 * mean) #当前负载最轻的OSD为osd.15,只承载了93个PG, 执行本次调整后,将承载92个PG
max osd.6 with 141 -> 132 pgs (1.22396 -> 1.14583 * mean) #当前负载最重的OSD为osd.6, 承载了141个PG, 执行本次调整后,讲承载132个PG
oload 120
max_change 0.05
max_change_osds 4
average_utilization 21.1365
overload_utilization 25.3638
osd.6 weight 1.0000 -> 0.9500 #执行本次调整后,对osd.6,osd.23,osd.7,osd.27的reweight进行调整
osd.23 weight 0.8500 -> 0.9000
osd.7 weight 0.9000 -> 0.9500
osd.27 weight 0.8500 -> 0.9000
情况三:ceph 数据不一致时,可以按利用率调整 OSD 的权重
[root@rook-ceph-tools-6f44db7c58-zw47s /]# ceph osd reweight-by-utilization
no change
moved 0 / 579 (0%)
avg 96.5
stddev 2.62996 -> 2.62996 (expected baseline 8.96753)
min osd.4 with 93 -> 93 pgs (0.963731 -> 0.963731 * mean)
max osd.3 with 100 -> 100 pgs (1.03627 -> 1.03627 * mean)
oload 120
max_change 0.05
max_change_osds 4
average_utilization 0.1075
overload_utilization 0.1290
# ceph osd reweight-by-utilization
moved 10 / 843 (1.18624%) #10个PG发送迁移
avg 140.5 #每个OSD承载的平均PG数目为140.5
stddev 8.69387 -> 12.339 (expected baseline 10.8205) #执行本次调整后, 标准方差将由8.69387 变为12.339
min osd.3 with 127 -> 127 pgs (0.903915 -> 0.903915 * mean) #负载最轻的OSD为osd.3,只承载了127个PG, 执行本次调整后,将承载127
max osd.0 with 154 -> 154 pgs (1.09609 -> 1.09609 * mean) #负载最重的OSD为osd.0, 承载了154个PG, 执行本次调整后,讲承载154个PG
oload 120
max_change 0.05
max_change_osds 4
average_utilization 0.0904
overload_utilization 0.1084
osd.4 weight 0.9500 -> 0.9000
检查数据的平衡状态:
# ceph -s