Ceph 分布式存储完整实战指南:架构、部署与全场景运维

第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提供四类数据访问接口,覆盖不同业务场景:

  1. librados原生API:直接访问RADOS的原生C语言库,性能最优,适合高性能应用开发
  2. RBD(RADOS块设备):提供虚拟块存储,支持快照、克隆、精简配置,兼容KVM/OpenStack,适用于虚拟化、数据库场景
  3. RGW(RADOS对象网关):HTTP对象存储网关,兼容Amazon S3与OpenStack Swift API,适用于非结构化数据、备份、内容分发场景
  4. 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的初始单节点集群:

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 集群扩容与服务管理

  1. 添加节点:通过SSH公钥实现免密认证,使用命令加入集群
ceph orch host add ceph2.laogao.cloud
  1. 部署MON/MGR:通过节点标签控制部署范围,实现3节点MON、3节点MGR高可用
ceph orch apply mon --placement="label:_admin"
ceph orch apply mgr --placement="label:_admin"
  1. 部署OSD:自动识别所有空闲磁盘并加入集群
ceph orch apply osd --all-available-devices
  1. 服务生命周期:通过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 存储池基础操作

创建副本池:

ceph osd pool create pool_web 32 32 replicated

创建纠删码池:

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库向上层提供标准块设备访问能力。

写入流程:

  1. 客户端从MON获取集群映射,通过CRUSH计算对象对应的主OSD
  2. 客户端将数据写入主OSD
  3. 主OSD同步将数据写入所有从OSD
  4. 所有从OSD写入完成后,主OSD向客户端返回确认

5.2 RBD镜像与内核挂载

创建RBD池与镜像:

ceph osd pool create images_pool
rbd pool init images_pool
rbd create images_pool/webapp1 --size 1G

内核模式挂载(krbd):

# 映射镜像为本地块设备
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跨集群镜像

支持单向/双向、池级别/镜像级别同步,基于日志或快照实现增量复制,主要用于跨集群灾备场景。
核心配置流程:

  1. 双集群创建同名RBD池,启用镜像相关功能
  2. 主集群启用池级别镜像功能,创建引导令牌
  3. 备集群导入令牌,部署rbd-mirror同步服务
  4. 验证镜像同步状态与数据一致性

第6章 RADOS对象存储网关(RGW)管理

6.1 RGW架构与定位

RGW是构建在librados之上的HTTP对象存储网关,兼容Amazon S3与OpenStack Swift API,适用于非结构化数据存储、备份、内容分发等场景。支持多站点部署,实现跨集群数据复制与异地灾备。

6.2 RGW服务部署

RGW采用域(realm)-区域组(zonegroup)-区域(zone)三层逻辑架构,先配置逻辑结构再部署服务实例:

# 创建域
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客户端访问:

# 创建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部署与客户端挂载

推荐使用卷方式快速部署:

ceph fs volume create cephfs1 --placement="3 ceph1.laogao.cloud ceph2.laogao.cloud ceph3.laogao.cloud"

客户端挂载支持两种方式:

  1. Kernel挂载:内核原生支持,性能高,适合生产环境高IO场景
  2. FUSE挂载:用户态实现,支持配额与ACL,兼容性好,无需内核支持

7.3 文件系统管理

  • 精细权限控制:通过ceph fs authorize实现目录级别的用户读写权限控制
  • 快照管理:基于.snap隐藏目录实现快照创建、查看、文件恢复与删除
  • 配额管理:支持按用户、目录设置容量配额与文件数量配额

7.4 CephFS跨集群镜像

从Pacific(v16.2)版本开始支持CephFS Mirror异步镜像功能,基于快照实现增量复制,用于跨集群文件系统灾备。
配置流程:双集群部署CephFS → 两端启用镜像模块 → 部署cephfs-mirror服务 → 配置集群对等体 → 添加同步目录 → 验证数据同步状态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值