ceph分布式存储

ceph分布式存储

详细总结

1. 基础概述
  • 核心定义:Ceph 是开源、分布式、软件定义存储系统,用于存储海量数据,具备极高可用性、扩展性和易用性。

  • 核心技术

    • 基于 RADOS(可靠的自主分布式对象存储),所有数据以对象形式存储。
    • 采用 CRUSH 算法,客户端自主计算对象存储位置,无需中央查找表。
  • 支持架构:可部署在 x86 或 ARM 架构通用服务器,支持同一集群混合部署。

  • 版本管理

    版本系列 最新版本 发布日期 退役日期
    Reef 18.2.4 2023-08-07 2025-08-01
    Squid 19.2.0 2024-09-26 2026-09-19
    Quincy 17.2.7 2022-04-19 2024-06-01
  • 企业版由红帽提供,基于社区 LTS 版本,支持周期比上游长 1 年(36 个月)。

2. 用户角色与组织适配
  • 核心角色

    • 存储管理员:负责集群安装、配置、维护、培训、自动化集成等。
    • 存储操作员:协助日常操作,通过 Ceph Dashboard 响应告警、更换故障设备。
  • 其他角色:应用开发人员、云操作员、基础架构架构师、数据中心操作员等,需与存储管理员协同。

  • 组织适配差异

    • 电信 / 云服务商:常见云操作员、存储操作员,多消费存储不维护。
    • 银行 / 金融机构:所有角色内部配备,存储管理员等充当服务提供商。
    • 大学 / 小型实施:技术支持人员承担所有角色。
3. 架构组成
  • 核心组件

    • 监控器(MON):维护集群状态映射,需配置奇数个,超过半数正常方可提供服务。
    • 对象存储设备(OSD):存储数据,处理复制、恢复、平衡,每个物理磁盘可对应一个 OSD。
    • 管理器(MGR):跟踪运行时指标,提供 Web 仪表板,建议部署 2 个以上。
    • 元数据服务器(MDS):管理 CephFS 元数据,支持 POSIX 命令高效执行。
  • 访问方式

    • 原生 API(librados):C/C++/Java 等多语言支持,性能最优。
    • 块设备(RBD):支持虚拟机启动、Linux 内核挂载,适合块存储场景。
    • 对象网关(RGW):RESTful API,兼容 Amazon S3 和 OpenStack Swift。
    • 文件系统(CephFS):并行文件系统,支持快照,适合共享存储场景。
  • 集群映射:包含 MON、OSD、PG、CRUSH、MDS 等映射,客户端通过映射确定数据位置。

4. 部署与安装
  • 部署方式

    • 推荐:Cephadm(容器化,支持 Octopus+)、Rook(K8s 部署,支持 Nautilus+)。
    • 其他:ceph-ansible(Ansible 部署)、手动部署,ceph-deploy 已废弃。
  • 最小硬件规格

    组件 CPU 内存 存储空间 网络
    ceph-osd ≥1 核 4G 整块硬盘 + 1 个 SSD 分区 ≥1G(推荐 10G)
    ceph-mon ≥2 核 2-4G 60G 1G+
    ceph-mds ≥2 核 ≥2G 1M 1G+
  • 部署流程

    1. 准备虚拟机:克隆模板、配置主机名解析、关闭 SELinux 和防火墙、配置 yum 仓库。
    2. 安装 cephadm:自动安装 podman,提前下载 Ceph 镜像。
    3. 集群初始化:通过 cephadm bootstrap 创建单节点集群,生成 Dashboard 登录信息(默认端口 8443)。
    4. 添加节点:推送 SSH 公钥,通过 ceph orch host add 添加节点。
    5. 部署组件:部署 MON、MGR、OSD 等,验证集群状态(ceph -s)。
5. 核心功能管理
  • 集群配置

    • 配置来源:默认值、集中配置数据库、本地配置文件、环境变量、命令行参数。
    • 配置命令:ceph config set/get/rm(设置 / 获取 / 删除配置)、ceph tell(运行时临时修改)。
  • 池管理

    • 池类型:复本池(多副本冗余,适合高访问量)、纠删码池(K+M 区块,省空间,适合归档)。
    • PG 数量:计算公式为(OSD 数 ×100)/ 最大副本数 / 池数,需取 2 的 N 次幂;OSD<5 时设 128,5-10 时设 512,10-50 时设 4096。
    • 操作命令:创建(ceph osd pool create)、删除(ceph osd pool rm)、快照(ceph osd pool mksnap)、配额(ceph osd pool set-quota)。
  • 认证与授权

    • 认证协议:cephx,基于共享密钥加密通信。
    • 用户管理:创建(ceph auth add)、删除(ceph auth rm)、权限配置(ceph auth caps)。
    • 密钥环:存储在 /etc/ceph 目录,需严格控制文件权限。
  • 块存储(RBD)

    • 核心操作:镜像创建(rbd create)、映射(rbd map)、快照(rbd snap create)、克隆(rbd clone)、导入导出(rbd import/export)。
    • 缓存配置:支持回写(write-back)、直写(write-through)模式,默认缓存大小 32MB。
    • 多集群同步:支持单向 / 双向镜像,基于日志或快照复制。
  • 对象存储(RGW)

    • 架构:支持域(realm)、区域组(zonegroup)、区域(zone)的多站点部署。
    • 用户操作:创建用户(radosgw-admin user create)、配置配额(radosgw-admin quota set)。
    • API 访问:支持 S3(aws cli)和 Swift(python-swiftclient)客户端。
  • 文件系统(CephFS)

    • 部署:需创建元数据池和数据池,部署 MDS 守护进程。
    • 挂载方式:Kernel 挂载(需内核≥4.0)、FUSE 挂载(支持配额和 ACL)。
    • 快照与镜像:支持快照创建(mkdir .snap/ 快照名)、跨集群镜像同步(cephfs-mirror)。
