土法炼钢 · 系统与基础设施

Ceph / RADOS 存储内核:从 Map 到 BlueStore

文章导航

分类入口
storagedistributed
标签入口
#ceph#rados#bluestore#crush#pg#rbd#cephfs#rgw#squid

目录

站内 Ceph 与 CRUSH 已讲清去中心化放置与 RADOS 工程概览;存储工程 覆盖 EC、对象网关与云块选型;SPDK 用户态存储栈 闭合本机用户态 NVMe 路径。中间仍缺一层:一次写如何经 Messenger → PG → BlueStore,peering/recovery 各自保证什么,RBD / CephFS / RGW 如何把语义切成对象,以及相对 MinIO / 云块 / SPDK 何时不该上 Ceph。

本系列回答:RADOS 内核里延迟与失败落在哪一层,何时分布式对象栈的税不值得付。

写:

不写:cephadm 安装全书、Rook/CSI 编排全书、未实测延迟排行、完整 POSIX/S3 教程、Crimson 全量重写。对照概览见 distributed/38;本机用户态块见 SPDK

系列状态:01–18 已全部发布(2026-08-14)。 规划见 PLAN.md。无真实多节点 / vstart 集群则不粘贴伪造 ceph -s 或 fio 输出。

版本锚定:Ceph Squid v19.2.5docs.ceph.com/en/squid/;源码 tag v19.2.5)。Tentacle(20.x)特性须显式标注。

适合谁看

与 distributed/38 的分工

维度 distributed/38 本系列
定位 CRUSH/RADOS 工程概览与运维经验 18 篇内核机制
深度 算法直觉、架构图、调参要点 官方开发者文档路径、源码目录、失败模式、开放问题
对照 略述 BlueStore / 三接口 显式外链 38 / storage / SPDK / RocksDB;不重写科普全书

读法:只要「Ceph 为什么没有 NameNode、CRUSH 大概怎么放」→ 38 足够;要「写卡在 PG 还是 BlueStore、恢复为何拖死前台」→ 本系列 01 → 05 → 06 → 08 → 10 → 16。

一、这个领域最值得关注的 5 个问题

  1. 一次客户端写的延迟与失败点落在哪一层? → 第 1–9、16 篇。
  2. PG peering 与 recovery/backfill 各自保证什么、如何限速? → 第 5、10–11 篇。
  3. BlueStore 相对 FileStore 消除了什么;小写如何落到 WAL? → 第 7–9 篇。
  4. RBD / CephFS / RGW 如何切成 RADOS 对象,各自多付什么税? → 第 12–14 篇。
  5. 何时选 Ceph 而非 MinIO / 云块 / 本机 SPDK? → 第 17–18 篇。

二、篇目依赖关系与推荐阅读路径

flowchart TD
  overview["01 Overview"] --> maps["02 MON MGR Maps"]
  maps --> osd["03 OSD Messenger"]
  osd --> crush["04 CRUSH Deep"]
  crush --> pg["05 PG Peering"]
  pg --> client["06 Client Op Path"]
  client --> bsArch["07 BlueStore Arch"]
  bsArch --> bsWrite["08 BlueStore Write"]
  bsWrite --> bsRead["09 BlueStore Read"]
  pg --> recover["10 Recovery Backfill Scrub"]
  recover --> ec["11 EC Path"]
  client --> rbd["12 RBD"]
  client --> cephfs["13 CephFS MDS"]
  client --> rgw["14 RGW"]
  bsRead --> obs["15 Observability"]
  recover --> obs
  obs --> trouble["16 Troubleshoot"]
  trouble --> vs["17 vs Alternatives"]
  vs --> select["18 Selection"]
  overview --> select
路径 篇目 适合
必读核心 1 → 2 → 5 → 6 → 8 → 10 → 16 快速建立坐标系
本地落盘 7 → 8 → 9 BlueStore
接入层 12 → 13 → 14 RBD / CephFS / RGW
对照选型 1 → 17 → 18 路径选型
完整通读 1 → … → 18 系统掌握

三、目录与每篇价值点

第一部分:集群与请求路径(01–06)

  1. RADOS 全景
    • 相对 38 / storage / SPDK 的缺口;坐标系与 18 篇路线。
  2. MON / MGR 与 Map
    • quorum、OSDMap/PGMap、epoch 传播。
  3. OSD 与 Messenger
    • daemon 角色、msgr2、Op 进入 OSD。
  4. CRUSH 加深
    • rule / bucket / weight;相对 38 的机制钉。
  5. PG 与 Peering
    • PrimaryLogPG、PG log、last_epoch_started
  6. 客户端写路径
    • librados → Primary → 副本;stale read 边界。

第二部分:BlueStore 与恢复(07–11)

  1. BlueStore 架构
    • BlockDevice / BlueFS / RocksDB / Allocator。
  2. BlueStore 写路径
    • min_alloc_size、deferred/WAL、checksum、压缩。
  3. BlueStore 读路径
    • onode、blob、checksum 失败模式。
  4. Recovery / Backfill / Scrub
    • reservation、async recovery、mClock 边界。
  5. EC 路径
    • ECBackend、整条带 vs RMW;外链 storage/49。

第三部分:接入层、观测与收束(12–18)

  1. RBD
    • image→对象、krbd vs librbd、快照/克隆边界。
  2. CephFS / MDS
    • 可恢复 MDS(journal 在 RADOS)、caps、subtree thrashing、POSIX 代价。
  3. RGW
    • 索引/数据池、S3→RADOS 映射边界。
  4. 可观测
    • ceph status / pg dump / OSD perf 口径。
  5. 排障坐标系
    • slow ops、peering、满盘、恢复拖死、checksum。
  6. 对照替代路径
    • MinIO / 云块 / 本机 NVMe+SPDK。
  7. 选型收束与开放问题
    • 排除树;Crimson、Tentacle、Rook/CSI 续作。

四、延伸阅读

读完这篇,下一步读什么

优先读同系列或同问题的下一篇,把单篇消费变成主题集群。


By .