ceph crush算法不一样的理解,新增删除osd造成少量数据迁移

                   摘要:之前对ceph的crush算法的理解,很多时候没有针对问题来考虑。我现在就提出几个问题

                  1,ceph怎么做到的每次down掉一个osd或者新增一个osd后,只有少量的数据迁移?而不是所有数据都在osd之间来回迁移?(据说sheepdog是大量迁移,所以这个就别拿来和ceph比性能了,连弹性扩容都做不到。)

                  2,一块数据A写入pg1(osd1),现在新增osd了,导致pg1迁移到osd2上,那么下次需要读数据A,还能找到数据位置吗?

                  3,一个oid映射到pgid,是怎么哈希映射的?一个文件名真的可以哈希后得到文件夹的名字?真像网上说的那样,是文件名哈希后,用哈希值value除以文件夹总数取余数(oid%pg_num) ?

 

一,怎么把一个文件名映射到文件夹?(也就是object怎么映射到pg)

           假如我有1个文件,需要哈希映射到1000个文件夹。 拿ceph来说,就是1个object怎么映射到1000个pg。

网上的说法:

         1,hash(object) 得到一个哈希值 value 。

          2,用这个value除以10000,取余数。

           这样的做法确实也可以让object随机映射到1000个pg中的一个。但是只是知道了1000个pg的第几个pg,还要根据算出的序号,去1000个pg中查询出pgid。这样做效率是不行的。ceph一贯履行不需查找,算算就好的承诺。

 

ceph的做法:

           1,每次创建一个pool的时候让pg的id变得连续。如果16个pg,那pgid就从0~f 。如果1024个pg,那么pdid就从0~3ff。

下图中0.3ff 前面的0 表示 poolid。

0。

          

                  2,通过object取得的哈希值value &mask运算,得出pgid的值。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值