Ceph分布式存储核心技术精要与运维实践指南

第一章:Ceph 分布式存储系统概述

1.1 用户角色与职责

  • 存储管理员:安装、配置、维护集群;培训架构师;提供弹性和恢复;实现自动化。
  • 存储操作员:日常操作,使用Dashboard监控告警、更换故障设备。
  • 其他角色:云操作员、自动化工程师、应用开发人员、基础架构架构师、数据中心操作员等。

1.2 Ceph 核心优势

  • 开源、分布式、软件定义存储(SDS)
  • 高可用、高扩展、易用,支持海量数据
  • 可部署于 x86/ARM 通用服务器,支持异构节点
  • 去中心化:客户端通过 CRUSH 算法自行计算对象位置
  • 自动扩展、数据再平衡、自我恢复

1.3 Ceph 架构组件

  • RADOS(可靠自主分布式对象存储):核心后端
  • 访问方式:librados(原生API)、RBD(块)、RGW(对象)、CephFS(文件)
  • 后端守护进程
    • MON:维护集群状态映射,提供仲裁
    • OSD:存储数据,处理复制、恢复、再平衡
    • MGR:提供 Dashboard 和 REST API,跟踪指标
    • MDS:CephFS 元数据管理

1.4 版本与生命周期

  • 自 Nautilus (14.2.0) 起每年 3 月 1 日发布稳定版,支持周期约 2 年
  • 版本格式:x.y.z(x=发行周期,y=类型,z=修订号)
  • 企业版(Red Hat Ceph Storage)基于社区 LTS,提供 36 个月支持

第二章:Ceph 分布式存储部署

2.1 部署方式

  • Cephadm(推荐):基于容器,支持 Octopus+,通过引导创建单节点,后续扩容
  • Rook:基于 Kubernetes
  • 其他:ceph-ansible、DeepSea、手动(不推荐 ceph-deploy)

2.2 硬件与网络要求

  • OSD:≥1核CPU,4G内存,整块硬盘/SSD分区,1G/10G网卡
  • MON:≥2核,2-4G内存,60G磁盘
  • MDS:≥2核,≥2G内存
  • 关键端口:MON(3300,6789)、OSD(6800-7300)、MGR(8443)、RGW(80) 等

2.3 Cephadm 引导与集群初始化

  • 命令示例:cephadm bootstrap --mon-ip <IP> --allow-fqdn-hostname
  • 生成 Dashboard 访问地址(默认8443端口)及 admin 用户
  • 自动部署 MON、MGR、crash、Prometheus、Grafana、Alertmanager 等

2.4 节点添加与 OSD 部署

  • 获取 SSH 公钥:ceph cephadm get-pub-key
  • 添加主机:ceph orch host add <hostname>
  • 部署 OSD:ceph orch apply osd --all-available-devices
  • 禁用服务自动扩展:ceph orch apply <service> --unmanaged=true

2.5 集群组件管理

  • ceph orch ls:查看服务
  • ceph orch ps:查看守护进程
  • 删除 OSD:ceph orch osd rm <id> [--force --zap]
  • 删除主机:需先停止并删除其上所有服务,清理 OSD 及 crush 映射

第三章:Ceph 集群配置管理

3.1 配置来源与优先级

  • 默认值 → 集中配置数据库 → 本地配置文件 → 环境变量 → 命令行参数
  • MON 维护集中配置数据库,优先使用

3.2 配置文件(ceph.conf)

  • INI 格式,支持 [global][mon][osd][mgr][mds][client] 等段
  • 实例段:[mon.ceph1] 用于特定守护进程
  • 元变量:$cluster$type$id$name$host

3.3 集中配置数据库管理

  • ceph config ls:列出所有可配置项
  • ceph config get <daemon> [key]:获取配置值
  • ceph config set <daemon> <key> <value>:持久化修改
  • ceph config rm <daemon> <key>:清除自定义值
  • ceph config reset <num>:回滚历史版本

3.4 运行时临时修改

  • ceph tell <type.id> config set <key> <value>:临时生效,重启恢复
  • ceph daemon <type.id> config set <key> <value>:本地生效,无需连接 MON

3.5 监控器(MON)配置

  • 维护集群映射(MON map、OSD map、PG map、CRUSH map、MDS map)
  • 建议至少 3 个 MON 节点,奇数个以保证仲裁
  • 查看仲裁:ceph quorum_statusceph mon stat
  • 压缩 MON 数据库:ceph tell mon.<id> compact

