ceph crush论文分析

1、题目

CRUSH: Controlled, Scalable, Decentralized Placement of Replicated Data, 翻译为"可控的,可扩展的,非中心化的多副本放置算法"。

2、abstract

引出问题:现在大型存储系统所面临的问题如何分布数据到这些成千上万的存储设备上,在面临设备的动态变化的同时,要能保证有效利用这些设备的能力,包括空间和性能。最后点题,crush是什么,并解决了什么问题。

3、introduction

  • 基于对象的存储取代块存储:暴露的接口更简单。用户文件被存放在多个这样的对象中。

  • 引出问题:如何分布这些数据到成千上万的设备中?

    • 总写到新设备中:导致不均衡

    • 简单的hash存放

      • 迁移量大
      • 不支持多副本,会导致丢数据
    • 引出crush

      • 伪随机、高效、确定的、支持异构

      • 和对象之间的顺序无关,仅需存储结构信息以及副本策略

        • 分散的,独立计算
        • 元数据非常小
      • 最大化利用资源,灵活应多设备添加和删除

      • 确保副本的安全性

4、相关工作

  • 很多存储系统会依赖中心化的目录去分配数据,而crush不会:独立计算
  • 对比一致性hash,比较像crush,但是缺少权重以及故障域保护机制
  • 对比crush和rush算法

5、 crush算法

  • crush算法根据固定输入x,会得到固定的一组磁盘
  • 因为是伪随机,相似的输入和输出之间没有任何关联性,选出的设备之间也是概率独立的

5.1、分层的集群结构

  • 介绍地图的结构:bucket device
  • 每一层的bucket的选择算法可以独立选择

5.2、副本放置

算法基本介绍,比较常规,不再详述

5.3 碰撞、失败、过载

  • crush可能会拒绝并重新选择, 通过改变参数r来重新选择。拒绝的原因有三种:
    • 碰撞:被选择过,crush结果要求唯一
    • device挂了
    • device过载了

3.4.1 Uniform Buckets

  • 简单说就是普通的hash求余来选择,可参考公式:c(r, x) = (hash(x) + rp) mod m, 其中m为bucket的size,p是一个固定的随机且比m大的素数
  • 缺点:当bucket size发生改变就会导致全部数据发生迁移,不符合最小迁移的原则

3.4.2 List Bucket

  • list bucket 是一个列表,包含任意权重的条目

  • 选择副本所在的bucket item的时候,是从表头开始,也就是从最新添加的设备开始,比较hash(x,r,item)的值是否小于当前item权重和剩余较老的item之和(和包含当前item)。 代码里面hash是一个整形,需要转换为0~1的值。具体参考代码:


    image.png

实际可以用公式总结: hash & 0xff * sum_weight[i] >> 16 < weight[i], 一眼看上去是看不懂,转换一下就比较符合论文的意思了:

**hash&0xff/2^16 < weight[i]/sum_weight[i] **

  • 由公式可以推出:添加item的时候不会改变以前的权重和,只会导致部分数据迁移到老设备,这个符合添加设备的最小迁移原则

  • 也由公式可推出:移除item的时候会影响在该item之后添加的设备的权重和,不仅要迁移移除设备的数据,还需要迁移发生权重变化的item上的数据,不符合最小迁移原则

3.4.3 Tree Buckets

  • 源码实现:
    • 原数组和权重数组对应关系为 y=2x+1, 实际通过位移来实现,让人摸不着头脑.
    • 高度是通过识别最低为1所在的位置来判断,比如10就是高度为2, 110高度也是2, 有效数字就只是最后两个
    • 判断左右节点:需要和父节点进行求&,判断是否为0
    • 求父节点:右节点需要减n - (1 << h), 左节点需要加n +(1 << h)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,110评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,443评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,474评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,881评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,902评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,698评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,418评论 3 419
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,332评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,796评论 1 316
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,968评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,110评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,792评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,455评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,003评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,130评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,348评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,047评论 2 355