自托管数据规模再往上走,尤其想让"块存储"也做到高可用(给虚拟机/容器提供可热迁移的虚拟磁盘)、又想要统一的"对象+S3 + 文件"三套接口时,单机盘和轻量分布式方案就不够扛了。Ceph 是这块的行业级开源答案:一个软件定义存储平台,同一套底层集群能同时提供块存储(RBD)、对象存储(RGW/S3)与文件系统(CephFS)。这篇讲清 Ceph 解决什么、核心组件(MON/OSD/PG)怎么理解、和 GlusterFS/单机盘怎么选、最小集群怎么起,以及"上规模才划算、小场景勿过度"的边界。
一、Ceph 解决什么:把一堆服务器磁盘做成高可用的统一存储池
自托管到一定程度会同时想要三类能力:给 KVM/容器稳定的"高可用虚拟磁盘"(挂了能继续访问、能迁移)、一个 S3 对象存储、以及共享文件系统——这三样分开各起一套太碎。Ceph 的价值是"一套存储集群,三者统一供给":底层用若干节点的数据盘组成海量存储池,上层按需暴露成块设备(RBD)、S3 对象(RGW)或文件系统(CephFS);数据在节点间自动多副本(或纠删码)冗余、自动恢复重平衡,节点/磁盘故障业务不停、数据不丢。理解它要抓一套自管理的数据分布机制:Ceph 把存储与 IO 编排在自己的组件里,上层拿到的是一整个"高可用存储池",而不是某台机器的盘。适合"要块高可用 + 想一库多接口"的自托管,但代价是部署与运维复杂度明显高于前文的 GlusterFS/单机方案。
二、核心组件:MON / OSD / PG,别被词吓到
Ceph 的组成看似多,抓住三个即可:MON(Monitor)——集群的心跳与元数据/配置仲裁,管"集群谁在、哪个 OSD 健康、数据分布映射";OSD(Object Storage Daemon)——每块数据盘上跑一个,真正存数据并参与复制/恢复;PG(Placement Group)——Ceph 内部把对象映射到若干 PG、PG 再映射到 OSD,负责"多副本放哪、故障如何重分布"的粒度单元。要"集群高可用"至少要有多个 MON(建议 3)与足够健康的 OSD 磁盘。PG 的数量规划很重要:太少则数据分布不均、太多则元数据开销大,按"每 OSD 给个 ALGO 经验的 PG 数"估算后很难事后改。
# 以 cephadm 快速起一个集群的思路(假设 3 台:c1 c2 c3,各有数据盘)
# 第 1 台带几个 daemon 引导(bootstrap),其余节点加入:
cephadm bootstrap --mon-ip 10.0.0.21
# 其余节点用生成的 ssh key 加入,并把数据盘加为 OSD:
ceph orch device ls
ceph orch apply osd --all-available-devices
# 建池并启用 RBD(给"虚拟机/容器"用的高可用块存储)
ceph osd pool create vmpool 128
rbd pool init vmpool
rbd create --size 40G vmpool/vm1
# 某些场景同时启用 RGW(S3):
ceph orch apply rgw rgw.ceph
监控三样常态化:`ceph -s`(整体健康,HEALTH_OK 才稳)、`ceph osd tree`(看每个 OSD 状态)、`ceph osd status`。布局/运维坑集中在"OSD 少于副本数会导致数据不可用"、"单 MON 没冗余"、"没做数据盘独立即使出现故障会拖垮系统盘"。
三、与 GlusterFS / 单机方案的取舍
自己机器的存储方案里:单机盘最省心但不高可用、容量有天花板;GlusterFS 简单、适合"以文件为主的共享存储"(前文已讲);Ceph 复杂但最"全能 + 高可用"——尤其"给虚拟机/容器用块设备""想要块对象文件三套接口"时,它是更近的答案。但代价必须认:部署与排障复杂度、对硬件与网络的要求(建议多节点、独立数据盘、低延迟内网)都更高。刚起步、只有一两台又只差共享文件,优先 GlusterFS/NFS;真正要"块高可用 + 一库多接口 + 上规模"时才上 Ceph,道理上"别为了极小的好处抗巨大的复杂度"。
# 管理 Ceph 的最小命令集(日常巡检与排障)
ceph status # 整体健康/集群状态
ceph osd tree # 所有 OSD 与节点拓扑/状态
ceph pg stat # PG 状态与分布
ceph health detail # 健康异常详情(很多 Ceph 问题的第一现场)
四、边界与结论:它是"数据可用的平台",需要认真运维
Ceph 的边界:它给你"高可用存储池",但"高可用"不等于"免备份"——快照/备份(前文 restic 等)仍要做;它依赖 MON 网络与磁盘健康,别把系统盘和数据盘放一起、别省 MON 冗余;它对硬件与排障经验要求高,小场景易过度。把它当"正式、上规模的自托管存储底座(给 KVM/容器/对象/文件用)",配好告警与定期 `ceph status`,才能在数据增长时"既高可用又多接口"。对绝大多数中小自托管,前文 NFS/GlusterFS/单机盘就已够用;当你开始"给虚拟机挂高可用盘、还想一个池出来接 S3"时,Ceph 才是那个不缺席的答案。



