在云计算、虚拟化和大规模数据平台里,存储往往是最容易成为瓶颈的一环。单机存储容量有限、可靠性不足,传统集中式存储又常常面临成本高、扩展难、存在单点风险等问题。Ceph 正是在这样的背景下出现的一种开源分布式存储系统。

简单来说,Ceph 是一个统一的分布式存储平台。它可以同时提供对象存储、块存储和文件存储三种能力,并且基于普通服务器构建,具备高可用、高扩展、去中心化等特点。很多人第一次接触 Ceph,是因为 OpenStack、Kubernetes 或私有云平台,但它本身并不依附于这些平台,而是一个独立而完整的存储系统。


一、Ceph 到底是什么

Ceph 是一个开源的分布式存储系统,核心目标是:

如果用一句更工程化的话来描述:

Ceph 是一个以对象存储为底层基础,通过分布式算法完成数据放置、复制、恢复和扩展的统一存储系统。

很多传统存储系统在设计上依赖中心化元数据或专用存储控制器,而 Ceph 更强调“去中心化”和“自治”。这使得它在大规模集群场景下非常有吸引力。


二、为什么 Ceph 重要

理解 Ceph 的价值,先要理解现代基础设施对存储的要求发生了什么变化。

过去企业购买一套存储设备,更多追求的是“稳定可用”;今天的数据平台则更关注:

Ceph 之所以流行,就是因为它试图用一套系统解决这些问题。

它适合以下典型场景:


三、Ceph 的三个核心能力

Ceph 常被称为“统一存储”,原因在于它不是只做某一类存储,而是支持三种主要接口。

1. 对象存储

对象存储适合图片、视频、日志、备份文件、归档数据等非结构化数据场景。
在 Ceph 里,对象存储通常通过 RADOS Gateway 提供兼容 S3 或 Swift 风格的访问接口。

对象存储的特点是:

2. 块存储

块存储主要用于虚拟机磁盘、数据库存储卷等场景。
在 Ceph 中,这一能力通常由 RBD(RADOS Block Device)提供。

块存储的特点是:

3. 文件存储

文件存储适合需要 POSIX 文件语义的场景,例如共享目录、数据分析平台、某些传统业务系统。
Ceph 中这部分能力由 CephFS 提供。

文件存储的特点是:

所以从架构视角看,Ceph 虽然对外可以表现成对象、块、文件三种形态,但底层基础其实是统一的。


四、Ceph 的底层核心:RADOS

要真正理解 Ceph,必须先理解一个关键词:RADOS

RADOS 的全称是 Reliable Autonomic Distributed Object Store,也就是“可靠的、自治的分布式对象存储”。它是 Ceph 的底座。

你可以把 Ceph 理解成两层:

无论是文件、块设备,还是对象接口,最终数据都会落到底层的 RADOS 上。

这意味着:

这也是 Ceph 和很多拼装式存储系统的区别之一。


五、Ceph 的核心组件有哪些

在工程实践中,Ceph 集群通常由几个关键组件组成。

1. OSD

OSD 是 Ceph 中最重要的存储进程。
它负责:

通常一块磁盘对应一个 OSD 进程。
如果说 Ceph 的“血肉”在哪里,那就是 OSD。

2. MON

MON 即 Monitor,主要负责维护集群状态信息。
例如:

客户端和其他组件需要先从 MON 获取集群映射信息,然后再和 OSD 直接通信。

3. MDS

MDS 是 Metadata Server,主要服务于 CephFS。
如果你只使用对象存储或块存储,MDS 并不是必须的;但如果要使用 Ceph 文件系统,就需要 MDS 来管理文件系统元数据。

4. RGW

RGW 即 RADOS Gateway,用于提供对象存储网关能力。
它通常对外暴露 S3 或 Swift 风格接口,让应用可以像访问云对象存储那样访问 Ceph。

5. Manager

Manager 模块负责监控、统计、扩展功能和管理能力。
现代 Ceph 集群很多可视化和运维能力都依赖它。


六、Ceph 为什么能去中心化

Ceph 最经典的设计之一,就是它没有传统意义上的集中式数据定位服务。

很多存储系统在读写数据前,需要先查询一个中心化元数据服务,才能知道数据在哪台机器上。这种设计虽然直观,但元数据中心容易成为:

Ceph 采用的是一种更“分布式原生”的思路:通过算法计算数据应该放在哪里,而不是依赖中心节点查表。

这个算法就是著名的 CRUSH


七、CRUSH:Ceph 的灵魂算法

CRUSH 的核心思想可以概括成一句话:

通过规则和集群拓扑计算数据位置,而不是维护一张巨大的映射表。

传统系统怎么做

传统分布式存储常见方式是:

  1. 记录“对象 A 在节点 X”
  2. 记录“对象 B 在节点 Y”
  3. 客户端读写前先查询这张位置表

问题在于,数据量一大,这张表会变得非常庞大,而且一旦节点变更,就要频繁更新。

Ceph 怎么做

Ceph 不保存“每个对象在哪”的中心映射表,而是根据:

通过 CRUSH 算法直接计算出对象应该落在哪些 OSD 上。

这样做有几个非常大的好处:

这也是为什么很多人说:不理解 CRUSH,就不算真正理解 Ceph


八、PG 是什么,为什么大家总在讨论它

学习 Ceph 时,另一个绕不过去的概念是 PG,也就是 Placement Group。

很多初学者会疑惑:既然对象可以直接映射到 OSD,为什么还需要 PG?

