Ceph 知识摘录(系统架构数据存储过程)
Posted weichao01
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ceph 知识摘录(系统架构数据存储过程)相关的知识,希望对你有一定的参考价值。
#Ceph系统基础服务架构
###Ceph的底层实现是RADOS,它向外界暴露了调用接口,即LibRADOS,应用程序只需要调用LibRADOS的接口,便可操纵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数据存储过程
![](https://images2018.cnblogs.com/blog/1313377/201807/1313377-20180725164507077-135562096.jpg)
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
![](https://images2018.cnblogs.com/blog/1313377/201808/1313377-20180810235638917-1370324177.png)
以上是关于Ceph 知识摘录(系统架构数据存储过程)的主要内容,如果未能解决你的问题,请参考以下文章
架构设计:系统存储(28)——分布式文件系统Ceph(挂载)
架构设计:系统存储(28)——分布式文件系统Ceph(挂载)