2. Ceph 版本体系与 Rook 映射关系

在生产环境中,Ceph 版本与 Rook 版本的匹配关系是存储集群稳定运行的基石。版本漂移(即 Rook 与 Ceph 版本不匹配)会导致 CRD 兼容性问题、存储池参数无法生效,甚至集群不可用。本节将系统梳理 Ceph Quincy/Reef/Squid 三大版本的特性差异,Rook v1.12/v1.13/v1.14 的映射表,以及通过 Operator 镜像确认当前版本的标准方法。

2.1 Ceph 三大版本特性差异

Ceph 从 Quincy(17.x)到 Reef(18.x)再到 Squid(19.x),在存储池管理、性能优化和协议支持方面均有显著演进。下表从运维视角对比核心差异:

特性维度 Quincy (17.x) Reef (18.x) Squid (19.x)
发布年份 2022 2023 2024
存储池类型 传统 PG + 纠删码 新增 pool autoscale 增强 默认启用 pg_autoscale_mode = on
BlueStore 优化 基础压缩/校验 新增 bluefs_buffered_io 动态调整 SPDK 集成,NVMe 卸载
RADOS 协议 v1/v2 混合 v2 默认,v1 弃用 仅 v2,移除 v1 兼容层
CRUSH 算法 straw2 / tree 新增 straw2-v2 优化 默认 straw2-v2,支持 weight-set
安全特性 cephx 基础认证 msgr2 加密传输强制 FIPS 140-3 合规
存储池参数调优 手动 osd_pool_default_size 支持 target_size_ratio 动态调整 新增 pg_num_max 上限保护
运维提示: 如果集群当前运行 Quincy,计划升级到 Squid,必须经过 Reef 中间版本。直接跨版本升级会导致 OSD 无法启动,且存储池参数(如 pg_num)可能被重置。

2.2 Rook 与 Ceph 版本映射表

Rook 每个版本都绑定一个 Ceph 主版本,并向后兼容一个次要版本。以下为 v1.12/v1.13/v1.14 的官方映射关系:

Rook 版本 默认 Ceph 版本 支持的最低 Ceph 版本 支持的最高 Ceph 版本 关键 CRD 变更
v1.12 Quincy (17.2.6) Quincy (17.2.0) Reef (18.2.0) 引入 CephBlockPoolRadosNamespace
v1.13 Reef (18.2.0) Quincy (17.2.6) Squid (19.1.0) 弃用 pool.spec.erasureCoded 旧字段
v1.14 Squid (19.1.0) Reef (18.2.0) Squid (19.2.0) 新增 pg_num_max 参数支持
版本漂移风险: 使用 Rook v1.12 管理 Squid 集群时,pg_num_max 参数无法通过 CRD 下发,必须手动执行 ceph osd pool set 命令。这种“半自动”状态极易导致存储池参数不一致。

2.3 通过 Operator 镜像确认当前版本

在生产环境中,确认当前 Rook 和 Ceph 版本的标准方法是检查 rook-ceph-operator 的容器镜像标签。以下是具体步骤:

  1. 获取 Operator Pod 名称:
    kubectl get pods -n rook-ceph | grep operator
  2. 查看镜像版本:
    kubectl get pod rook-ceph-operator-xxxxx -n rook-ceph -o jsonpath='{.spec.containers[0].image}'
  3. 解析版本信息:

    输出示例:rook/ceph:v1.14.3,其中 v1.14.3 即为 Rook 版本。Ceph 版本可通过以下命令确认:

    kubectl exec -n rook-ceph deploy/rook-ceph-tools -- ceph version
版本校准检查清单:
  • Rook 版本与 Ceph 版本是否在映射表范围内?
  • Operator 镜像标签是否与 CRD 版本一致?
  • 存储池参数(如 pg_num、size)是否与 Ceph 版本特性匹配?

2.4 版本漂移校准流程

当发现版本不匹配时,应按照以下流程进行校准。下图展示了从检测到修复的完整链路:

版本漂移校准流程 1. 检测版本漂移 2. 评估影响范围 3. 升级/降级决策 4. 执行版本校准 5. 验证参数一致性 常见检测方法 • kubectl get pod -o jsonpath • ceph versions 命令 • CRD 版本对比 校准执行要点 • 先升级 Rook Operator • 再升级 Ceph 版本 • 最后校验存储池参数

2.5 版本漂移常见场景与处理

场景 现象 处理方案
Rook v1.12 + Ceph Reef CRD 中 target_size_ratio 不生效 升级 Rook 到 v1.13+,或手动执行 ceph osd pool set
Rook v1.13 + Ceph Squid pg_num_max 参数无法通过 CRD 下发 升级 Rook 到 v1.14,或使用 ceph config set 临时调整
Rook v1.14 + Ceph Quincy Operator 日志报 unsupported Ceph version 降级 Rook 到 v1.12,或升级 Ceph 到 Reef/Squid
最佳实践: 在规划存储池参数调优前,务必先完成版本校准。建议每季度检查一次 Rook 与 Ceph 的版本匹配状态,避免因版本漂移导致参数调优失败。