Ceph是什么?
Ceph是一个开源的分布式存储系统,可大规模扩展、高性能、无单点故障,在普通的服务器上可以支持到PB级容量,商用机器上支持的容量可以达到EB级别。
Ceph的竞争力
市面上提供云存储的分布式系统如阿里云的OSS(底层存储框架为JindoFS),亚马逊的S3,Hadoop生态下的HDFS,OpenStack内的Swift,都是非常优秀、流行的存储解决方案,Ceph作为同类产品,仍然不逊色:
- 更低的TCO(总体拥有成本),Ceph可以部署在普通的商用服务器上,比专有存储系统的预算更低。
- Ceph的每一个组件都是可靠的并支持高可用。
- 分布式存储,客户端动态地计算数据存储位置,不过度依赖元数据服务器。
- Ceph集群内部发现的节点宕机,磁盘损坏等故障,Ceph集群能够利用副本数据进行自我修复,保证集群数据可用。
- Ceph加入Linux内核主线。
- Ceph能够同时提供对象存储、块存储、文件存储。
Ceph的统一存储方案
Ceph的统一存储方案同时满足对象存储、块存储和文件存储,并且Ceph已经加入Linux内核主线,意味着Ceph存储更加贴近OS层,统一存储方案架构图如下所示:
从上图可以知道,Ceph仅从软件层面就提供了对象、块和文件存储。对象存储要比块或者文件更加适应现在的混合的非结构化数据。
传统的文件存储系统中,文件是通过文件目录进行寻址的,庞大文件目录或深层次目录结构,均会影响文件搜索的效率,Ceph底层并不存在块和文件的管理,而是管理对象并且在对象之上支持基于块和文件的存储,对象的寻址通过唯一的标识符,并存储在扁平的寻址空间中,客户端使用CRUSH算法得到一个存储对象的存储位置,从根本上解决海量文件搜索慢的问题。
Ceph整体架构
Ceph集群主要由Monitor、OSD两个守护进程组成,每个守护进程相互独立,共同构建集群的完整功能特性,架构示意图如下:
简要阐述每个ceph组件的功能:
- RBD,也叫Ceph块设备,原先叫做RADOS块设备,对外提供块存储,它可以像祼磁盘一样被映射、格式化、挂载到操作系统上。
- RADOS GW,Ceph对象网关,简称为RGW,目前对Amazon S3和OpenStack对象存储API提供了兼容的Restful API接口,另外RGW还支持多租户和OpenStack的Keystone身份验证服务。
- Ceph FS,Cehp文件系统,提供了一个任意大小且兼容POSIX的分布式文件系统,它依赖Ceph MDS(元数据)来跟踪文件层次结构。
- librados库是RBD、RGW的基础,可以为Ceph FS提供POSIX接口,librados目前支持PHP、Ruby、Java、Python、C和C++语言,用来简化RADOS层的访问,并且提供librados API对RADOS进行本地化访问。
- RADOS,全称是可靠、自动、分布式对象存储(Reliable Autonomic Distributed Oject Store),是Ceph集群的基础,RADOS负责Ceph中的所有数据都以对象形式存储。RADOS层提供的特性主要有:数据一致性、可靠性,数据迁移和再平衡。
- MON,Ceph的monitor组件,将集群的状态保存在几个map结构里,如OSD、MON、PG和CRUSH,集群内所有的节点都向MON组件上报信息,monitor将每一个组件将上报的状态信息存储在不同的map里,monitor不存储实际的数据,只存储集群状态信息。
- OSD,Ceph对外存储设备,负责数据读写操作,真正存储用户数据的组件,一个OSD守护进程与集群的一个物理磁盘绑定,一般来说,用于部署Ceph集群物理机器(或虚拟机)的磁盘数量与OSD守护进程数量是一样的。
- MDS,元数据服务器,只有Ceph FS才需要,对象存储场景不需要使用到MDS。
小结
本篇简单介绍了分布式存储组件Ceph的基本特性,适用的存储方案,以及Ceph架构的介绍,先简单了解一下Ceph组件职责,后续会针对每个组件作更详细的介绍。
原作者:清茶豆奶