Ceph 随笔

Ceph系统基础服务架构

1、基础存储系统Rados(可靠的、自动化的、分布式的对象存储)
本身是一个完整的对象存储系统,Ceph系统用户数据最终由这一层存储,高可靠性、高扩展性、高自动化等特性本质
由这一层提供。特点是CRUSH算法维护存储对象与存储服务器的对应关系。
rados由两个组件组成:Mon、OSD

2、基础库librados
对Rados进行抽象和封装,向上层提供API,方便基于RADOS进行应用开发。Rados是一个对象存储系统,librados实现的
API也针对对象存储功能。
本地API,通过socket与RADOS集群中的节点通信并完成各种操作。

3、高层应用接口
包含三部分:radosgw、rbd、Ceph FS,作用librados库的基础上提供抽象层次更高、更便于应用或客户端使用的上层接口。
基于RADOS实现了一个且兼容Swift和S3的存储系统radosgw。以及一个块设备驱动RBD。

4、应用层
基于librados直接开发的对象存储应用,基于RADOS GW开发的对象存储应用,基于RBD实现的云硬盘等等。

librados和radosgw的区别

-librados和radosgw的区别在于,librados提供的是本地API,而RADOS GW提供的则是RESTful API。
-radosgw针对对象存储应用开发者和对象存储应用用户;librados中没有账户、容器这样的高层概念,
向开发者开放了大量的Rados状态信息与配置参数,对系统存储策略进行控制。

Ceph数据存储过程

  1. File —— 此处的file就是用户需要存储或者访问的文件。对于一个基于Ceph开发的对象存储应用而言,这个file也就对应于应用中的“对象”,也就是用户直接操作的“对象”。
  2. Ojbect —— 此处的object是RADOS所看到的“对象”。Object与上面提到的file的区别是,object的最大size由RADOS限定(通常为2MB或4MB),以便实现底层存储的组织管理。当上层应用向RADOS存入size很大的file时,需要将file切分成统一大小的一系列object(最后一个的大小可以不同)进行存储。为避免混淆,在本文中将尽量避免使用中文的“对象”这一名词,而直接使用file或object进行说明。
  3. PG(Placement Group)—— 顾名思义,PG的用途是对object的存储进行组织和位置映射。具体而言,一个PG负责组织若干个object(可以为数千个甚至更多),但一个object只能被映射到一个PG中,即,PG和object之间是“一对多”映射关系。同时,一个PG会被映射到n个OSD上,而每个OSD上都会承载大量的PG,即,PG和OSD之间是“多对多”映射关系。在实践当中,n至少为2,如果用于生产环境,则至少为3。一个OSD上的PG则可达到数百个。事实上,PG数量的设置牵扯到数据分布的均匀性问题。关于这一点,下文还将有所展开。
  4. OSD —— 即object storage device,前文已经详细介绍,此处不再展开。唯一需要说明的是,OSD的数量事实上也关系到系统的数据分布均匀性,因此其数量不应太少。在实践当中,至少也应该是数十上百个的量级才有助于Ceph系统的设计发挥其应有的优势。

Ceph中的寻址至少要经历以下三次映射:

  1. File -> object映射
    将用户要操作的file,映射为RADOS能够处理的object。本质上就是按照object的最大size对file进行切分。这种切分的好处有二:一是让大小不限的file变成最大size一致、可以被RADOS高效管理的object;二是让对单一file实施的串行处理变为对多个object实施的并行化处理。

  2. Object -> PG映射
    在file被映射为一个或多个object之后,需要将每个object独立地映射到一个PG中去。

  3. PG -> OSD映射
    第三次映射就是将作为object的逻辑组织单元的PG映射到数据的实际存储单元OSD。

Ceph数据存储过程总结:

  File---->Rados层面object--->PG---->Osd
  一个PG负责组织若干个object,但一个object只能被映射到一个PG中
  一个PG会被映射到n个OSD上,而每个OSD上都会承载大量的PG

猜你喜欢

转载自www.cnblogs.com/weichao01/p/9458081.html