原因是如果每个对象都直接参与独立映射和管理,系统复杂度会很高。
于是 Ceph 引入了 PG 作为中间抽象层:

这样做的好处是:

可以把 PG 理解成“对象到磁盘之间的一个分桶层”。
它不是物理实体,但对 Ceph 的性能和稳定性影响很大。

在实际运维中,PG 数量配置不合理,常常会导致:

所以 Ceph 运维里常有一句话:
PG 配得不好,集群就不会太好。


九、Ceph 的数据写入流程

理解一次写入流程,有助于看懂 Ceph 为什么能做到可靠和可扩展。

简化之后,Ceph 的写入过程大致如下:

  1. 客户端先获取集群映射信息。
  2. 客户端根据对象或块信息,通过算法计算目标 PG。
  3. 再由 PG 映射出目标主 OSD 和副本 OSD。
  4. 客户端把写请求发送给主 OSD。
  5. 主 OSD 协调副本写入。
  6. 当副本满足一致性要求后,返回写入成功。

这里有两个关键点:

这让 Ceph 在节点数量增加时,既能提升容量,也能提高整体吞吐能力。


十、Ceph 的高可用是怎么实现的

Ceph 的高可用,不是通过“某一台超级强的机器”实现的,而是通过分布式冗余和自动恢复机制实现的。

1. 副本机制

最常见的是多副本策略,例如 3 副本。
这意味着同一份数据会保存在多个不同节点上。

当某个节点宕机时,系统仍然可以从其他副本中读取数据。

2. 纠删码

对于海量冷数据或归档场景,副本虽然可靠,但空间开销较大。
这时可以使用纠删码,用更低的存储成本换取容错能力。

它的特点是:

3. 自动恢复与重平衡

当 OSD 故障、节点上下线或集群扩容时,Ceph 会自动进行:

这意味着管理员不需要手工指定“这块数据应该挪到哪台机器”,系统会根据规则自动完成。


十一、Ceph 的优势有哪些

Ceph 并不是唯一的分布式存储方案,但它之所以在技术圈长期保持热度,主要因为下面这些优势。

1. 统一存储

一套系统支持对象、块、文件三种能力,减少基础设施割裂。

2. 高扩展性

理论上可以通过持续增加节点来扩展容量和性能,适合从中小规模逐步演进到大规模集群。

3. 去中心化

依赖算法而非中心查表,降低单点风险,也更适合横向扩展。

4. 高可用

支持副本、纠删码、故障域隔离、自动恢复等机制。

5. 基于通用硬件

可以运行在普通 x86 服务器上,不强依赖昂贵专有设备,成本控制更灵活。

6. 云平台兼容性强

Ceph 与 OpenStack、Kubernetes、虚拟化平台的结合非常广泛,生态成熟。


十二、Ceph 的难点和挑战

不过,Ceph 并不是“银弹”。
它强大,但也复杂。

在实际生产中,Ceph 的挑战通常集中在以下几个方面。

1. 学习门槛高

Ceph 有很多概念需要理解:

如果只是停留在“会部署”,往往很难真正驾驭线上集群。

2. 运维复杂

Ceph 集群不是装完就结束了。
真正困难的是长期运行中的容量规划、性能调优、故障排查和版本升级。

3. 对网络和硬件要求敏感

分布式存储对网络延迟、磁盘性能、CPU、内存都比较敏感。
架构设计不合理时,Ceph 不但不会快,反而可能成为性能瓶颈。

4. 故障处理需要经验

比如:

这些问题都不是简单“重启一下”就能解决的。


十三、Ceph 适合什么场景

不是所有场景都适合上 Ceph。
判断是否适合,关键看业务目标。

适合的场景

不太适合的场景

换句话说,Ceph 更像一个“平台级存储系统”,而不是一个轻量玩具。


十四、Ceph 和传统存储的区别

下面用一张表快速对比。

维度 传统集中式存储 Ceph
架构模式 中心化控制较多 去中心化分布式
扩展方式 往往偏纵向扩展 偏横向扩展
硬件依赖 常依赖专有设备 可基于通用服务器
存储类型 往往单一 可统一支持对象、块、文件
单点风险 容易存在控制器风险 通过分布式机制降低单点
运维复杂度 前期较简单 架构和运维更复杂
成本结构 初始采购成本可能高 更适合按节点渐进扩容

这张表并不意味着 Ceph 一定全面优于传统存储。
真实世界里,两者更多是适用场景不同。


十五、一个通俗比喻:把 Ceph 想成“自动分仓的超级仓库系统”

如果把数据看成货物,Ceph 就像一个超大型智能仓库网络。

传统仓库可能需要先问“管理员,这个货在哪”;
Ceph 则更像“根据规则一算,就知道该去哪几个仓位找”。

这个比喻不完全严谨,但对初学者理解 Ceph 的设计思想很有帮助:
它依赖规则和分布式计算,而不是中心化人工登记。


十六、初学者应该怎么学 Ceph

如果你是第一次接触 Ceph,建议按下面的顺序学习。

第一阶段:建立全局认知

先搞懂这些概念:

第二阶段:理解数据路径

重点搞懂:

第三阶段:动手部署实验环境

建议先从最小可运行集群开始,不要一开始就追求“生产级部署”。
先看懂:

第四阶段:进入运维和调优

这一步才是真正拉开差距的地方,包括:


十七、结语

Ceph 本质上不是“一个能存数据的软件”这么简单。它代表的是一种现代分布式存储设计思路:以对象为基础、以算法做数据放置、以去中心化提升扩展性、以冗余机制保证可靠性。