简介
Ceph的目标是采用商业硬件来构建大规模的、具有高可用、高扩展、高性能的分布式存储系统,ceph具有如下特点:
- 软件定义存储:Ceph不需要特定的硬件,在主流的Linux发行版等类Unix操作系统上均可运行
- 分布式存储:得意与计算寻址让Ceph客户端可以直接与服务端任意节点通信,避免因存在访问热点产生的性能瓶颈,这也是他可以轻易管理PB级以上规模集群的重要原因
- 统一存储:Ceph支持传统的块存储(RBD)、文件系统存储(Ceph fs)与新兴的对象存储协议(RADOSGW)
架构
Ceph采用存储应用与存储服务完全分离(Client/Server)的模式,基于Rados对外提供服务。客户端可以直接通过LIBRADOS访问RADOS系统,也可以调用在LIBRADOS上封装的Radosgw、librbd、libcephfs这些接口访问存储。
-
RADOS网关接口(RGW):如图1,RGW提供对象存储服务,通过librados允许APP直接与Ceph对象存储建立连接,基于librados封装的librgw也提供了与Amazon S3协议和OpenStack Swift协议兼容的RESTful API。可以将它理解为对文件(对象)进行上传、下载、查询、删除等。
- 对象存储采用扁平化目录结构,利于进行大规模的扩容。
- S3/Swift接口均分三级:Account/Bucket/Object(账户/桶/对象)
-
RADOS块设备(RBD)接口:如图1,Ceph块设备,提供持久块存储,并将数据分散到不同OSD上,是一个分布式的块设备。与传统的SAN存储类似,RBD可以通过SCSI或FC给应用提供一个独立的LUN或者卷。
- 在用户态,通过QEMU Driver供虚拟机作为磁盘使用
- 在操作系统内核态将块设备映射给物理主机,供物理主机使用
-
Ceph文件系统(CephFS)接口:在rados基础上增加了元数据服务器(MDS),它只为CephFS文件系统跟踪文件的层次结构和存储元数据,(RBD与RADOS不需要MDS,MDS不直接提供数据给客户端)。CephFS类似于传统的NAS,通过NFS和CIFS协议提供文件目录服务。
-
RADOS(Reliable Autonomic Distributed Object Store):如图1,Ceph的底层实现为RADOS。在Ceph中数据以对象的形式存储,RADOS层保存这些对象,并确保数据始终保持一致,进行数据复制、故障检测和恢复、数据迁移、集群各节点的数据平衡等工作,RADOS是Ceph的核心,包括以下功能:
-
Monitor为整个集群提供全局配置和系统信息(几数个Monitor组成小型的强一致性分布式)
-
CRUSH算法实现对象寻址过程(Ceph对象落在哪里由CRUSH计算得出)
-
对数据进行读写操作
-
集群数据均衡
-
保证集群副本之间数据一致性
-
数据自动恢复
-
克隆和快照
-
对象分层存储
-
典型的Rados集群如图2:
学习自:
《Ceph源码分析》 常涛
《Ceph Cookbook》 Karan Singh
《Ceph之RADOS设计原理与实现》 谢型果 严军