当前位置: 首页 > news >正文

怎样理解ceph?

Ceph 是一个开源的、高度可扩展的 分布式存储系统,设计用于提供高性能、高可靠性的对象存储(Object)、块存储(Block)和文件存储(File)服务。它的核心思想是通过去中心化的架构和智能的数据分布策略(CRUSH 算法)实现横向扩展,避免单点故障。


1. Ceph 的核心概念

(1) 存储类型

Ceph 支持三种存储接口:

  • 对象存储(RADOSGW):兼容 S3/Swift API,适用于图片、视频等非结构化数据。

  • 块存储(RBD):提供虚拟磁盘(如 Kubernetes PV),适用于数据库、虚拟机等低延迟场景。

  • 文件存储(CephFS):提供共享文件系统,支持多节点读写(如 AI 训练共享数据集)。

(2) 核心组件
组件作用
OSD实际存储数据的守护进程(每个 OSD 对应一块磁盘)。
MON集群状态管理器,维护全局视图(如 OSD 映射、PG 状态)。
MDS仅用于 CephFS,管理文件元数据(如目录结构)。
RADOS底层分布式对象存储系统,所有数据最终以对象形式存储。
CRUSH数据分布算法,决定数据在 OSD 上的存放位置(无需中心化元数据服务器)。
(3) 数据分布逻辑
  • PG(Placement Group):数据分片单位,一个 PG 包含多个对象。

  • Pool:逻辑存储池(如 rbdcephfs_data),每个 Pool 包含多个 PG。

  • CRUSH Map:定义数据分布规则(如故障域:主机/机架/数据中心)。


2. Ceph 的特点

(1) 优势
  • 去中心化:无单点故障,MON 和 OSD 均可横向扩展。

  • 强一致性:所有写入操作需被多数 OSD 确认后才返回成功。

  • 自动修复:数据损坏或节点故障时,自动触发恢复(通过副本或纠删码)。

  • 灵活扩展:添加新节点后,数据会自动重新平衡。

(2) 挑战
  • 复杂度高:部署和调优需要理解 RADOS、CRUSH、PG 等概念。

  • 资源消耗:MON 和 OSD 对 CPU/内存有一定要求(尤其是纠删码计算)。

  • 运维成本:需监控 PG 状态、OSD 负载等指标。


3. Ceph 的适用场景

场景推荐存储类型案例
Kubernetes 持久化存储RBD(块存储)数据库 PVC(如 MySQL)
共享文件系统CephFS多 Pod 共享训练数据
云原生对象存储RADOSGW(S3 兼容)替代 AWS S3 存储用户上传文件
备份归档纠删码池低成本存储冷数据

4. 对比其他存储系统

特性Ceph传统 SAN/NAS云厂商存储(如 AWS EBS)
架构去中心化,无单点故障中心化(依赖存储控制器)中心化(托管服务)
扩展性线性扩展,支持上千节点有限扩展按需扩展,但有上限
成本开源,硬件成本低专有硬件成本高按量付费,长期成本高
性能依赖网络和配置调优低延迟(光纤通道)稳定但受限于云网络
管理复杂度高(需运维集群)中等低(全托管)

5. 如何快速理解 Ceph 的工作原理?

类比:图书馆系统
  • OSD = 书架:实际存放书籍(数据)。

  • MON = 图书管理员:记录哪些书在哪个书架(集群状态)。

  • CRUSH = 图书分类法:决定某本书应放在哪个区域(如“科技类-3号书架”)。

  • PG = 书箱:一组书(对象)的集合,方便批量管理。

  • Pool = 图书馆分区(如“儿童区”“成人区”)。

当有人借书(读取数据)时:

  1. 询问管理员(MON)书的位置。

  2. 根据分类法(CRUSH)找到对应书架(OSD)。

  3. 从书箱(PG)中取出书(对象)。


6. 学习建议

  1. 动手实验

    • 使用 cephadm 或 rook 快速部署测试集群。

    • 尝试创建 RBD 块设备、挂载 CephFS。

  2. 关键命令

    ceph -s              # 检查集群状态
    ceph osd tree        # 查看 OSD 分布
    ceph df              # 查看存储池用量
  3. 调优方向

    • 调整 PG 数量(ceph osd pool set <pool> pg_num 128)。

    • 配置故障域(如机架级容灾)。


总结

Ceph 是一个功能强大但复杂的“存储瑞士军刀”,适合需要 自建云存储 或 大规模分布式存储 的场景。对于 Kubernetes 用户,通常通过 Rook 或直接集成 RBD/CephFS 来使用。理解其核心组件(OSD/MON/CRUSH)和数据流动逻辑是运维的关键。

相关文章:

  • mac笔记本安装brew、nvm、git等完整版
  • AI数字人:未来职业的重塑(9/10)
  • react的fiber 用法
  • 启动 n8n 步骤指南
  • [C++ 11] --- 线程异步
  • 2025新版修复蛇年运势测试风水起名系统源码
  • 常见的六种大语言模型微调框架
  • 【MATLAB第118期】基于MATLAB的双通道CNN多输入单输出分类预测方法
  • 【油猴脚本 0】油猴脚本工程化开发 vue3 element-plus
  • Scrapy爬取动态网页:简洁高效的实战指南
  • 深入理解二叉树遍历:递归与栈的双重视角
  • Python AI图像生成方案指南
  • Flutter 移动端开发:集成淘宝 API 实现商品数据实时展示 APP
  • 【C++语法】类和对象(2)
  • 深入解析Mlivus Cloud中的Minio模块配置与最佳实践
  • 【家政平台开发(79)】解锁家政新金融:家政平台与金融服务融合之道
  • 丝杆升降机换油周期深度解析:从理论模型到自动化监测的全栈实践​
  • leetcode 283和2460
  • 【fork初体验】
  • 【2025 最新前沿 MCP 教程 03】基础构建模块:工具、资源与提示
  • 第二部以“法典”命名的法律!生态环境法典编纂迈出“关键步”
  • 哈马斯官员:只要以军持续占领,哈马斯就不会放下武器
  • 理想汽车副总裁刘杰:不要被竞争牵着鼻子走,也不迷信护城河
  • 好未来:2025财年收入增长51%,下个财年提高整体盈利能力是首要任务
  • 政治局会议:优化存量商品房收购政策,持续巩固房地产市场稳定态势
  • 今年地质灾害防治形势严峻,哪些风险区被自然资源部点名?