Ceph 分布式存储
一、概述
Ceph 是一个开源的统一分布式存储系统,能同时提供对象存储、块存储和文件存储服务,去中心化架构、高可用、可横向扩容,常用于数据中心、云计算等场景。
核心特点
- 分布式架构:无中心节点,通过集群自动扩展存储容量和性能,支持 PB 级数据存储
- 高可靠性:数据自动副本复制或纠删码冗余,避免单点故障,保障数据安全
- 统一存储接口:一套集群同时提供对象、块、文件三种存储服务,简化架构
二、核心组件
| 组件 | 全称 | 功能 |
|---|---|---|
| MON | Ceph Monitor | 维护集群状态和节点映射关系,奇数部署(3/5 个)防止脑裂 |
| OSD | Object Storage Device | 负责存储数据、处理读写请求,一块磁盘对应一个 OSD |
| MGR | Ceph Manager | 管理节点,提供监控面板、告警、外部对接 |
| MDS | Metadata Server | 管理文件系统元数据(仅 CephFS 时需要) |
| RADOS | Reliable Autonomic Distributed Object Store | 底层可靠对象存储引擎,提供统一接口供上层组件调用 |
MON 作用与部署规则
保存集群所有 Map(MonMap、OsdMap、PgMap、CrushMap),必须奇数个节点,通常部署 3 或 5 个防止脑裂。
OSD 工作机制
一块磁盘对应一个 OSD,负责:
- 本地数据读写
- 副本同步
- 心跳检测与故障上报
- 数据回填(Rebalancing)
三、三大存储接口
| 接口 | 类型 | 用途 |
|---|---|---|
| RBD | 块存储 | K8s PVC、云主机硬盘、虚拟机磁盘 |
| RGW | 对象存储 | 兼容 S3 协议,适用于图片、备份、归档 |
| CephFS | 文件存储 | 共享目录、日志集群、大数据挂载 |
四、核心原理
CRUSH 算法
无中心数据寻址算法,通过层级故障域自动计算数据存放 OSD,实现:
- 数据均衡分布
- 故障域隔离(跨主机、机架、机房)
- 自动迁移与恢复
PG(Placement Group)
放置组,数据分片的最小单位。数据写入流程:
客户端请求 → 计算 PG → 找主 OSD → 主 OSD 同步副本 → 全部落盘 → 返回写入成功
PG 数量计算公式:PG总数 = (OSD数量 × 100) / 副本数,取就近的 2 的幂次方。
三副本 vs EC 纠删码
| 特性 | 3 副本 | EC 纠删码 |
|---|---|---|
| 读写性能 | 快 | 偏弱 |
| 空间利用率 | 低(33%) | 高 |
| 恢复速度 | 快 | 慢 |
| 适用场景 | 数据库、业务数据 | 冷数据、备份、归档 |
常用 EC 策略:4+2、8+3(4 份数据 2 份校验,最多允许 2 块盘损坏)
数据写入流程
- 客户端发起写请求
- CRUSH 算法计算目标 PG
- 定位 PG 的主 OSD
- 主 OSD 同步数据到副本 OSD
- 所有副本落盘后返回写入成功
五、集群状态与故障排查
集群状态
| 状态 | 说明 |
|---|---|
HEALTH_OK | 正常 |
HEALTH_WARN | 告警(磁盘满、PG 不均衡、OSD down) |
HEALTH_ERR | 严重故障(大量 OSD 离线、PG 异常) |
常见 PG 异常状态
- degraded:数据降级,副本不足
- recovery:正在数据恢复
- peering:PG 正在选举同步
- stale / incomplete / down
常见故障场景
- OSD 挂掉:MON 检测下线,CRUSH 重新分配 PG,数据自动迁移回填
- 磁盘满告警:清理无用数据、调整存储池配额、扩容新增 OSD、调整满阈值
- 慢 IO 原因:磁盘性能差、PG 数量不合理、副本过多、网络拥堵、OSD 负载高、回填抢占 IO
六、Kubernetes 集成
K8s 使用 Ceph 的两种方式:
- Ceph RBD:传统块存储
- Ceph CSI:标准容器存储接口(主流生产用法)
存储池作用
- 逻辑隔离资源
- 划分不同业务
- 设置不同副本/EC 策略
- 设置配额与权限隔离
扩容流程
加磁盘 → 创建 OSD → 加入 CRUSH 树 → 集群自动均衡数据
七、常用运维命令
ceph -s # 查看集群整体状态
ceph df # 查看存储池容量
ceph osd tree # 查看 OSD 层级架构
ceph pg stat # 查看 PG 整体状态
ceph health detail # 查看告警详情
rbd list # 查看块设备
八、高可用与数据恢复
高可用保障机制
- 多 MON、多 OSD、多副本
- CRUSH 故障域隔离
- 自动故障转移
- 自愈恢复
数据恢复原理
副本缺失后,同级副本重新同步数据,自动回填至空闲 OSD。
减少回填影响业务
- 调整恢复优先级
- 限制回填带宽
- 业务低峰期扩容
- 拆分故障域
九、生产调优
冷热数据分层
结合 Cache Tier 热池 + 冷 EC 池,自动冷热数据迁移,提升性能并节省空间。
Ceph 优缺点
优点:统一存储、去中心化、弹性扩容、开源免费、多接口兼容
缺点:部署复杂、运维门槛高、大规模集群调优难度大
十、面试常考
一句话总结
Ceph 是一个开源统一分布式存储系统,以 RADOS 为底层引擎,通过 CRUSH 算法实现去中心化数据分布,提供 RBD(块)、RGW(对象)、CephFS(文件)三大存储接口,具备高可用、弹性扩容、自愈能力,广泛用于云计算、大数据和企业存储场景。
关联文档
- ../kubernetes/core/K8s 核心概念#💾 存储 — K8s 集成 Ceph CSI/RBD
- ../openstack/OpenStack 云计算平台 — Ceph 作为 OpenStack 存储后端
- ../kubernetes/architecture/Share-nothing 无共享架构 — Ceph 基于无共享架构设计
- ../linux/system/Linux — Ceph 部署在 Linux 之上