3.6 网络与安全

  • public_network:客户端与集群通信
  • cluster_network:OSD 间复制/恢复流量,建议独立以提高性能
  • 支持 IPv6,巨型帧(MTU=9000)
  • 防火墙:开放相应端口(MON:6789/3300,OSD:6800-7300等)
  • 认证协议:默认启用 cephx,可通过 auth_*_required 调整

第四章:Ceph 存储池管理

4.1 数据组织结构

  • Pool(池):逻辑分区,包含多个 PG,可设置副本或纠删码
  • PG(Placement Group):对象的集合,映射到 OSD 集
  • 对象:由对象ID、二进制数据、元数据组成

4.2 客户端访问流程

  1. 从 MON 获取集群映射
  2. 计算 PG ID:hash(object_id) % pg_num
  3. CRUSH 算法确定主 OSD 及副本 OSD
  4. 客户端直接与主 OSD 通信

4.3 数据保护类型

  • 副本池:多份完整副本,读性能好,空间开销大
  • 纠删码池:k+m 模式,节省空间,需 CPU 计算,适合冷数据

4.4 创建与配置池

  • 创建副本池:ceph osd pool create <name> <pg_num> replicated
  • 创建纠删码池:ceph osd pool create <name> <pg_num> erasure [profile]
  • 管理应用类型:ceph osd pool application enable <pool> rbd|cephfs|rgw
  • 设置配额:ceph osd pool set-quota <pool> max_objects|max_bytes <value>
  • 修改副本数:ceph osd pool set <pool> size <n>
  • PG 自动扩展:pg_autoscale_mode on/off/warn

4.5 对象操作

  • 上传:rados -p <pool> put <obj> <file>
  • 下载:rados -p <pool> get <obj> <file>
  • 列表:rados -p <pool> ls
  • 删除:rados -p <pool> rm <obj>

4.6 快照与命名空间

  • 创建池快照:ceph osd pool mksnap <pool> <snap>
  • 回滚:rados -p <pool> rollback <obj> <snap>
  • 命名空间:逻辑隔离对象,rados -p <pool> -N <ns> put ...

4.7 删除池

  • 需先设置 mon_allow_pool_delete = true
  • 命令:ceph osd pool rm <pool> <pool> --yes-i-really-really-mean-it

第五章:Ceph 认证与授权管理

5.1 cephx 协议

  • 基于共享密钥的认证系统
  • 客户端与 MON 之间通过会话密钥加密通信
  • 认证流程:请求会话密钥 → 获取加密会话密钥 → 解密 → 请求票据 → 与 OSD/MDS 通信

5.2 用户账户

  • 类型:守护进程账户(osd.0、mgr.ceph1)和客户端账户(client.*)
  • 超级用户:client.admin,拥有全部权限
  • 密钥环文件默认位置:/etc/ceph/ceph.client.<name>.keyring

5.3 用户管理命令

  • 列出用户:ceph auth ls
  • 获取用户详情:ceph auth get <name>
  • 创建用户:ceph auth addceph auth get-or-create
  • 删除用户:ceph auth del
  • 导出/导入:ceph auth exportceph auth import

5.4 权限(Capabilities)

  • 守护进程类型:monosdmgrmds
  • 权限值:allowr(读)、w(写)、x(执行类方法)、class-readclass-write*(全部)
  • 预定义 profile:osdbootstrap-osdrbdrbd-read-only
  • 精细化限制:pool=<pool>namespace=<ns>object_prefix <prefix>path=<path>command "<cmd>"

5.5 修改用户权限

  • ceph auth caps <name> <daemon> '<caps>'
  • 示例:ceph auth caps client.myuser mon 'allow r' osd 'allow rw pool=mypool'

5.6 客户端使用

  • 指定用户:--id <name>--name client.<name>
  • 指定密钥环:--keyring <path>
  • 可通过环境变量 CEPH_ARGS 设置默认用户
相关推荐
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工3 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智3 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_3 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉3 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
AC赳赳老秦3 天前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw
java_cj3 天前
深入kube-apiserver认证机制:从Bearer Token到mTLS的完整认证链解析
linux·运维·服务器·云原生·容器·kubernetes
lsyeei3 天前
linux 系统目录详解
linux·运维·服务器