【Claude Sonnet 4.6 生成】

本文基于 Ceph 源码(mon/Monitor.hmon/mon_types.h 及各 PaxosService 子模块)系统梳理 Monitor 的全部管理职责,并深入介绍每个子模块管理的数据与功能边界。


一、Monitor 的定位

Monitor 是 Ceph 集群的控制平面中枢。它本身不存储用户数据,而是维护整个集群的全局元数据与状态视图

  • 哪些 OSD 在线?CRUSH 规则是什么?
  • 哪些 MDS 负责哪个 FS?
  • 哪个客户端有权限访问哪个 pool?
  • 集群当前的健康状态如何?

所有这些信息都由 Monitor 集中管理,并通过 Paxos 分布式共识协议保证多个 Monitor 节点之间的强一致性。


二、架构总览

Monitor 进程内部由多个独立的 PaxosService 子模块组成,每个子模块负责一类资源,拥有独立的存储空间(RocksDB 中的独立 prefix)和独立的 Paxos 日志。

Monitor 进程
│
├── Paxos(共识引擎)
│   └── 为所有 PaxosService 提供多数派一致性保证
│
├── Elector(选举模块)
│   └── Monitor 间选举 Leader,保证只有一个写入节点
│
└── PaxosService 子模块(共 9 个)
    ├── [0] MDSMonitor    → FS 实例 + MDS 拓扑管理
    ├── [1] OSDMonitor    → OSD + Pool + PG 管理
    ├── [2] LogMonitor    → 集群日志管理
    ├── [3] MonmapMonitor → Monitor 节点管理
    ├── [4] AuthMonitor   → 身份认证(CephX keyring)
    ├── [5] MgrMonitor    → Mgr 守护进程管理
    ├── [6] MgrStatMonitor→ 集群统计数据聚合
    ├── [7] HealthMonitor → 健康状态聚合
    └── [8] ConfigMonitor → 集中配置管理

编号来自源码 mon/mon_types.h

#define PAXOS_MDSMAP     0
#define PAXOS_OSDMAP     1
#define PAXOS_LOG        2
#define PAXOS_MONMAP     3
#define PAXOS_AUTH       4
#define PAXOS_MGR        5
#define PAXOS_MGRSTAT    6
#define PAXOS_HEALTH     7
#define PAXOS_CONFIG     8

三、各子模块详解

3.1 MDSMonitor — FS 实例 + MDS 拓扑管理

管理数据:FSMap

FSMap 是 Monitor 内部维护的全局文件系统视图,包含所有 FS 实例(Filesystem)和所有 MDS daemon 的状态。

管理功能
功能 命令示例 说明
FS 生命周期 ceph fs new/rm/reset 创建/删除/重置 FS 实例
FS 配置 ceph fs set max_mds 2 修改目标 active MDS 数、session 参数、功能开关
MDS 拓扑 自动化 Rank 分配(standby→active)、failover、promote
故障检测 自动化 beacon 超时检测,标记 laggy/failed,触发 failover
MDS 运维 ceph mds fail/rm 强制下线 MDS daemon
地图推送 自动化 向 MDS daemon 和客户端推送最新 FSMap
关键数据结构
FSMap
├── epoch                              全局版本号(每次变更 +1)
├── filesystems: map<fscid, Filesystem>
│   └── Filesystem
│       ├── fscid                      FS 唯一 ID
│       └── MDSMap
│           ├── fs_name                FS 名称
│           ├── metadata_pool          元数据 pool
│           ├── data_pools[]           数据 pool 列表
│           ├── max_mds                目标 active MDS 数
│           ├── up: map<rank, gid>     Rank → active MDS 映射
│           ├── failed/damaged/stopped Rank 健康状态集合
│           └── mds_info: map<gid, mds_info_t>  MDS daemon 详情
└── standby_daemons                    全局 standby 池

3.2 OSDMonitor — OSD + Pool + PG 管理

管理数据:OSDMap

OSDMap 描述了整个存储层的拓扑:哪些 OSD 在线、数据如何分布(CRUSH)、有哪些 pool。

管理功能
功能 命令示例 说明
OSD 状态 自动化 处理 OSD failure 报告,管理 up/down/in/out 状态转换
Pool 管理 ceph osd pool create/delete/set 创建/删除/配置存储池(副本数、EC、应用标记)
CRUSH 管理 ceph osd crush add/move/rule 修改数据放置规则和拓扑树
Blacklist 自动化 将异常客户端/MDS 加入 blacklist,阻止写入
容量管理 自动化 OSD 容量统计,触发 nearfull/full 告警
PG 创建 自动化 pool 创建后协调 PG 初始化,跟踪 PG 创建进度

