001.Ceph简介概述
一 Ceph简介
Red Hat Ceph是一个分布式的数据对象存储,系统设计旨在性能、可靠性和可扩展性上能够提供优秀的存储服务。分布式对象存储是存储的未来,因为它们适应非结构化数据,并且客户端可以同时使用当前及传统的对象接口进行数据存取。例如:- 本地语言绑定接口(C/C++, Java, Python)
- RESTful 接口(S3/Swift)
- 块设备接口
- 文件系统接口
二 Ceph优势及特点
2.1 Ceph优势
Ceph区别于其他文件系统(如glusterfs、swift等)主要具有以下优势:- CRUSH算法
- 高可用
- 高扩展性
- 特性丰富
- 统一存储
- 无任何单点故障
- 数据多份冗余
- 存储容量可扩展
- 自动容错及故障自愈
三 体系架构
体系架构示意图(来源于官方):
3.1 RADOS
Ceph的底层核心为RADOS(Reliable, Autonomic Distributed Object Store),RADOS本身也是分布式存储系统,CEPH所有的存储功能都是基于RADOS实现。Ceph的上层应用调用本机上的librados API,再由后者通过socket与RADOS集群中的其他节点通信并完成各种操作。 Ceph的本质是一个对象存储。RADOS由两个组件组成:OSD和Monitor。 OSD主要提供存储资源,每一个disk、SSD、RAID group或者一个分区都可以成为一个OSD,而每个OSD还将负责向该对象的复杂节点分发和恢复; Monitor维护Ceph集群并监控Ceph集群的全局状态,提供一致性的决策。 RADOS分发策略依赖于CRUSH(Controlled Replication Under Scalable Hashing)算法(基于可扩展哈希算法的可控复制)。3.2 RADOS GW和RBD
RADOS GateWay、RBD其作用是在librados库的基础上提供抽象层次更高、更便于应用或客户端使用的上层接口。其中,RADOS GW是一个提供与Amazon S3和Swift兼容的RESTful API的gateway,以供相应的对象存储应用开发使用。 RBD则提供了一个标准的块设备接口,常用于在虚拟化的场景下为虚拟机创建volume。目前,Red Hat已经将RBD驱动集成于KVM/QEMU中,以提高虚拟机访问性能。这两种方式目前在云计算中应用的比较多。3.3 CEPHFS
CEPHFS则提供了POSIX接口,用户可直接通过客户端挂载使用。它是内核态的程序,所以无需调用用户空间的librados库。它通过内核中的net模块来与Rados进行交互。四 Ceph角色及原理
4.1 角色及作用

- Ceph OSDs:Ceph OSD守护进程( Ceph OSD )的功能是存储数据,处理数据的复制、恢复、回填、再均衡,并通过检查其他OSD守护进程的心跳来向Ceph Monitors提供一些监控信息。当Ceph存储集群设定为有2个副本时,至少需要2个OSD守护进程,集群才能达到active+clean状态(Ceph默认有3个副本)。
- Monitors:Ceph Monitor维护着展示集群状态的各种图表,包括监视器图、OSD图、归置组(PG)图、和CRUSH 图。Ceph 保存着发生在Monitors、OSD和PG上的每一次状态变更的历史信息(称为epoch)。
- MDSs: Ceph元数据服务器(MDS)为Ceph文件系统存储元数据(也就是说,Ceph块设备和Ceph 对象存储不使用MDS)。元数据服务器使得POSIX文件系统的客户端,可以在不对Ceph存储集群造成负担的前提下,执行诸如ls、find等基本命令。
4.2 存储通信机制


五 Ceph应用场景
Ceph的应用场景主要由它的架构确定,Ceph提供对象存储、块存储和文件存储。5.1 LIBRADOS应用
通俗理解,Librados提供了应用程序对RADOS的直接访问,目前Librados已经提供了对C、C++、Java、Python、Ruby和PHP的支持。它支持单个单项的原子操作,如同时更新数据和属性、CAS操作,同时有对象粒度的快照操作。它的实现是基于RADOS的插件API,也就是在RADOS上运行的封装库。5.2 RADOSGW应用
此类场景基于Librados之上,增加了HTTP协议,提供RESTful接口并且兼容S3、Swfit接口。RADOSGW将Ceph集群作为分布式对象存储,对外提供服务。5.3 RBD应用
此类场景也是基于Librados之上的,细分为下面两种应用场景。 第一种应用场景为虚拟机提供块设备。通过Librbd可以创建一个块设备(Container),然后通过QEMU/KVM附加到VM上。通过Container和VM的解耦,使得块设备可以被绑定到不同的VM上。 第二种应用场景为主机提供块设备。这种场景是传统意义上的理解的块存储。 以上两种方式都是将一个虚拟的块设备分片存储在RADOS中,都会利用数据条带化提高数据并行传输,都支持块设备的快照、COW(Copy-On-Write)克隆。最重要的是RBD还支持Live migration。5.4 CephFS(Ceph文件系统)应用
此类场景是基于RADOS实现的PB级分布式文件系统,其中引入MDS(Meta Date Server),它主要为兼容POSIX文件系统提供元数据,比如文件目录和文件元数据。同时MDS会将元数据存储在RADOS中,这样元数据本身也达到了并行化,可以大大加快文件操作的速度。MDS本身不为Client提供数据文件,只为Client提供对元数据的操作。当Client打开一个文件时,会查询并更新MDS相应的元数据(如文件包括的对象信息),然后再根据提供的对象信息直接从RADOS中得到文件数据。 更多有趣知识可见:https://blog.csdn.net/sunhf_csdn/article/details/79797186 官方文档:http://docs.ceph.org.cn 参考:http://ceph.org.cn/2018/06/29/red-hat-ceph%E5%AD%98%E5%82%A8-%E3%80%8A%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3ceph%E6%9E%B6%E6%9E%84%E3%80%8B/ https://www.jianshu.com/p/25163032f57f http://www.51niux.com/?id=161
更多精彩