Ceph学习之Crush算法—— Bucket

本文介绍了Ceph的Crush算法中四种Bucket类型:Uniform、List、Tree和Straw,分析了它们的组织结构、映射原理以及在数据迁移和查询效率上的特点。Uniform Bucket适合小规模快速查询,但数据迁移量大;List Bucket适用于新节点频繁加入,而Tree Bucket通过二叉树结构优化大规模集群的查询和迁移;Straw Bucket则在控制数据迁移方面表现最优,是Ceph的默认选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ceph使用Bucket将系统的存储资源按照层级结构组织完成两个目标:映射算法的高效性和可扩展性,以及当集群状态发生变化时(比如设备的增加或者删除)数据的迁移量要尽可能的少。CRUSH定义了四种bucket类型(Uniform Bucket、List Bucket、Tree Bucket、Straw Bucket)来表示层级结构的中间节点,叶子节点就是对应的OSD。每一种类型的bucket使用不同的数据结构来组织它包含的内容,可以是其他Bucket或者OSD,它们是在性能和效率间的折中。接下来将详细介绍一下这四种Bucket。

1 Uniform Bucket

这种bucket有一个严格的要求,bucket中所有的item都是同构的,如有相同的性能,相同大小的容量,而其余三种bucket允许包含不同权重的设备。这个主要是考虑到设备不会一个一个添加到系统里,而是批量添加的。它根据hash函数c(r,x)=(hash(x) + rp) mod m进行映射,映射的时间复杂度是O(1),所以它的查询速度是最快的。当然它也有明显的不足,当添加或删除item时,会导致大量的数据迁移。这是因为它的计算方法和bucket大小有关系,所以当bucket发生变化时所有的计算结果都会发生变化,也就是会有数据迁移。

2 List Bucket

它的结构是链表结构,所包含的item可以具有任意的权重。CRUSH从表头开始查找副本位置,它先得到表头item的权重Wh,然后和剩余所有节点权重之和Wr做比较,然后根据hash(x, r, item)得到一个࿳

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值