1. ceph群集里pg存在的意义?

由于PG和OSD的数量都比较有限,记录每个OSD承载了哪些PG可行,而且变化不频繁,开销小。 在OSD X故障后,很容易获得OSD X承载的PG列表,并计算出各个PG的另外两个副本在哪个OSD。而每个PG下面的对象,都按照PG做了聚集(称为collection,每个PG对应一个目录或者共用k/v存储的prefix),很容易获得对象列表。有了这些信息,才具备了故障处理的可行性。

PG是一种间址,PG的数量有限,记录PG跟OSD间的映射关系可行,而记录object到OSD之间的映射因为数量巨大而实际不可行或效率太低。从用途来说,搞个映射本身不是目的,让故障或者负载均衡变得可操作是目的;

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

 

ceph实现了两种了字符串hash,

一种是Linux dcache采用的hash算法,比较简洁;

另一种是RJenkins hash 算法,根据object name计算hash 采用的Rjenkins hash 算法。

计算x的过程:

1.对象name进行hash算出一个uint的值ps;

2.ps与pgp_number进行mod后得到余数b;

3.b于pool id进行hash,得到一个值,即X,作为do_crush_rule()的入参;

 ceph若干关键问题 随笔

 

 

2. weight和reweight

ceph osd crush reweight” 设置了OSD的权重

weight :这个重量为任意值(通常是磁盘的TB大小,1TB设置为1),并且控制系统尝试分配到OSD的数据量。

reweight :reweight将覆盖了weight量。这个值在0到1的范围,并强制CRUSH重新分配数据。它不改变buckets 的权重,并且是CRUSH不正常的情况下的纠正措施。(例如,如果你的OSD中的一个是在90%以上,其余为50%,可以减少权重,进行补偿。)

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