Ceph 分布式存储入门:架构解析与核心概念

Ceph 是一个统一的分布式存储系统,提供对象存储、块存储和文件系统存储三种接口。它以高可靠性、高扩展性和高性能著称,是 OpenStack、Kubernetes 等云平台的首选后端存储方案。

本文将带你全面了解 Ceph 的核心概念、架构设计和适用场景,为后续的实践操作打下理论基础。


一、什么是 Ceph

1.1 Ceph 简介

Ceph 诞生于 2004 年,由 Sage Weil 在加州大学圣克鲁兹分校开发,2014 年成为 Red Hat 存储战略的核心产品。Ceph 的名字来源于法语"头足类动物"(如章鱼),象征着其强大的触手(存储能力)可以延伸到任何地方。

核心特点:

  • 统一存储:一套系统支持对象、块、文件三种存储接口
  • 高可靠性:数据多副本存储,自动故障恢复
  • 高扩展性:可线性扩展到 EB 级别,支持数千个节点
  • 高性能:基于 CRUSH 算法的智能数据分布
  • 自愈能力:自动检测并修复数据损坏
  • 开源免费:Apache 2.0 许可证,社区活跃

1.2 适用场景

场景 存储类型 说明
云平台后端存储 块存储 (RBD) OpenStack Cinder/Nova、Kubernetes PV
大数据存储 对象存储 (RGW) Hadoop、Spark 数据湖
企业文件共享 文件系统 (CephFS) NFS 替代、home 目录
备份归档 对象存储 (RGW) 长期数据保存、冷存储
数据库存储 块存储 (RBD) MySQL、PostgreSQL、MongoDB
容器持久化 块存储/文件系统 Kubernetes StatefulSet

二、Ceph 核心架构

2.1 整体架构图

Ceph 采用去中心化的架构设计,所有组件平等协作:

  1. 客户端层:应用程序通过 Librados、RBD、CephFS 访问数据
  2. 存储接口层:RADOS(对象)、RBD(块)、RGW(对象网关)、CephFS(文件)
  3. 集群层:MON(监控)、OSD(存储)、MDS(元数据)、Manager(管理)
  4. 物理层:磁盘、SSD、NVMe 等存储设备

2.2 核心组件详解

1. RADOS(Reliable Autonomic Distributed Object Store)

RADOS 是 Ceph 的基石,所有其他存储接口都构建在其之上。它提供:

  • 对象存储接口
  • 数据复制和故障恢复
  • 数据分布和负载均衡
  • 集群成员管理

2. OSD(Object Storage Daemon)

OSD 是 Ceph 的数据存储单元,每个 OSD 对应一个物理磁盘:

  • 存储实际数据
  • 处理数据复制、恢复、回填
  • 向 MON 报告健康状态
  • 与其他 OSD 通信

OSD 状态说明:

  • up:OSD 正常运行
  • down:OSD 故障,无法访问
  • in:OSD 在集群中,参与数据分布
  • out:OSD 已退出集群,数据已迁移

3. MON(Monitor)

MON 维护集群的全局状态视图:

  • 存储集群映射(Cluster Map)
  • OSD 状态和配置信息
  • 认证密钥(Keyring)
  • 日志和事件记录

建议部署:至少 3 个 MON 节点,保证高可用(需要多数派共识)

4. MGR(Manager)

MGR 提供额外的监控和管理功能:

  • 收集性能指标和状态信息
  • 提供 REST API 和 Dashboard
  • 运行管理插件
  • 减轻 MON 负担

5. MDS(Metadata Server)

MDS 仅用于 CephFS,管理文件系统的元数据:

  • 目录结构
  • 文件权限
  • 时间戳

注意:对象存储 (RADOS/RGW) 和块存储 (RBD) 不需要 MDS

6. RGW(RADOS Gateway)

RGW 提供 S3 和 Swift 兼容的对象存储接口:

  • RESTful API
  • 多租户支持
  • 生命周期管理
  • 跨区域复制

三、数据存储原理

3.1 CRUSH 算法

CRUSH(Controlled Replication Under Scalable Hashing)是 Ceph 的核心算法,负责智能数据分布:

工作原理:

  1. 客户端计算对象名称的哈希值
  2. 根据 CRUSH Map 和副本数,确定 OSD 位置
  3. 直接写入目标 OSD,无需中心调度