6. 监控与维护
  • 监控工具

    • Dashboard GUI:基于 Web,支持集群状态查看、用户管理、配置修改。
    • Prometheus+Grafana:监控指标导出(端口 9283)、可视化展示。
  • 集群状态

    • 健康状态:HEALTH_OK(正常)、HEALTH_WARN(告警)、HEALTH_ERR(严重错误)。
    • 查看命令:ceph status(集群状态)、ceph osd tree(OSD 结构)、ceph df(容量使用)。
  • 故障处理

    • OSD 故障:替换故障设备后,集群自动恢复数据。
    • 节点删除:需先停止服务、清理数据、从集群移除。

关键问题

问题 1:Ceph 的三种核心存储访问方式(RBD、RGW、CephFS)各自适用场景是什么?如何选择?

答案

  • RBD(块存储):适用于虚拟机(KVM/QEMU)、云实例(OpenStack Cinder)、数据库等需要块设备的场景,优势是兼容性强、性能稳定,支持快照和克隆。
  • RGW(对象存储):适用于海量非结构化数据存储(如图片、视频、日志)、备份归档、云存储服务,优势是支持 S3/Swift 标准 API,易于集成,支持多站点复制。
  • CephFS(文件系统):适用于需要共享文件系统的场景(如容器存储、HPC 集群、共享存储服务器),优势是 POSIX 兼容,支持目录层次结构和高并发访问。
  • 选择原则:根据数据类型(块 / 对象 / 文件)、访问模式(随机读写 / 批量存储 / 共享访问)、性能需求(低延迟 / 高吞吐量)决定;高访问量低延迟选 RBD,海量归档选 RGW,共享文件选 CephFS。
问题 2:Ceph 集群部署时,PG 数量的设置原则是什么?为何不能过大或过小?

答案

  • 设置原则:① 计算公式为(OSD 数 ×100)/ 最大副本数 / 池数,结果需取最接近的 2 的 N 次幂;② 单 OSD 关联的 PG 数建议 100-200,确保负载均衡;③ 不同 OSD 数量对应默认值:OSD<5 时设 128,5-10 时设 512,10-50 时设 4096,OSD>50 时用官方工具计算(https://old.ceph.com/pgcalc/)。
  • 过大影响:每个 PG 维护的数据量过少,集群需消耗大量 CPU 和内存计算 PG 映射与平衡,导致客户端 I/O 延迟增加,集群响应变慢。
  • 过小影响:单个 PG 存储数据过多,数据迁移(如 OSD 故障时)会占用大量网络带宽,且故障恢复时间长,影响数据可用性。
问题 3:Ceph 如何保障数据的高可用性和一致性?核心机制有哪些?

答案

  • 高可用性机制:① 多副本 / 纠删码:复本池默认 3 副本,纠删码池支持 M 个 OSD 故障;② 去中心化设计:无单点故障,MON 集群(奇数个)通过仲裁机制保障状态一致性,OSD 自动数据恢复与平衡;③ 组件冗余:MGR、MDS 支持备用节点,故障时自动切换。
  • 数据一致性机制:① 强一致性写入:数据需写入主 OSD 和所有备 OSD 的日志后,才向客户端返回写入成功;② 数据校验:OSD 定期检查数据一致性,发现损坏自动通过副本恢复;③ CRUSH 算法:确保数据均匀分布在不同故障域(主机 / 机架),避免单点故障导致数据丢失;④ 快照技术:支持快照回滚,保障数据可恢复性。
相关推荐
云和数据.ChenGuang2 小时前
Kibana的Discover页面搜索
分布式·elasticsearch·数据库运维工程师·运维教程
是一个Bug2 小时前
Java基础 -> JVM -> 并发 -> 框架 -> 分布式
java·jvm·分布式
Wang's Blog2 小时前
Kafka: 分布式流平台入门之安装、配置
分布式·kafka
czlczl200209252 小时前
Spring Security 进阶:基于 Customizer 的分布式权限配置架构设计
java·spring boot·分布式·后端·spring
前端世界2 小时前
拆解鸿蒙 IoT 接入:网络通信、分布式软总线和能力调用是怎么配合的
分布式·物联网·harmonyos
帅那个帅2 小时前
微服务,集群,分布式,虚拟机的定义,关联及区别
分布式·微服务·架构
shepherd1262 小时前
从入门到实践:玩转分布式链路追踪利器SkyWalking
java·分布式·后端·skywalking
Tony Bai2 小时前
【API 设计之道】08 流量与配额:构建基于 Redis 的分布式限流器
数据库·redis·分布式·缓存
码界奇点2 小时前
基于Spring Boot和Dubbox的分布式API接口与后台管理系统设计与实现
spring boot·分布式·后端·毕业设计·dubbo·源代码管理