Ceph pool MAX AVAIL算法

网上查了很多Ceph pool MAX AVAIL怎么计算的感觉都不是很清楚,自己研究了下

两种df

当我们想查看当前ceph集群的资源使用情况时会使用两个命令:
ceph df / ceph osd df

ceph osd df

ID WEIGHT REWEIGHT SIZE USE AVAIL %USE VAR PGS
0 0.90919 1.00000 931G 533G 397G 57.29 1.07 302
1 0.90919 1.00000 931G 591G 339G 63.49 1.18 336
2 0.90919 1.00000 931G 533G 397G 57.30 1.07 300
3 0.90919 1.00000 931G 470G 461G 50.49 0.94 273
4 0.90919 1.00000 931G 500G 430G 53.77 1.00 300
5 0.90919 1.00000 931G 500G 430G 53.73 1.00 287
6 0.90919 1.00000 931G 514G 416G 55.28 1.03 303
7 0.90919 1.00000 931G 531G 399G 57.14 1.07 316
8 0.90919 1.00000 931G 469G 461G 50.42 0.94 276
9 2.72769 1.00000 2793G 1284G 1508G 45.98 0.86 724
10 0.90919 1.00000 931G 509G 421G 54.71 1.02 307
11 0.90919 1.00000 931G 506G 424G 54.38 1.01 288
12 0.90919 1.00000 931G 483G 447G 51.96 0.97 286
14 0.90919 1.00000 931G 562G 368G 60.42 1.13 310
TOTAL 14896G 7991G 6905G 53.64
MIN/MAX VAR: 0.86/1.18 STDDEV: 4.38

ceph df

会显示两个level的数值:
GLOBAL:
SIZE AVAIL RAW USED %RAW USED
14896G 6905G 7991G 53.64

POOLS:
NAME ID USED %USED MAX AVAIL OBJECTS
volumes 2 950G 47.08 1068G 249993
images 3 404G 27.47 1068G 51879
vms 5 1353G 55.88 1068G 349666

如何计算

其中第一个GLOBAL的值与ceph osd df可以对应上

而pool中的available是通过计算得出来的,由于我没有用ec,目前只说使用replication的情况
MAX AVAILABLE = GLOBAL.SIZE * ( full_ratio - MAX(ceph osd df used%) ) / replication_ratio

由于crush在小集群分配时会发生不均,实际计算时,选择使用最大的那个osd视作整个集群值(因为一旦一个osd满了 整个集群将停止接受写请求)

例如我的集群
14896 * (0.85-0.6349)/3 = 1068

这个还是在我的ruleset没有进行设置的情况下得出的值,总的来说就是考虑最差的情况来计算到第一个osd full还有多少可以用 就是max avail了。这个值虽然是max,实际上确实一种minimal的概念。

如果想要改善这种情况,可以通过修改reweight的方法,让集群内所有osd的使用百分比接近,即可提高max available

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值