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.z
    • x:发布周期(如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.confceph.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之旅提供一份清晰的指引。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