Ceph
Ceph是一个统一的分布式存储系统,最早起源于Sage就读博士期间的工作(最早的成果于2004年发表),随后贡献给开源社区。其设计初衷是提供较好的性能、可靠性和可扩展性。在经过多年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。RedHat 及 OpenStack 都可与Ceph整合以支持虚拟机镜像的后端存储。
Ceph的优势
高性能
- 摒弃了传统的集中式存储元数据寻址的方案,采用CRUSH算法,数据分布均衡,并行度高
- 考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等
- 能够支持上千个存储节点的规模。支持TB到PB级的数据
高可用
- 副本数可以灵活控制
- 支持故障域分隔,数据强一致性
- 多种故障场景自动进行修复自愈
- 没有单点故障,自动管理
高扩展性
- 去中心化
- 扩展灵活
- 随着节点增加,性能线性增长
特性丰富
- 支持三种存储接口:对象存储,块设备存储,文件存储
- 支持自定义接口,支持多种语言驱动
Ceph 组件
Monitors: Ceph Monitor (ceph-mon) 维护集群状态的映射,包括监视器映射、管理器映射、OSD映射、MDS映射和CRUSH映射。这些映射是Ceph守护进程相互协调所需的关键集群状态。监视器还负责管理守护进程和客户机之间的身份验证。为了实现冗余和高可用性,通常至少需要三个Monitors。
Managers: Ceph Manager (ceph -mgr) 负责跟踪运行时指标和Ceph集群的当前状态,包括存储利用率、当前性能指标和系统负载。Ceph Manager还托管基于python的模块来管理和公开Ceph集群信息,包括基于web的Ceph Dashboard和REST API。高可用性通常至少需要两个Managers。
Ceph OSDs:Object Storage (Ceph OSD, ceph-osd) 存储数据,处理数据复制,恢复,再平衡,并通过检查其他Ceph OSD进程的心跳来向Ceph监视器和管理器提供一些监控信息。通常至少需要三个Ceph OSD来实现冗余和高可用性。
MDSs:Ceph元数据服务器 (MDS, ceph-mds) ,当使用Ceph文件系统时(Ceph块设备和Ceph对象存储不使用MDS)存储元数据。Ceph元数据服务器允许POSIX文件系统用户执行基本的命令(如ls, find等),而不会给Ceph存储集群带来巨大的负担。
Ceph将数据作为对象存储在逻辑存储池中。使用CRUSH算法,Ceph计算哪个放置组(PG)应该包含对象,哪个OSD应该存储放置组。CRUSH算法使Ceph存储集群能够动态伸缩、重新平衡和恢复。