OSDMonitor 是代码量最大的子模块OSDMonitor.cc 约 424KB),因为存储层的逻辑最为复杂。


3.3 AuthMonitor — 身份认证(CephX)

管理数据:KeyStore(所有 entity 的 key + caps)

CephX 是 Ceph 自研的对称密钥认证协议,AuthMonitor 是认证体系的权威管理者。

管理功能
功能 命令示例 说明
entity 管理 ceph auth add/del/get/ls 增删改查 client/osd/mds 凭证
caps 管理 ceph auth caps 修改某 entity 的 mds/osd/mon 权限字符串
rotating key 自动化 周期性轮换 MDS/OSD service secret,增强安全性
ticket 颁发 自动化 处理 CephX 握手请求,颁发 service ticket
bootstrap 自动化 管理 bootstrap keyring(新 OSD 注册时使用)
核心数据结构
struct EntityAuth {
    CryptoKey key;                 // AES-128 共享密钥
    map<string, bufferlist> caps;  // 权限字符串
    // "mds"  → "allow rw fsname=myfs"
    // "osd"  → "allow rw pool=data"
    // "mon"  → "allow r"
};

// AuthMonitor 持有
KeyServerData {
    map<EntityName, EntityAuth> secrets;  // 所有 entity 的完整信息
    map<service_type, RotatingSecrets> rotating_secrets;  // 服务轮换密钥
}

AuthMonitor 与其他模块的联动:

  • MDSMonitor 创建 FS 后,MDS daemon 需要 AuthMonitor 颁发 ticket 才能连接 OSD
  • OSDMonitor 在 OSD 加入时需要 AuthMonitor 为其分配 key

3.4 MonmapMonitor — Monitor 节点管理

管理数据:MonMap

功能 说明
成员管理 ceph mon add/remove:增删 Monitor 节点
地址管理 维护每个 Monitor 的名称、地址、端口
特性集管理 记录 quorum 要求的最低特性集(滚动升级时用于兼容性控制)
新节点同步 新 Monitor 加入时同步 MonMap,再接入 quorum

3.5 MgrMonitor — Mgr 守护进程管理

管理数据:MgrMap

Mgr(Manager)是 Ceph 的扩展管理进程,提供 Dashboard、REST API、告警插件等能力。MgrMonitor 负责管理 Mgr 进程的生命周期。

