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 采用去中心化的架构设计,所有组件平等协作:
- 客户端层:应用程序通过 Librados、RBD、CephFS 访问数据
- 存储接口层:RADOS(对象)、RBD(块)、RGW(对象网关)、CephFS(文件)
- 集群层:MON(监控)、OSD(存储)、MDS(元数据)、Manager(管理)
- 物理层:磁盘、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 的核心算法,负责智能数据分布:
工作原理:
- 客户端计算对象名称的哈希值
- 根据 CRUSH Map 和副本数,确定 OSD 位置
- 直接写入目标 OSD,无需中心调度
优势:
- 去中心化:无需元数据服务器
- 可扩展:添加/删除 OSD 时数据自动重平衡
- 高可用:故障时自动恢复
3.2 数据分布流程
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
4.2 对象存储(RGW)
RGW(RADOS Gateway)提供 S3/Swift 兼容接口:
- 特点:RESTful API、多租户、生命周期管理
- 场景:云存储、备份归档、大数据湖
- 访问方式:AWS SDK、OpenStack Swift、curl
4.3 文件系统(CephFS)
CephFS 提供 POSIX 兼容的分布式文件系统:
- 特点:动态扩展、快照、配额、多客户端并发
- 场景:企业文件共享、home 目录、高性能计算
- 访问方式:kernel client、FUSE、NFS gateway
五、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 算法实现智能数据分布
- ✅ 高可靠、高扩展、高性能
下一步学习:
- 使用 cephadm 部署 Ceph 集群
- 配置 RBD 块存储
- 部署 RGW 对象存储网关
- 搭建 CephFS 文件系统
- 学习运维管理和故障排查
🔗 相关链接
下一篇将介绍《Ceph 集群部署:使用 cephadm 快速搭建生产环境》,敬请期待!🚀






