Ceph分布式存储入门:核心架构与集群部署实战
Ceph分布式存储入门:核心架构与集群部署实战
一、前言
Ceph作为当今最流行的开源分布式存储系统,统一提供对象、块和文件存储服务,凭借其高可用、易扩展、无单点故障等特性,已成为云基础设施基座的核心组件。本文基于Ceph Pacific版本(v16.2.x),结合笔者实验环境,整理Ceph第一章(基本介绍与架构)和第二章(集群部署)的关键知识点,帮助初学者快速建立Ceph认知并动手搭建一套生产风格的集群。
二、Ceph核心概念与架构
2.1 存储中的用户角色
在实际云存储环境中,不同职责的参与者分工明确:
- 存储管理员:负责安装、配置、维护Ceph集群,管理弹性与恢复,提供自动化集成。
- 存储操作员:日常使用Dashboard监控集群状态,处理告警,更换故障设备。
- 其他角色:云操作员(OpenStack/OpenShift)、自动化工程师、应用开发人员、服务管理员、基础架构架构师、数据中心操作员等。
小组织中一人可承担多角色,大企业中角色细分。
2.2 Ceph简介与技术优势
- 定义:开源、软件定义存储(SDS),可运行在通用x86/ARM服务器上。
- 核心优势:
- RADOS:可靠的自主分布式对象存储,作为Ceph的心脏。
- 去中心化:客户端通过CRUSH算法直接计算对象存储位置,无需中心查表。
- 自动扩展:集群可自动进行数据再平衡和恢复。
2.3 使用场景
- 云基础设施(OpenStack、Kubernetes)
- 备份归档、大数据分析、多媒体存储
- 容器持久化存储、灾难恢复、混合云
2.4 版本历史与命名
- 项目始于2003年,2006年开源。
- 2014年被Red Hat收购。
- 版本命名规律(自Infernalis起):
x.y.zx:发布周期(如16为Pacific)y:0=开发版,1=候选版,2=稳定版
- LTS版本(Long Term Support):如Pacific(16.2.x)、Quincy(17.2.x)等,支持周期约2年。
2.5 Ceph架构分层
+----------------+----------------+----------------+
| RBD | RADOSGW | CephFS |
| (块设备) | (对象存储) | (文件系统) |
+----------------+----------------+----------------+
| LIBRADOS |
| (原生API,直接访问RADOS) |
+---------------------------------------------------+
| RADOS |
| (可靠自主分布式对象存储集群) |
+---------------------------------------------------+
核心组件:
| 组件 | 功能 |
|---|---|
| MON(Monitor) | 维护集群状态映射(Cluster Map),采用Paxos算法保证一致性,必须部署奇数个(≥3)以实现仲裁。 |
| OSD(Object Storage Device) | 实际存储数据的守护进程,每个磁盘对应一个OSD,使用XFS文件系统,带有独立日志(建议SSD)提升写性能。 |
| MGR(Manager) | 提供Dashboard和REST API,收集集群运行时指标。至少部署两个以实现高可用。 |
| MDS(Metadata Server) | 仅为CephFS服务,管理文件元数据(权限、时间戳、目录结构)。 |
2.6 数据访问方式与选择
- librados:原生C/C++库,性能最高,适合深度定制。
- RBD:块存储接口,支持QEMU/KVM、OpenStack Cinder,特性包括快照、克隆、精简配置。
- RADOSGW:对象存储网关,兼容Amazon S3和OpenStack Swift API。
- CephFS:POSIX兼容的文件系统,需MDS支持。
2.7 CRUSH算法与数据分布
- CRUSH(Controlled Replication Under Scalable Hashing):伪随机算法,根据集群拓扑和规则计算PG到OSD的映射,无需中心查找表。
- PG(Placement Group):对象的逻辑集合,用于减少元数据管理开销。PG数量影响集群性能,需合理规划(公式参考:
(OSD数 * 100) / 副本数,并向上取2的幂)。
2.8 集群映射(Cluster Map)
由MON维护的五种映射:
- Monitor Map
- OSD Map
- PG Map
- CRUSH Map
- MDS Map
客户端通过获取集群映射,结合CRUSH算法直接与主OSD通信,实现高性能数据读写。
三、Ceph分布式存储部署
本章基于Cephadm(容器化部署工具)在CentOS Stream 8上构建一个3节点集群(ceph1~ceph3),附带3块20GB数据盘用于OSD。
3.1 部署方式选择
- 官方推荐:Cephadm(容器+systemd管理,支持Octopus及以后版本)或Rook(K8s环境)。
- 其他:ceph-ansible、DeepSea等,但ceph-deploy已废弃。
3.2 最小硬件规格(生产参考)
| 组件 | CPU | 内存 | 磁盘 | 网络 |
|---|---|---|---|---|
| OSD | 1核+(每200-500MB/s增1核) | 2-4GB | 整块硬盘(建议SSD作日志) | 1G+(推荐10G) |
| MON | 2核 | 2-4GB | 60GB | 1G+ |
| MDS | 2核 | 2GB+ | 1MB | 1G+ |
实验环境可降低配置。
3.3 实验环境准备(虚拟机模板)
- 主机名与IP规划:
| 主机名 | IP | 角色 |
|---|---|---|
| ceph1.laogao.cloud | 192.168.108.11 | 主集群节点1(引导节点) |
| ceph2.laogao.cloud | 192.168.108.12 | 主集群节点2 |
| ceph3.laogao.cloud | 192.168.108.13 | 主集群节点3 |
| client.laogao.cloud | 192.168.108.10 | 客户端(可选) |
- 系统初始化(所有节点):
- 关闭SELinux、防火墙
- 配置hosts解析
- 配置阿里云Ceph Pacific yum源
- 安装chrony时间同步
- 安装
cephadm(自动安装podman)
dnf install -y cephadm
podman pull quay.io/ceph/ceph:v16 # 预拉取镜像
3.4 引导集群(Bootstrap)
在ceph1上执行:
cephadm bootstrap --mon-ip 192.168.108.11 \
--allow-fqdn-hostname \
--initial-dashboard-user admin \
--initial-dashboard-password laogao@123 \
--dashboard-password-noupdate
- 执行后自动创建MON、MGR,生成Dashboard访问地址
https://ceph1:8443。 - 生成
/etc/ceph/ceph.conf和ceph.client.admin.keyring。
3.5 添加其他节点
# 获取集群公钥并复制到其他节点
ceph cephadm get-pub-key > ~/ceph.pub
ssh-copy-id -f -i ~/ceph.pub root@ceph2.laogao.cloud
ssh-copy-id -f -i ~/ceph.pub root@ceph3.laogao.cloud
# 添加主机
ceph orch host add ceph2.laogao.cloud
ceph orch host add ceph3.laogao.cloud
3.6 部署OSD
将所有空闲磁盘自动配置为OSD:
ceph orch apply osd --all-available-devices
验证:ceph -s 应看到9个OSD(每节点3块盘)且HEALTH_OK。
3.7 服务管理要点
-
查看服务:
ceph orch ls -
禁用自动扩展(若需手动控制):
ceph orch apply mon --unmanaged=true -
通过标签部署:
ceph orch host label add ceph2 _admin,然后ceph orch apply mon --placement="label:_admin" -
删除OSD流程:
ceph osd out osd.0 ceph orch osd rm 0 --zap -
删除主机:需先停止并删除该主机上所有服务,再
ceph orch host rm ceph2
3.8 Dashboard访问
- URL:
https://ceph1.laogao.cloud:8443 - 用户:admin / 密码(bootstrap时设置)
Dashboard可管理集群、监控性能、配置OSD、管理池等。
3.9 关键配置文件与数据库
- 本地配置:
/etc/ceph/ceph.conf(最小化) - 集中配置数据库:由MON维护,优先于本地文件,使用
ceph config命令管理。ceph config set <who> <key> <value>持久化ceph tell <daemon> config set临时生效(重启丢失)
四、总结
通过第一章的理论学习,我们掌握了Ceph的角色划分、RADOS核心架构、CRUSH算法以及四种访问方式。第二章则动手实践了基于Cephadm的集群部署,从环境准备、引导、节点扩容到OSD添加和服务管理。后续可继续深入学习池管理、认证授权、块存储(RBD)、对象网关(RGW)以及文件存储(CephFS)。
Ceph的学习曲线较陡,但一旦掌握其设计哲学,便能充分发挥软件定义存储的威力。希望本文能为你的Ceph之旅提供一份清晰的指引。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)