优势:

  • 去中心化:无需元数据服务器
  • 可扩展:添加/删除 OSD 时数据自动重平衡
  • 高可用:故障时自动恢复

3.2 数据分布流程

# 数据写入流程
1. 客户端计算对象哈希 → PG ID
2. 根据 CRUSH Map 找到 PG 所在 OSD
3. 写入 Primary OSD
4. Primary OSD 复制到其他副本 OSD
5. 返回写入成功

# 数据读取流程
1. 客户端计算对象哈希 → PG ID
2. 根据 CRUSH Map 找到 OSD
3. 直接从 OSD 读取数据

3.3 PG(Placement Group)

PG 是 Ceph 数据管理的逻辑单元:

  • 多个对象映射到一个 PG
  • PG 映射到多个 OSD(副本数决定)
  • 减少元数据量,提高效率

PG 数量计算:

  • 公式:PG 总数 = (OSD 数量 × 单 OSD 容量) / 目标单 PG 容量
  • 目标单 PG 容量:100GB - 500GB
  • 必须是 2 的幂(如 32、64、128、256)

四、Ceph 存储接口

4.1 块存储(RBD)

RBD(RADOS Block Device)提供块设备接口:

  • 特点:精简配置、快照、克隆、增量备份
  • 场景:虚拟机磁盘、容器持久卷、数据库存储
  • 访问方式:librbd、kernel module、iSCSI gateway
# 创建 RBD 镜像
rbd create --size 10G pool1/image1

# 映射到本地
rbd map pool1/image1

# 创建快照
rbd snap create pool1/image1@snap1

# 克隆快照
rbd clone pool1/image1@snap1 pool1/image1_clone

4.2 对象存储(RGW)

RGW(RADOS Gateway)提供 S3/Swift 兼容接口:

  • 特点:RESTful API、多租户、生命周期管理
  • 场景:云存储、备份归档、大数据湖
  • 访问方式:AWS SDK、OpenStack Swift、curl
# 使用 AWS CLI 访问
aws --endpoint-url http://ceph-rgw:80 s3 mb s3://mybucket
aws --endpoint-url http://ceph-rgw:80 s3 cp file.txt s3://mybucket/

4.3 文件系统(CephFS)

CephFS 提供 POSIX 兼容的分布式文件系统:

  • 特点:动态扩展、快照、配额、多客户端并发
  • 场景:企业文件共享、home 目录、高性能计算
  • 访问方式:kernel client、FUSE、NFS gateway
# 挂载 CephFS
mount -t ceph mon1:6789,mon2:6789,mon3:6789:/ /mnt/cephfs -o name=admin,secret=xxx

# 或通过 FUSE
ceph-fuse -m mon1:6789 /mnt/cephfs

五、Ceph 版本选择

5.1 当前 LTS 版本

版本 代号 状态 建议
18.2.x Reef LTS(推荐) 生产环境首选
19.2.x Squid 稳定版 新功能尝鲜
20.x.x Tentacle 开发版 测试环境

5.2 版本升级策略

  • 生产环境选择 LTS 版本
  • 升级前充分测试
  • 遵循官方升级路径
  • 做好数据备份

六、硬件建议

6.1 最小部署

组件 配置 数量
CPU 4 核心 每节点
内存 16GB 每节点
系统盘 100GB SSD 每节点
数据盘 1TB+ HDD/SSD 每节点 1+
网络 10GbE 每节点

6.2 生产环境推荐

  • MON/MGR:3 节点独立部署,8 核 32GB 内存
  • OSD:SSD 缓存 + HDD 数据,或全闪存
  • 网络:前端 25GbE+,后端 25GbE+(分离流量)
  • OS:Ubuntu 22.04 LTS / Rocky Linux 9

总结

通过本文,你应该对 Ceph 有了全面的了解:

  • ✅ Ceph 是统一的分布式存储系统
  • ✅ 支持对象、块、文件三种存储接口
  • ✅ 核心组件:OSD、MON、MGR、MDS、RGW
  • ✅ CRUSH 算法实现智能数据分布
  • ✅ 高可靠、高扩展、高性能

下一步学习:

  1. 使用 cephadm 部署 Ceph 集群
  2. 配置 RBD 块存储
  3. 部署 RGW 对象存储网关
  4. 搭建 CephFS 文件系统
  5. 学习运维管理和故障排查

🔗 相关链接

下一篇将介绍《Ceph 集群部署:使用 cephadm 快速搭建生产环境》,敬请期待!🚀

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注