1. 背景

Ceph是一个去中心化的分布式存储系统, 提供较好的性能、可靠性和可扩展性。Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于2004年发表),并随后贡献给开源社区, 遵循LGPL协议。在经过了数年的发展之后,目前已得到众多云计算厂商(OpenStack、CloudStack、OpenNebula、Hadoop)的支持并被广泛应用。

2. 介绍

Ceph是一个可靠、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储、块设备和文件系统服务。

Ceph的主要优点是分布式存储,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡,不存在传统的单点故障的问题,可以水平扩展。

Ceph存储集群至少需要一个Ceph Monitor和两个OSD守护进程。而运行Ceph文件系统客户端时,则必须要有元数据服务器(Metadata Server)。

3. 说明

不管是为云平台,提供Ceph 对象存储或 Ceph 块设备,还是想部署一个Ceph 文件系统,所有 Ceph 存储集群的部署都始于一个个 Ceph 节点、网络和 Ceph 存储集群。 Ceph 存储集群至少需要一个 Ceph Monitor 和两个 OSD 守护进程。而运行 Ceph 文件系统客户端时,则必须要有元数据服务器( Metadata Server )。

ceph相比于HDFS优势 简述ceph存储的优势_守护进程

  • Ceph OSDs: 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 文件系统存储元数据。元数据服务器使得 POSIX 文件系统的用户们,可以在不对 Ceph 存储集群造成负担的前提下,执行诸如 lsfind 等基本命令。

Ceph 把客户端数据保存为存储池内的对象。通过使用 CRUSH 算法, Ceph 可以计算出哪个归置组(PG)应该持有指定的对象(Object),然后进一步计算出哪个 OSD 守护进程持有该归置组。 CRUSH 算法使得 Ceph 存储集群能够动态地伸缩、再均衡和修复。

4. 特点

Ceph适合跨集群的小文件存储, 拥有以下特点:

  • 高性能
    Client和Server直接通信, 不需要代理和转发;
    Client不需要负责副本的复制, 有Primary主节点负责, 这样可以有效降低clien网络的消耗;
    采用CRUSH算法,数据分布均衡,并行度高,支持上千个存储节点, 支持TB及PB级数据。
  • 高可用性
    数据多副本, 支持故障域分隔,数据强一致性;
    没有单点故障,较好的容错性, 有效支撑各种故障场景;
    支持所有故障的检测和自动恢复,可以做到自动化管理;
    支持并行恢复,能够极大的降低数据恢复市价, 提高数据的可靠性。
  • 高扩展性
    高度并行化设计,没有单个中心控制组件,所有负载都能动态的划分到各个服务器上。
    去中心化、灵活、随节点增加线性增长。
  • 场景丰富
    支持三种存储接口类型: 块存储、文件存储、对象存储。 同时支持自定义接口,C++为底层实现, 兼容多种语言。
  • 块存储: 将磁盘空间映射给主机使用, 适用 docker容器、虚拟机磁盘存储分配;日志存储, 文件存储。
  • 文件存储: 解决块存储无法共享问题, 在服务器架设FTP和NFS服务器,适用目录结构的存储、日志存储等。
  • 对象存储: 大容量硬盘, 安装存储管理软件, 对外提供读写访问能力, 具备块存储的高速读写能力, 也具备文件存储共享的特性; 适用图片存储或视频存储。

5. 分布式存储系统横纵对比

对比说明

TFS

FASTDFS

MooseFS

GlusterFS

CEPH

开发语言

C++

C

C

C

C++

数据存储方式


文件/Trunk


文件/块

对象/文件/块

在线扩容

支持

支持

支持

支持

支持

冗余备份

支持

支持

支持

支持

支持

单点故障

存在

不存在

存在

不存在

不存在

易用性

安装复杂,官方文档少

安装简单,社区相对活跃

安装简单,官方文档多

安装简单,官方文档专业化

安装简单,官方文档专业化

适用场景

跨集群的小文件

单集群的中小文件

单集群的大中文件

跨集群云存储

单集群的大中小文件