ceph-分布式存储

Ceph 分布式存储

·7 分钟阅读·2570 字
📋 目录

Ceph 分布式存储

一、概述

Ceph 是一个开源的统一分布式存储系统,能同时提供对象存储、块存储和文件存储服务,去中心化架构、高可用、可横向扩容,常用于数据中心、云计算等场景。

核心特点

  • 分布式架构:无中心节点,通过集群自动扩展存储容量和性能,支持 PB 级数据存储
  • 高可靠性:数据自动副本复制或纠删码冗余,避免单点故障,保障数据安全
  • 统一存储接口:一套集群同时提供对象、块、文件三种存储服务,简化架构

二、核心组件

组件全称功能
MONCeph Monitor维护集群状态和节点映射关系,奇数部署(3/5 个)防止脑裂
OSDObject Storage Device负责存储数据、处理读写请求,一块磁盘对应一个 OSD
MGRCeph Manager管理节点,提供监控面板、告警、外部对接
MDSMetadata Server管理文件系统元数据(仅 CephFS 时需要)
RADOSReliable Autonomic Distributed Object Store底层可靠对象存储引擎,提供统一接口供上层组件调用

MON 作用与部署规则

保存集群所有 Map(MonMap、OsdMap、PgMap、CrushMap),必须奇数个节点,通常部署 3 或 5 个防止脑裂。

OSD 工作机制

一块磁盘对应一个 OSD,负责:

  • 本地数据读写
  • 副本同步
  • 心跳检测与故障上报
  • 数据回填(Rebalancing)

三、三大存储接口

接口类型用途
RBD块存储K8s PVC、云主机硬盘、虚拟机磁盘
RGW对象存储兼容 S3 协议,适用于图片、备份、归档
CephFS文件存储共享目录、日志集群、大数据挂载

四、核心原理

CRUSH 算法

无中心数据寻址算法,通过层级故障域自动计算数据存放 OSD,实现:

  • 数据均衡分布
  • 故障域隔离(跨主机、机架、机房)
  • 自动迁移与恢复

PG(Placement Group)

放置组,数据分片的最小单位。数据写入流程:

客户端请求 → 计算 PG → 找主 OSD → 主 OSD 同步副本 → 全部落盘 → 返回写入成功

PG 数量计算公式PG总数 = (OSD数量 × 100) / 副本数,取就近的 2 的幂次方。

三副本 vs EC 纠删码

特性3 副本EC 纠删码
读写性能偏弱
空间利用率低(33%)
恢复速度
适用场景数据库、业务数据冷数据、备份、归档

常用 EC 策略:4+28+3(4 份数据 2 份校验,最多允许 2 块盘损坏)

数据写入流程

  1. 客户端发起写请求
  2. CRUSH 算法计算目标 PG
  3. 定位 PG 的主 OSD
  4. 主 OSD 同步数据到副本 OSD
  5. 所有副本落盘后返回写入成功

五、集群状态与故障排查

集群状态

状态说明
HEALTH_OK正常
HEALTH_WARN告警(磁盘满、PG 不均衡、OSD down)
HEALTH_ERR严重故障(大量 OSD 离线、PG 异常)

常见 PG 异常状态

  • degraded:数据降级,副本不足
  • recovery:正在数据恢复
  • peering:PG 正在选举同步
  • stale / incomplete / down

常见故障场景

  • OSD 挂掉:MON 检测下线,CRUSH 重新分配 PG,数据自动迁移回填
  • 磁盘满告警:清理无用数据、调整存储池配额、扩容新增 OSD、调整满阈值
  • 慢 IO 原因:磁盘性能差、PG 数量不合理、副本过多、网络拥堵、OSD 负载高、回填抢占 IO

六、Kubernetes 集成

K8s 使用 Ceph 的两种方式:

  1. Ceph RBD:传统块存储
  2. Ceph CSI:标准容器存储接口(主流生产用法)

存储池作用

  • 逻辑隔离资源
  • 划分不同业务
  • 设置不同副本/EC 策略
  • 设置配额与权限隔离

扩容流程

加磁盘 → 创建 OSD → 加入 CRUSH 树 → 集群自动均衡数据

七、常用运维命令

ceph -s              # 查看集群整体状态
ceph df              # 查看存储池容量
ceph osd tree        # 查看 OSD 层级架构
ceph pg stat         # 查看 PG 整体状态
ceph health detail   # 查看告警详情
rbd list             # 查看块设备

八、高可用与数据恢复

高可用保障机制

  • 多 MON、多 OSD、多副本
  • CRUSH 故障域隔离
  • 自动故障转移
  • 自愈恢复

数据恢复原理

副本缺失后,同级副本重新同步数据,自动回填至空闲 OSD。

减少回填影响业务

  • 调整恢复优先级
  • 限制回填带宽
  • 业务低峰期扩容
  • 拆分故障域

九、生产调优

冷热数据分层

结合 Cache Tier 热池 + 冷 EC 池,自动冷热数据迁移,提升性能并节省空间。

Ceph 优缺点

优点:统一存储、去中心化、弹性扩容、开源免费、多接口兼容

缺点:部署复杂、运维门槛高、大规模集群调优难度大

十、面试常考

一句话总结

Ceph 是一个开源统一分布式存储系统,以 RADOS 为底层引擎,通过 CRUSH 算法实现去中心化数据分布,提供 RBD(块)、RGW(对象)、CephFS(文件)三大存储接口,具备高可用、弹性扩容、自愈能力,广泛用于云计算、大数据和企业存储场景。


关联文档

  • ../kubernetes/core/K8s 核心概念#💾 存储 — K8s 集成 Ceph CSI/RBD
  • ../openstack/OpenStack 云计算平台 — Ceph 作为 OpenStack 存储后端
  • ../kubernetes/architecture/Share-nothing 无共享架构 — Ceph 基于无共享架构设计
  • ../linux/system/Linux — Ceph 部署在 Linux 之上