Ceph简要概括

Ceph 【超详细】Ceph到底是什么?本文为你解答,看完就懂 - 知乎 (zhihu.com)

论文译文

1.基本组件

在这里插入图片描述

  • OSD

用于集群中所有数据与对象的存储。处理集群数据的复制、恢复、回填、再均衡。并向其他osd守护进程发送心跳,然后向Mon提供一些监控信息。

当Ceph存储集群设定的数据有两个副本时(一共存两份),则至少需要两个OSD守护进程,即两个OSD节点,集群才能到达active+clean状态。

  • MDS(可选)

为Ceph文件系统提供元数据计算、缓存与同步。在Ceph中,元数据也是存储在osd节点中的,mds类似于元数据的代理缓存服务器。MDS进程并不是必须的进程,只有需要使用CephFS时,才需要配置MDS节点。

  • Monitor

监控整个集群的状态,维护集群的cluster MAP二进制表,保证集群数据的一致性。ClusterMAP描述了对象块存储的物理位置,以及一个将设备聚合到物理位置的桶列表。

2.存储

首先Ceph会将一个文件A分为大小默认为4M的object(且有一个唯一编号文件名+序号),通过hash(object id) & mask(通常为osd的数量减一)得到PG id,最后通过CRUSH(PG id) --> (osd1,osd2,osd3) 将该PG存储到这三个osd中,其中一个为primary,剩下两个为副本。

3.故障处理

不同OSD之间会进行通信(通常是同一个PG的主副之间通信),当发现某个OSD下线或者故障后,会将错误信息报告给Monitor,Mon更新Cluster Map但不会立即重新分配一个副本,而是等待一段时间后重启该副本(可能网络延迟导致心跳延迟了)。

同时OSD与Mon之间也会互相通信,当OSD发现由故障信息以及周期性的发送心跳给Mon。

4.Ceph IO

正常IO

在这里插入图片描述

  1. Client 创建Cluster handler
  2. Client 读取配置文件
  3. Client 连接上Monitor,获取集群map信息
  4. Client 读写IO 根据Crushmap算法请求对应的主OSD数据节点
  5. 主OSD数据节点同时写入另外两个副本节点数据
  6. 等待主节点以及另外两个副本节点写完数据状态
  7. 主节点及副本节点写入状态都成功后,返回给Client,IO写入完成

新主IO

如果新加入的OSD1取代了原有的OSD4成为Primary OSD,由于OSD1上未创建PG,不存在数据,那么PG上的IO无法进行,怎样工作呢?

在这里插入图片描述

  1. Client 连接Monitor获取集群Map信息
  2. 同时新主OSD1由于没有PG,数据会主动上报Monitor告知让OSD2临时接替为主
  3. 临时主OSD2会把数据全量同步给新主OSD1
  4. Client IO读写直接连接临时主OSD2进行读写
  5. OSD2收到读写IO,同时写入另外两个副本节点
  6. 等待OSD2以及另外两副本写入成功
  7. OSD2三分数据都写入成功返回给Client,此时Client IO读写完毕
  8. 如果OSD1数据同步完毕,临时主OSD2会交出主角色
  9. OSD1成为主节点,OSD2变成副本

RBD IO

在这里插入图片描述

  1. 客户端创建一个Pool,需要为这个Pool指定PG的数量
  2. 创建pool/image RBD设备进行挂载
  3. 用户写入的数据进行切块,每个块的大小默认为4M,并且每个块都有一个名字,即Object+序号
  4. 将每个Object通过PG进行副本位置的分配
  5. PG根据CRUSH算法会寻找3个OSD,把这个Object分别保存在这三个OSD上
  6. OSD上实际是把底层的Disk进行了格式化操作,一般部署工具会将它格式化为xfs文件系统
  7. Object的存储就变成了存储一个名为rbd0.object1.file的文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值