Ceph分布式存储深度解析:架构、核心组件与三大存储形态
标签:Ceph、分布式存储、SDS、云原生、RADOS
前言
提到分布式存储,Ceph绝对是绕不开的"六边形选手"。作为开源软件定义存储(SDS)的标杆,它诞生于Sage Weil的博士课题,最大亮点就是一套集群同时对外提供对象、块、文件三种存储服务,无需专用硬件,跑在普通x86服务器上,支持PB级横向扩容,广泛用于OpenStack、Kubernetes、私有云、容器持久化、备份归档场景。
很多新手初次接触Ceph会被MON、OSD、PG、CRUSH一堆名词劝退。上篇我们从基础入手,搞懂Ceph底层架构、核心组件,看懂三种存储接口的差异,理解它"去中心化自愈"的设计思想。
一、Ceph整体架构总览
Ceph的底层基石是RADOS(Reliable Autonomic Distributed Object Store,可靠自主分布式对象存储)。RBD、RGW、CephFS全部是构建在RADOS之上的上层服务。RADOS负责把数据打散成对象,跨节点存储、副本复制、故障自动恢复,是整个Ceph的心脏。
整体分层:
- 底层:RADOS集群(MON、OSD、MGR、MDS)
- 中间库:librados,客户端SDK,所有上层服务统一调用这个库和集群通信
- 上层服务:RBD块存储、RGW对象网关、CephFS文件系统
Ceph核心守护进程组件表
| 组件名称 | 全称 | 核心职责 | 部署建议 |
|---|---|---|---|
| MON(Monitor) | ceph-mon | 维护集群Cluster Map(集群拓扑、OSD状态、认证信息),通过Paxos选主保证一致性,客户端先找MON拿集群地图 | 至少3个,奇数节点,保证仲裁(quorum),小集群3个,大规模5个 |
| OSD | Object Storage Daemon | Ceph数据真正存放载体,一个OSD对应一块磁盘;负责对象读写、副本复制、心跳检测、故障恢复、数据回填(backfill) | 大量部署,集群容量和IO性能主要由OSD决定;HDD/SSD/NVMe均可 |
| MGR(Manager) | ceph-mgr | 集群管理助手,采集性能指标、资源使用率,提供Dashboard、Prometheus监控、各类管理模块 | 至少2个主备,防止单点故障 |
| MDS | Metadata Server | CephFS专用,管理文件系统元数据(目录、权限、文件名),RBD/RGW不需要MDS | CephFS场景部署,支持多MDS动态负载均衡 |
💡划重点:Ceph没有中心化元数据存储。传统SAN/NAS依赖中心元数据服务器,一旦挂掉整个存储瘫痪。Ceph依靠CRUSH算法,客户端拿到集群map后,直接和OSD通信读写数据,MON只负责维护集群状态,不参与数据IO路径,这是它可以无限横向扩容的关键。
二、CRUSH算法:Ceph的"智能调度大脑"
CRUSH全称Controlled Replication Under Scalable Hashing,可扩展哈希下的受控副本放置,是Ceph最核心的黑科技。
- 传统存储:中央查询表记录每一份数据在哪台机器;扩容、硬盘损坏时需要大规模迁移元数据,性能差。
- CRUSH:确定性算法,不用查表,输入对象ID + 集群拓扑,直接算出该对象的副本应该落在哪些OSD上。
CRUSH支持自定义故障域:可以强制把副本分布在不同磁盘、不同服务器、不同机架、不同机房。硬盘坏了,CRUSH自动重新计算新位置,OSD之间自动完成数据副本重建,实现自愈。
🔑PG(Placement Group,放置组):理解PG非常关键。
对象数量极其庞大,Ceph不会直接管理每一个对象。它把大量对象打包放入PG,PG作为最小管理单元,一个PG映射到一组OSD(主OSD+副本OSD)。Pool(存储池)由多个PG组成。
PG数量规划是Ceph运维经典难题,PG太少负载不均;PG太多消耗大量CPU内存。
三、三大存储接口:一套集群,三种玩法
Ceph最吸引人的地方,就是同一套RADOS底层,对外提供三种存储能力,适配不同业务。
| 存储接口 | 名称 | 接口协议 | 核心特性 | 典型业务场景 |
|---|---|---|---|---|
| RBD | RADOS块设备 | Linux内核块设备 | 精简置备、快照、克隆、增量镜像、异地镜像;KVM/QEMU原生支持 | 云主机系统盘/数据盘、K8s PVC、数据库块存储 |
| RGW | RADOS Gateway对象网关 | 兼容S3、Swift REST API | 桶、对象、版本控制、生命周期、跨区域复制 | 图片、视频、日志归档、备份、静态资源存储 |
| CephFS | Ceph文件系统 | POSIX标准文件系统 | 目录树、文件权限、多客户端并发挂载 | 文件共享、大数据计算、日志文件存储 |
简单一句话区分:
- RBD:给虚拟机/容器用的虚拟硬盘;
- RGW:像阿里云OSS、S3,存图片视频二进制对象;
- CephFS:像NFS,支持文件夹、ls、chmod这类文件操作。
⚠️注意选型坑:RBD性能最好;RGW适合海量非结构化数据;CephFS因为要维护文件元数据,在高并发小文件场景需要单独规划MDS资源。
四、Ceph的优势与局限
优势
- 软件定义,通用x86服务器,无需专用存储硬件,降低硬件采购成本;
- 去中心化架构,无单点故障,硬盘/节点故障自动重建副本;
- 三合一存储,一套集群支撑块、对象、文件,统一运维;
- 在线横向扩容:新增服务器和磁盘,集群自动均衡数据,业务不中断;
- 支持副本模式(2副本、3副本)和纠删码EC,冷数据用EC节省存储空间。
局限性
- 运维门槛高,组件多,参数复杂,需要专业人员维护;
- 故障重建时,大量数据回填会占用网络、磁盘IO,容易引发业务性能抖动;
- 小文件场景性能短板明显;
- 网络要求高,生产环境建议独立存储网络,万兆起步。
小结
上篇我们理清了Ceph底层RADOS、四大核心组件、CRUSH+PG原理,以及三大存储接口的选型差异。Ceph本质不是一个简单的文件盘,而是一套分布式对象存储底座,块/对象/文件都是底座之上的服务。
下篇,我们进入实战视角:硬件规划、集群部署流程、副本vs纠删码对比、日常运维命令、监控告警、常见故障排查、性能调优,还有生产环境踩坑经验。