1. Ceph 存储基础:发展历史、核心设计理念与分布式存储的关系

Ceph 是当前云原生存储领域最具影响力的开源分布式存储系统之一,也是 Rook 在 Kubernetes 上管理存储后端的主要目标。理解 Ceph 的起源、设计哲学及其在分布式存储生态中的定位,是掌握 Rook Ceph 控制平面调用的前提。

1.1 Ceph 发展历史

Ceph 的诞生源于 2004 年 Sage Weil 在加州大学圣克鲁兹分校(UCSC)的博士研究项目。其核心目标是设计一个无单点故障、可自愈、可线性扩展的分布式文件系统。2007 年,Ceph 正式开源并进入 Linux 内核主线。此后,Ceph 从文件系统逐步演变为统一存储平台,支持对象、块和文件三种接口。

时间 里程碑 关键意义
2004 Sage Weil 启动 Ceph 博士项目 提出 CRUSH 算法与 RADOS 架构雏形
2007 Ceph 开源并进入 Linux 内核 成为内核原生分布式文件系统选项
2012 Inktank 公司成立 提供 Ceph 商业支持与产品化
2014 Red Hat 收购 Inktank Ceph 获得企业级生态与持续投入
2018 Ceph 成为 CNCF 孵化项目 与 Kubernetes 生态深度整合
2022+ Ceph Quincy / Reef 版本 强化 NVMe-oF、多站点、Rook 集成
关键认知:Ceph 从诞生之初就面向“无中心”设计,这与后来 Kubernetes 的声明式控制平面理念高度契合。Rook 正是利用这一特性,将 Ceph 的存储能力以 Operator 模式注入 K8s 集群。

1.2 核心设计理念

Ceph 的设计围绕三个核心理念展开,这些理念直接决定了其架构优势与运维特征:

  • 完全去中心化(No Single Point of Failure):所有组件均支持多副本或纠删码部署,无主节点瓶颈。客户端直接与存储节点通信,不经过元数据服务器。
  • CRUSH 算法(Controlled Replication Under Scalable Hashing):数据分布由客户端计算,无需查询中心化元数据表。CRUSH 将数据对象映射到 PG(Placement Group),再映射到 OSD(Object Storage Daemon),实现数据自管理。
  • 统一存储(Unified Storage):同一集群同时提供对象存储(RADOS Gateway / S3/Swift)、块存储(RBD)和文件存储(CephFS),底层统一由 RADOS 层承载。

CRUSH 算法核心公式(简化示意):

CRUSH(pg_id, cluster_map) → [osd1, osd2, osd3]
// 输入:PG ID + 集群拓扑(机架/主机/OSD)
// 输出:一组目标 OSD 列表(用于数据放置)

客户端本地即可计算数据位置,无需与中心节点交互,这是 Ceph 线性扩展的根本保证。

1.3 Ceph 与分布式存储的关系

在分布式存储技术谱系中,Ceph 属于软件定义存储(SDS)和统一存储的典型代表。它与传统分布式存储的对比关系如下:

维度 Ceph 传统分布式存储(如 HDFS)
元数据管理 无中心(CRUSH 算法) 中心化 NameNode / Master
数据接口 对象 / 块 / 文件 三合一 通常仅支持单一接口
扩展方式 在线水平扩展,数据自动再平衡 需手动 rebalance 或停机
自愈能力 自动检测 OSD 故障并恢复 PG 依赖上层应用或手动介入
K8s 集成 原生 CSI 驱动 + Rook Operator 通常需额外适配层

Ceph 在分布式存储生态中的定位可以概括为:底层 RADOS 提供高可靠对象存储,上层 librados / RBD / CephFS / RGW 提供多协议访问,Rook 则作为 Kubernetes 上的控制平面,将 Ceph 集群的部署、配置、扩缩容、故障恢复全部声明式化。

常见误区:Ceph 不是“分布式文件系统”的简单替代品。它的核心是 RADOS 对象存储层,文件系统(CephFS)只是上层的一种访问协议。在 K8s 场景中,块存储(RBD)和对象存储(RGW)的使用频率远高于文件系统。

1.4 Ceph 逻辑架构概览

下图展示了 Ceph 的核心组件分层及其与 Rook 控制平面的关系。注意:Rook 本身不参与数据路径,仅管理 Ceph 组件的生命周期与配置。

Ceph 逻辑架构与 Rook 控制平面关系 Ceph 逻辑架构与 Rook 控制平面关系 Rook Operator (K8s 控制平面) Ceph 管理组件:MON / MGR / MDS RADOS 数据层(Reliable Autonomic Distributed Object Store) OSD 1 OSD 2 OSD 3 OSD N 统一访问接口 RBD (块) RGW (对象/S3) CephFS (文件) Kubernetes (PVC / CSI / Pod) 说明:Rook 仅管理 Ceph 组件生命周期与配置,不参与数据路径;数据流直接由 K8s 节点通过 CSI 驱动访问 Ceph OSD。

1.5 本章小结

  • Ceph 从 2004 年博士项目起步,历经开源、商业化、Red Hat 收购、CNCF 孵化,已成为云原生存储的事实标准之一。
  • 其核心设计理念——去中心化、CRUSH 算法、统一存储——使其在扩展性、自愈性和接口多样性上优于传统分布式存储。
  • Ceph 与分布式存储的关系:它是 SDS 和统一存储的代表,底层 RADOS 提供对象存储基础,上层多协议访问,Rook 则作为 K8s 控制平面管理 Ceph 集群。
  • 在后续章节中,我们将深入 Rook 如何通过 CRD 和 Operator 模式调用 Ceph 控制平面接口,实现存储集群的声明式管理。