功能 说明
Mgr 选主 管理 active/standby Mgr,active 宕机后自动切换
模块管理 ceph mgr module enable/disable:启停 Mgr 插件模块
地址发布 向客户端推送当前 active Mgr 地址(Dashboard、REST API 用)
命令代理 部分 ceph 命令透传给 Mgr 执行(如 ceph df detail

3.6 MgrStatMonitor — 集群统计聚合

管理数据:从 Mgr 汇总的 PGMap 统计信息

功能 说明
统计聚合 接收并汇总 Mgr 上报的 PG 状态、容量、IO 吞吐等统计
ceph status 提供 ceph status / ceph df 的数据来源
健康数据 提供 PG 层面的健康状态(降级、不完整、misplaced 等)

3.7 HealthMonitor — 健康状态聚合

管理数据:health_check_map

功能 说明
健康聚合 汇总所有 PaxosService 子模块上报的健康检查项
ceph health 输出 HEALTH_OK / HEALTH_WARN / HEALTH_ERR 及详细告警
时钟偏移检测 Leader 周期性 ping 所有 Monitor,检测时钟偏差,超阈值告警

3.8 LogMonitor — 集群日志管理

管理数据:LogSummary(集群事件日志)

功能 说明
日志收集 汇聚 OSD/MDS/Monitor 上报的集群事件日志(故障、恢复等)
日志查询 ceph log last N:查看最近 N 条集群日志
外部推送 支持推送到 syslog / graylog 等外部日志系统

3.9 ConfigMonitor — 集中配置管理

管理数据:ConfigMap(KV 配置树)

功能 说明
配置存储 ceph config set/get/rm:集中管理 daemon 配置,覆盖本地配置文件
配置推送 daemon 启动时自动从 Monitor 拉取最新配置
分级配置 支持 global / osd / mds / client / 具体 daemon 分级生效
配置查询 ceph config dump:查看当前全量配置

四、Monitor 的基础设施能力

除上述 9 个业务子模块,Monitor 还提供以下基础能力:

能力 说明
Paxos 共识 所有状态变更通过 Paxos 多数派同意后生效,保证强一致性
Leader 选举 Elector 模块,Monitor 集群中选出唯一 Leader 负责写入
数据同步 新加入或落后的 Monitor 从 Leader 全量/增量同步状态
订阅推送 map 变更后主动推送给订阅者(MDS/OSD/客户端),无需轮询
Store Scrub 定期验证所有 Monitor 节点存储内容一致(防数据静默损坏)
RocksDB 持久化 所有 map 版本持久化到本地 RocksDB,支持 epoch 级别历史回溯
ConfigKeyService 额外提供 ceph config-key:通用 KV 存储,存放少量任意元数据

五、各子模块关系图

                        ┌──────────────────────────────┐
                        │       Ceph Monitor             │
                        │                              │
         ┌──────────────┤   Paxos (共识引擎)            ├──────────────┐
         │              │   Elector (Leader 选举)       │              │
         │              └──────────────────────────────┘              │
         │                           │                                 │
    FS/MDS层                    存储层                            管理支撑层
         │                           │                                 │
┌────────▼────────┐      ┌───────────▼────────┐       ┌───────────────▼────┐
│  MDSMonitor     │      │  OSDMonitor         │       │  AuthMonitor        │
│  - FSMap        │      │  - OSDMap           │       │  - CephX Keyring    │
│  - FS CRUD      │      │  - Pool/PG 管理     │       │  - Ticket 颁发      │
│  - MDS 拓扑     │      │  - CRUSH 规则       │       │  - caps 权限        │
└─────────────────┘      │  - OSD 故障检测     │       └────────────────────┘
                         └────────────────────┘
                                                       ┌────────────────────┐
                                                       │  MonmapMonitor      │
                                                       │  - Monitor 成员     │
                                                       └────────────────────┘
                                                       ┌────────────────────┐
                                                       │  MgrMonitor         │
                                                       │  - Mgr 生命周期     │
                                                       │  - 模块管理         │
                                                       └────────────────────┘
                                                       ┌────────────────────┐
                                                       │  MgrStatMonitor     │
                                                       │  - PG 统计聚合      │
                                                       │  - ceph status 数据 │
                                                       └────────────────────┘
                                                       ┌────────────────────┐
                                                       │  HealthMonitor      │
                                                       │  - 健康检查汇总     │
                                                       │  - 时钟偏移检测     │
                                                       └────────────────────┘
                                                       ┌────────────────────┐
                                                       │  LogMonitor         │
                                                       │  - 集群事件日志     │
                                                       └────────────────────┘
                                                       ┌────────────────────┐
                                                       │  ConfigMonitor      │
                                                       │  - 集中配置管理     │
                                                       └────────────────────┘

六、总结

子模块 管理对象 最核心的职责
MDSMonitor FSMap / MDSMap FS 生命周期 + MDS 故障检测与 failover
OSDMonitor OSDMap 存储拓扑 + Pool 管理 + OSD 故障处理
AuthMonitor KeyStore CephX 认证、ticket 颁发
MonmapMonitor MonMap Monitor 集群成员管理
MgrMonitor MgrMap Mgr 守护进程管理
MgrStatMonitor PGMap 统计 集群容量与 PG 状态聚合
HealthMonitor health_check_map 健康告警聚合
LogMonitor LogSummary 集群事件日志
ConfigMonitor ConfigMap 集中配置管理

Monitor 是 Ceph 的控制平面,通过 9 个独立 PaxosService 子模块,以 Paxos 强一致性保证,统一管理集群的 FS/MDS、存储、认证、配置、日志、健康等全部控制面职责。


参考源码

文件 内容
mon/Monitor.h Monitor 主类,paxos_service[] 数组,基础设施能力
mon/mon_types.h PAXOS_* 常量定义(子模块编号)
mon/MDSMonitor.cc FS/MDS 管理核心逻辑
mon/OSDMonitor.cc OSD/Pool/PG 管理核心逻辑(最大文件,~424KB)
mon/AuthMonitor.cc CephX 认证管理
mon/MgrMonitor.cc Mgr 守护进程管理
mon/HealthMonitor.cc 健康状态聚合
mon/ConfigMonitor.cc 集中配置管理
mon/Paxos.cc Paxos 共识引擎实现
mon/Elector.cc Monitor Leader 选举实现
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