eph 的架构是 分层解耦、去中心化 的设计,核心逻辑是 底层统一存储对象,上层适配不同存储接口。整体分为 4 个核心层次,自下而上层层依赖,每层各司其职。
一、整体层次结构(一句话概括)
物理层 → 基础存储层 → 核心分布式层 → 应用接口层
底层负责数据的可靠存储与分发,上层负责对接用户的不同存储需求(块、文件、对象)。
┌─────────────────────────────────────────┐
│ 应用接口层 (给用户用的) │
│ ├─ RBD(块存储):给K8s/虚拟机用 │
│ ├─ CephFS(文件存储):给共享目录用 │
│ └─ RGW(对象存储):给S3/HTTP接口用 │
├─────────────────────────────────────────┤
│ 核心分布式层 (Ceph的灵魂) │
│ ├─ RADOS(可靠分布式对象存储):核心引擎 │
│ ├─ CRUSH算法:数据分片与寻址(无中心) │
│ └─ 副本/纠删码:数据高可靠保障 │
├─────────────────────────────────────────┤
│ 基础存储层 (集群核心组件) │
│ ├─ OSD(对象存储守护进程):存数据 │
│ ├─ MON(监视器):集群状态管理 │
│ ├─ MGR(管理器):监控/运维/API │
│ └─ MDS(元数据服务器):CephFS专属 │
├─────────────────────────────────────────┤
│ 物理层 (硬件基础) │
│ ├─ 服务器节点(x86/ARM) │
│ ├─ 磁盘(HDD/SSD/NVMe) │
│ └─ 网络(万兆/InfiniBand) │
└─────────────────────────────────────────┘
1. 物理层(最底层,硬件基础)
Ceph 运行的硬件载体,无特殊硬件依赖,普通 x86 服务器即可搭建。
- 服务器节点:集群的计算与存储节点,可混部(一个节点同时跑 OSD/MON/MGR)或分离部署。
- 存储磁盘:Ceph 的数据最终存在磁盘上,1 个 OSD 对应 1 块磁盘(推荐 SSD 提升性能)。
- 网络:节点间通信的关键,要求低延迟、高带宽(万兆网起步,海量数据场景用 InfiniBand)。
2. 基础存储层(集群核心组件,承上启下)
Ceph 集群的 核心守护进程,负责集群的运行、管理与数据存储,是 RADOS 层的具体实现。
| 组件 | 核心作用 | 部署要求 | 关键特性 |
|---|---|---|---|
| OSD(Object Storage Daemon) | 数据存储的核心,负责数据的写入、读取、复制、恢复 | 每个磁盘对应 1 个 OSD,数量 ≥3 | 自动故障检测、数据均衡、纠删码计算 |
| MON(Monitor) | 集群的 “大脑”,管理集群状态、元数据、认证授权 | 必须奇数个(3/5 个),高可用 | 维护集群映射表(Cluster Map),无单点故障 |
| MGR(Manager) | 集群的 “运维助手”,负责监控、统计、REST API、仪表盘 | 至少 1 个,推荐 2 个做高可用 | 提供 ceph -s 状态查询、Prometheus 监控对接 |
| MDS(Metadata Server) | 仅 CephFS 用,管理文件系统的元数据(目录结构、权限) | 至少 1 个,多活部署提升性能 | 元数据与数据分离存储,提高文件访问速度 |
3. 核心分布式层(Ceph 的灵魂,最核心的一层)
这一层是 Ceph 区别于其他存储系统的 核心竞争力,对外提供统一的对象存储能力,隐藏底层硬件细节。
(1)RADOS(Reliable Autonomic Distributed Object Store)
- 中文:可靠、自主、分布式对象存储
- 核心作用:Ceph 的底层引擎,所有数据最终都以 对象 的形式存储在 RADOS 中。
- 关键特性:
- 去中心化:无中心节点,数据分布由 CRUSH 算法决定,不依赖任何主节点。
- 自主管理:自动处理节点故障、数据恢复、负载均衡,无需人工干预。
- 高可靠:通过副本(默认 3 副本)或纠删码(EC)保证数据不丢失。
(2)CRUSH 算法(Controlled Replication Under Scalable Hashing)
-
中文:可控的、可扩展的哈希复制算法
-
核心作用:决定数据存在哪个 OSD 上,是 Ceph 去中心化的核心。
-
工作流程:
- 用户写入数据 → Ceph 将数据切分为固定大小的 对象(默认 4MB)。
- CRUSH 算法根据 对象 ID + 集群映射表,计算出该对象应该存储的 OSD 列表。
- 数据直接写入目标 OSD,无需经过任何中间节点(对比传统存储的 “中心节点转发” 模式)。
-
优势:支持 PB 级扩容,新增节点后自动均衡数据,性能不随集群规模增大而下降。
(3)副本 / 纠删码机制
- 副本模式:默认 3 副本,同一份数据存 3 个不同 OSD,可靠性最高,占用 3 倍存储空间。
- 纠删码模式:将数据切分为 N 块,再生成 M 块校验块,只需任意 N 块就能恢复数据(如 4+2 模式,占用 1.5 倍存储空间),兼顾可靠性与成本。
4. 应用接口层(给用户用的,对接不同场景)
基于 RADOS 层提供的统一对象存储能力,封装出不同的存储接口,满足用户的多样化需求。
(1)RBD(RADOS Block Device)—— 块存储
- 功能:将 RADOS 中的对象封装成 块设备,对外提供裸盘一样的访问接口。
- 应用场景:K8s PVC、虚拟机磁盘(VMware/KVM)、数据库数据盘(MySQL/Redis)。
- 特点:支持快照、克隆、 Thin Provisioning(瘦分配),适合低延迟、高 IOPS 的场景。
- K8s 对接:通过
rbd-provisioner或 CSI 插件,直接作为 Pod 的持久化存储。
(2)CephFS(Ceph File System)—— 文件存储
- 功能:基于 RADOS 提供 POSIX 兼容的文件系统,支持目录树结构、多客户端共享。
- 应用场景:共享文件服务器、日志存储、大数据分析(Hadoop/Spark)、代码仓库。
- 特点:元数据由 MDS 管理,数据存在 OSD 中,支持 ReadWriteMany(RWX),多节点同时挂载。
(3)RGW(RADOS Gateway)—— 对象存储
- 功能:基于 RADOS 提供 兼容 S3/Swift 接口的对象存储服务,支持 HTTP/HTTPS 访问。
- 应用场景:静态资源存储(图片 / 视频)、备份归档、CDN 源站、对象存储服务(类似阿里云 OSS)。
- 特点:支持 Bucket 管理、访问控制(ACL)、生命周期策略,适合海量非结构化数据存储。
