Lucien168
作者Lucien168·2018-11-15 14:26
存储工程师·地平线机器人

Ceph crushmap choose规则分析

字数 860阅读 1866评论 0赞 4

1. Placement Rules

1.1 模拟代码

tack(a)
choose
    choose firstn {num} type {bucket-type}
    chooseleaf firstn {num} type {bucket-type}
        if {num} == 0, choose pool-num-replicas buckets (all available).
        if {num} > 0 && < pool-num-replicas, choose that many buckets.
        if {num} < 0, it means pool-num-replicas - {num}.
emit

1.2 Placement Rules的执行流程

take操作选择一个bucket, 一般是root类型的bucket.
choose操作有不同的选择方式,其输入都是上一步的输出:
a. choose firstn深度优先选择出num个类型为bucket-type个的子bucket.
b. chooseleaf先选择出num个类型为bucket-type个子bucket,然后递归到叶节点,选择一个OSD设备:
如果num为0, num就为pool设置的副本数。
如果num大于0, 小于pool的副本数,那么久选择出num个。
如果num小于0,就选择出pool的副本数减去num的绝对值。
emit输出结果

2. 实战模拟演练

2.1 演练列表

9jte2dt4y49

9jte2dt4y49

crw28vc21h
crw28vc21h

作者信息

作者:李航
个人简介: 多年的底层开发经验,在高性能nginx开发和分布式缓存redis cluster有着丰富的经验,目前从事分布式存储Ceph工作。
先后在58同城、汽车之家、优酷土豆集团工作。
目前供职于滴滴基础平台运维部-技术专家岗位,主要负责分布式Ceph系统。
个人主要关注的技术领域:高性能Nginx开发、分布式缓存、分布式存储。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

4

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广