第1章 Ceph分布式存储概述
1.1 基本定义与技术优势
Ceph是一款开源、分布式、软件定义存储(Software Defined Storage, SDS)系统,具备极高的可用性、扩展性与易用性,可部署在x86或ARM架构的通用服务器上,面向海量数据存储场景。
核心技术优势:
- 底层基于RADOS(可靠自主分布式对象存储),所有数据以对象形式存储在存储池中
- 去中心化架构,客户端通过CRUSH算法自行计算对象存储位置,直接与存储节点交互,无中心瓶颈
- 集群原生支持自动扩展、数据再平衡、故障自愈与数据恢复,运维成本低
1.2 发展历程与版本体系
- Ceph起源于2003年加州大学圣克鲁兹分校的研究项目,2006年正式开源;2014年红帽收购Inktank公司,推出企业级Ceph Storage产品
- 版本规则:从Infernalis版本起采用主版本号递增规则,
x.2.z为稳定bug修复版本;从Nautilus(14.2)起每年发布一个稳定版,社区版生命周期约2年 - 红帽企业版提供36个月技术支持,比社区上游版本长12个月
1.3 集群核心架构组件
Ceph采用模块化分布式架构,底层为RADOS对象存储层,上层封装多种访问接口,适配不同业务场景。
| 组件 | 全称 | 核心职责 | 部署要求 |
|---|---|---|---|
| MON | 监视器 | 维护集群状态映射(集群图),负责节点协调、元数据管理与仲裁 | 奇数节点部署,生产环境至少3个 |
| OSD | 对象存储设备 | 实际存储用户数据,处理数据复制、恢复、重平衡与心跳检测 | 每个数据盘对应一个OSD守护进程 |
| MGR | 管理器 | 提供Dashboard可视化界面与REST API,输出集群运行指标与监控数据 | 至少部署2个实现高可用 |
| MDS | 元数据服务器 | 仅CephFS使用,存储文件系统元数据,支持POSIX文件操作 | 主备模式部署,1活1备或多活 |
1.4 四种数据访问方式
Ceph提供四类数据访问接口,覆盖不同业务场景:
- librados原生API:直接访问RADOS的原生C语言库,性能最优,适合高性能应用开发
- RBD(RADOS块设备):提供虚拟块存储,支持快照、克隆、精简配置,兼容KVM/OpenStack,适用于虚拟化、数据库场景
- RGW(RADOS对象网关):HTTP对象存储网关,兼容Amazon S3与OpenStack Swift API,适用于非结构化数据、备份、内容分发场景
- CephFS(Ceph文件系统):POSIX兼容的分布式文件系统,支持目录树结构,适用于共享文件存储场景
第2章 Ceph集群部署实践
2.1 部署方式选型
官方推荐部署方案:
- Cephadm:基于容器化部署,支持Octopus及以上版本,支持CLI和Dashboard双管理入口,是当前生产环境主流方案
- Rook :基于Kubernetes编排部署,支持Nautilus及以上版本,云原生场景首选
其他部署方式如ceph-ansible、手动部署等,维护成本高,不推荐用于生产环境。
2.2 环境规划与前置准备
- 操作系统:CentOS Stream 8 最小化安装
- 节点规格:3节点集群,每节点2核CPU、8GB内存,1块系统盘+3块20GB数据盘
- 前置配置:主机名解析、关闭SELinux与防火墙、配置YUM软件源、时间同步、安装cephadm工具包
2.3 Cephadm引导集群
执行引导命令,创建包含1个MON和1个MGR的初始单节点集群:
bash
cephadm bootstrap --mon-ip 192.168.108.11 --allow-fqdn-hostname \
--initial-dashboard-user admin --initial-dashboard-password laogao@123 \
--dashboard-password-noupdate
引导完成后输出Dashboard访问地址、管理员凭据与管理密钥环,后续可通过cephadm shell进入集群管理环境。
2.4 集群扩容与服务管理
- 添加节点:通过SSH公钥实现免密认证,使用命令加入集群
bash
ceph orch host add ceph2.laogao.cloud
- 部署MON/MGR:通过节点标签控制部署范围,实现3节点MON、3节点MGR高可用
bash
ceph orch apply mon --placement="label:_admin"
ceph orch apply mgr --placement="label:_admin"
- 部署OSD:自动识别所有空闲磁盘并加入集群
bash
ceph orch apply osd --all-available-devices
- 服务生命周期 :通过
ceph orch系列命令管理服务,支持自动编排与手动管理两种模式
2.5 集群配置管理体系
Ceph配置采用分层优先级机制:命令行参数 > 环境变量 > 本地配置文件 > 集中配置数据库。
常用配置命令:
ceph config ls:列出集群所有配置项ceph config set <类型> <配置项> <值>:设置配置项,持久化生效ceph config get <类型> <配置项>:查看配置项当前值ceph tell <守护进程> config set:临时修改运行中进程配置,守护进程重启后失效ceph config log:查看配置变更历史,支持按版本回滚
第3章 存储池(Pool)管理
3.1 数据分布机制
- PG(放置组):对象与OSD之间的抽象层。对象通过哈希映射到对应PG,PG再映射到多个OSD实现数据冗余
- CRUSH算法:伪随机数据分布算法,可按故障域层级(主机/机架/机房)分布数据,实现故障隔离
- 每个PG对应一个主OSD与多个从OSD:主OSD处理所有IO请求,从OSD提供冗余备份,OSD故障时自动提升主从
3.2 存储池基础操作
创建副本池:
bash
ceph osd pool create pool_web 32 32 replicated
创建纠删码池:
bash
ceph osd pool create pool_era 32 32 erasure
其他基础操作:
- 查看池列表:
ceph osd pool ls - 查看池详细配置:
ceph osd pool ls detail - 重命名池:
ceph osd pool rename <旧名称> <新名称> - 删除池:需先启用
mon_allow_pool_delete配置,再执行删除命令
3.3 副本池与纠删码池
| 池类型 | 冗余原理 | 存储空间利用率 | 性能特点 | 适用场景 |
|---|---|---|---|---|
| 副本池 | 保存多份完整数据副本 | 3副本约33% | 读取性能高,恢复速度快 | 高性能、低延迟的热数据场景 |
| 纠删码池 | 数据分块+校验块,通过校验计算恢复数据 | 4+2模式约67% | 写入计算开销大,读取性能一般 | 冷数据归档、备份等容量优先场景 |
3.4 池高级管理
- 应用类型标记:为池标记rbd/rgw/cephfs等应用类型,用于权限控制与功能适配
- 配额管理:限制池的最大容量与最大对象数量,防止资源滥用
- PG自动扩展:根据池容量自动调整PG数量,平衡性能与元数据开销
- 对象操作 :通过
rados命令实现对象上传、下载、删除、元数据管理 - 池快照:创建池级只读时间点快照,支持数据回滚
第4章 集群认证与权限管理
4.1 Cephx认证协议
Ceph默认启用Cephx共享密钥认证体系,实现客户端与集群、守护进程之间的双向身份认证与通信加密。
认证流程:客户端向MON请求会话密钥,通过共享密钥解密后获得访问票据,后续所有通信使用会话密钥加密。
4.2 用户账户管理
核心用户管理命令:
- 创建用户:
ceph auth add client.app1 - 查看用户列表:
ceph auth list - 查看用户详情:
ceph auth get client.app1 - 导出密钥环:
ceph auth export osd.0 -o osd0.keyring - 删除用户:
ceph auth rm client.app1 - 密钥管理:支持为同一用户创建多组密钥,支持密钥重新生成与单独删除
4.3 权限控制体系
Ceph权限(caps)按守护进程类型划分,支持精细粒度的访问控制:
- 基础权限:
r(读取)、w(写入)、x(执行)、*(全部权限) - 范围限制:可按存储池、命名空间、对象前缀、文件路径限制权限生效范围
- 预定义配置文件:内置rbd、rbd-read-only等常用权限模板,简化配置
第5章 RADOS块存储(RBD)管理
5.1 RBD架构与IO流程
RBD将虚拟块设备切分为固定大小的对象(默认4MB),分散存储在集群多个OSD上,通过librbd库向上层提供标准块设备访问能力。
写入流程:
- 客户端从MON获取集群映射,通过CRUSH计算对象对应的主OSD
- 客户端将数据写入主OSD
- 主OSD同步将数据写入所有从OSD
- 所有从OSD写入完成后,主OSD向客户端返回确认
5.2 RBD镜像与内核挂载
创建RBD池与镜像:
bash
ceph osd pool create images_pool
rbd pool init images_pool
rbd create images_pool/webapp1 --size 1G
内核模式挂载(krbd):
bash
# 映射镜像为本地块设备
rbd device map images_pool/webapp1
# 格式化并挂载
mkfs.xfs /dev/rbd0
mkdir -p /mnt/webapp
mount /dev/rbd0 /mnt/webapp
支持通过rbdmap服务实现开机自动持久化挂载。
5.3 RBD高级功能
- 快照:基于COW写时复制技术,创建只读时间点副本,占用空间小,支持数据回滚
- 克隆:基于快照创建可写克隆镜像,支持多层级联,扁平化后成为独立镜像
- 导入导出:支持镜像全量导出/导入,也支持两个时间点间的增量差异导出导入
- 缓存机制:支持write-back、write-through等多种缓存模式,优化IO性能
5.4 RBD跨集群镜像
支持单向/双向、池级别/镜像级别同步,基于日志或快照实现增量复制,主要用于跨集群灾备场景。
核心配置流程:
- 双集群创建同名RBD池,启用镜像相关功能
- 主集群启用池级别镜像功能,创建引导令牌
- 备集群导入令牌,部署rbd-mirror同步服务
- 验证镜像同步状态与数据一致性
第6章 RADOS对象存储网关(RGW)管理
6.1 RGW架构与定位
RGW是构建在librados之上的HTTP对象存储网关,兼容Amazon S3与OpenStack Swift API,适用于非结构化数据存储、备份、内容分发等场景。支持多站点部署,实现跨集群数据复制与异地灾备。
6.2 RGW服务部署
RGW采用域(realm)-区域组(zonegroup)-区域(zone)三层逻辑架构,先配置逻辑结构再部署服务实例:
bash
# 创建域
radosgw-admin realm create --rgw-realm=webapp --default
# 创建主区域组
radosgw-admin zonegroup create --rgw-realm=webapp --rgw-zonegroup=video --master --default
# 创建主区域
radosgw-admin zone create --rgw-realm=webapp --rgw-zonegroup=video --rgw-zone=storage1 --master --default
# 提交配置
radosgw-admin period update --rgw-realm=webapp --commit
# 部署RGW服务
ceph orch apply rgw webapp --placement="3 ceph1.laogao.cloud ceph2.laogao.cloud ceph3.laogao.cloud" \
--realm=webapp --zone=storage1 --port=8080
6.3 S3兼容API访问
创建S3用户后,可通过aws cli等标准S3客户端访问:
bash
# 创建S3用户
radosgw-admin user create --uid="operator" --display-name="S3 Operator" \
--access-key="12345" --secret-key="67890"
# 列出存储桶
aws --endpoint=http://ceph1.laogao.cloud:8080 s3 ls
支持存储桶创建、对象上传下载、ACL权限控制等完整S3功能。
6.4 Swift兼容API访问
通过子用户机制适配Swift的租户-用户模型,支持标准swift客户端工具访问,实现容器管理、对象上传下载、元数据管理等操作。
6.5 配额与多站点管理
- 三级配额体系:支持用户级别、存储桶级别、全局级别配额,可限制存储容量与对象数量
- 多站点同步:支持多区域、多区域组部署,实现元数据与数据的异步增量同步,支持主备区域故障切换
第7章 CephFS文件系统管理
7.1 CephFS架构
CephFS是兼容POSIX标准的分布式文件系统,数据存储在RADOS中,由MDS服务管理文件元数据。支持多活动MDS节点提升性能,也支持主备模式实现高可用。
7.2 CephFS部署与客户端挂载
推荐使用卷方式快速部署:
bash
ceph fs volume create cephfs1 --placement="3 ceph1.laogao.cloud ceph2.laogao.cloud ceph3.laogao.cloud"
客户端挂载支持两种方式:
- Kernel挂载:内核原生支持,性能高,适合生产环境高IO场景
- FUSE挂载:用户态实现,支持配额与ACL,兼容性好,无需内核支持
7.3 文件系统管理
- 精细权限控制 :通过
ceph fs authorize实现目录级别的用户读写权限控制 - 快照管理 :基于
.snap隐藏目录实现快照创建、查看、文件恢复与删除 - 配额管理:支持按用户、目录设置容量配额与文件数量配额
7.4 CephFS跨集群镜像
从Pacific(v16.2)版本开始支持CephFS Mirror异步镜像功能,基于快照实现增量复制,用于跨集群文件系统灾备。
配置流程:双集群部署CephFS → 两端启用镜像模块 → 部署cephfs-mirror服务 → 配置集群对等体 → 添加同步目录 → 验证数据同步状态