一、Ceph简介
Ceph是一个统一的分布式存储系统,提供较好的性能、可靠性和扩展性
二、Ceph 与其他存储对比
三、Ceph特点
高性能:
a. 摒弃了传统的集中式存储元数据寻址的方案,采用 CRUSH 算法,数据分布均衡,并行度高。
b. 考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等。
c. 能够支持上千个存储节点的规模,支持 TB 到 PB 级的数据。
高扩展性:可无限扩容
特性丰富:支持三种存储接口:块存储、文件存储、对象存储
支持三种接口: Object:有原生的API,而且也兼容Swift和S3的API、Block:支持精简配置、快照、克隆。File:Posix接口,支持快照
四、Ceph架构
<1> Ceph的最底层是RADOS(分布式对象存储系统),它具有可靠、智能、分布式等特性,实现高可靠、高可拓展、高性能、高自动化等功能,并最终存储用户数据。RADOS系统主要由两部分组成,分别是OSD和Monitor。
<2> RADOS之上是LIBRADOS,LIBRADOS是一个库,它允许应用程序通过访问该库来与RADOS系统进行交互,支持多种编程语言,比如C、C++、Python等。
<3> 基于LIBRADOS层开发的有三种接口,分别是RADOSGW、librbd和MDS。
<4> RADOSGW是一套基于当前流行的RESTFUL协议的网关,支持对象存储,兼容S3和Swift。
<5> librbd提供分布式的块存储设备接口,支持块存储。
<6> MDS提供兼容POSIX的文件系统,支持文件存储。
五、Ceph核心组件
Montior:一个Ceph集群需要多个Monitor组成小集群, 它们通过 Paxos 同步数据,用来保存 OSD 的元数据。
OSD:负责响应客户端请求返回具体数据进程,一个Ceph集群一般都有多个OSD。
Pool、PG和OSD的关系:
- 一个Pool里有很多PG;
- 一个PG里包含一堆对象,一个对象只能属于一个PG;
- PG有主从之分,一个PG分布在不同的OSD上(针对三副本类型)
MDS:是CephFS服务的依赖的元数据服务。
RBD:Ceph对外提供的块设备服务,接口iSCSI兼容。
RGW:Ceph对外提供对象存储服务,接口S3和Swift兼容。
CephFS:Ceph对外提供的文件系统服务。
RADOS:Ceph集群的精华,用户实现数据分配,Failover等集群操作。
Libradio: Librados 是 Rados 提供库,因为 RADOS 是协议很难直接访问,因此上层的 RBD、RGW 和 CephFS 都是通过 librados 访问的,目前提供 PHP、Ruby、Java、Python、C 和 C++支持。
CRUSH:Ceph使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方。
Pool: Pool是存储对象的逻辑分区。
PG:逻辑感念,一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据。
Object:Ceph最底层存储单元是Object对象,每个Object包含元数据和原始数据。
六、Ceph 架构展示
Ceph的功能模块
ceph资源划分
七、Ceph三种存储类型
1、 块存储(RBD)
- 优点:
- 通过Raid与LVM等手段,对数据提供了保护;
- 多块廉价的硬盘组合起来,提高容量;
- 多块磁盘组合出来的逻辑盘,提升读写效率;
- 缺点:
- 采用SAN架构组网时,光纤交换机,造价成本高;
- 主机之间无法共享数据;
- 使用场景
- docker容器、虚拟机磁盘存储分配;
- 日志存储;
- 文件存储;
2、文件存储(CephFS)
- 优点:
- 造价低,随便一台机器就可以了;
- 方便文件共享;
- 缺点:
- 读写速率低;
- 传输速率慢;
- 使用场景
- 日志存储;
- FTP、NFS;
- 其它有目录结构的文件存储
3、对象存储(Object)(适合更新变动较少的数据)
- 优点:
- 具备块存储的读写高速;
- 具备文件存储的共享等特性;
- 使用场景
- 图片存储;
- 视频存储;