3. 容量规划基础:存储容量模型
在 Rook Ceph 集群的容量规划中,存储容量模型是构建版本漂移校准基线的第一块基石。只有精确理解总容量、可用容量、预留容量与副本因子之间的数学关系,才能准确评估集群的健康水位,并为后续的版本升级与漂移检测提供可靠的量化基准。
3.1 核心容量概念
Ceph 的容量模型并非简单的磁盘加法,而是由物理资源、数据冗余策略与系统开销共同决定的四层结构。下表列出了四个核心维度的定义与计算公式:
| 容量维度 | 英文术语 | 定义 | 计算公式(简化) |
|---|---|---|---|
| 总容量 | Total Capacity | 集群中所有 OSD 所挂载物理磁盘的原始裸容量之和。 | ∑(每块磁盘标称容量) |
| 可用容量 | Usable Capacity | 在考虑副本因子与预留后,用户数据实际可写入的净容量。 | (总容量 - 预留容量) / 副本因子 |
| 预留容量 | Reserved Capacity | 为保障 OSD 性能、故障切换与数据重平衡而保留的不可用空间。 | 总容量 × 预留比例(通常 5%–15%) |
| 副本因子 | Replication Factor | 数据在集群中保存的副本份数(含主副本)。 | 通常为 2 或 3 |
关键认知: 在 Rook 环境中,
ceph df 命令输出的 RAW USED 与 RAW TOTAL 对应的是“总容量”视角;而 USED 与 AVAIL 则反映“可用容量”视角。两者之间的差距主要由副本因子与预留决定。
3.2 容量模型分层架构
为了直观展示从物理磁盘到用户可见容量的转换链路,下图以 Rook Ceph 集群为例,绘制了容量模型的四层架构:
3.3 副本因子对容量的影响
副本因子是容量模型中影响最大的单一参数。在 Rook Ceph 中,默认的 pool 副本因子通常为 3(生产环境)或 2(开发/测试环境)。下表对比了不同副本因子下的容量效率:
| 副本因子 | 物理开销倍数 | 可用容量占比(预留10%) | 典型场景 | 风险提示 |
|---|---|---|---|---|
| RF=2 | 2x | 45% | 非关键业务、临时存储 | 单 OSD 故障可能导致数据不可用 |
| RF=3 | 3x | 30% | 生产核心业务、数据库 | 容量利用率低,但数据安全高 |
| EC 4+2 | 1.5x | 60% | 冷数据、备份归档 | CPU 开销大,不适合小 IO 场景 |
版本漂移校准警示: 在 Rook 版本升级过程中,如果 pool 的
size(副本因子)被意外修改(例如从 3 降为 2),可用容量会瞬间膨胀约 50%,导致容量监控基线失效。必须在版本漂移校准基线中锁定 pool size 的期望值。
3.4 预留容量的构成与计算
预留容量并非单一数值,而是由多个子系统开销叠加而成。在 Rook Ceph 中,预留容量主要包含以下三部分:
- OSD 预留(Bluestore 内部开销): 包括 BlueStore 的
block.db(WAL/RocksDB)、block.wal以及内部元数据。通常占 OSD 容量的 3%–5%。 - 集群预留(Monitor / Manager / Crash): Rook 部署的 monitor、mgr、crashcollector 等控制面 Pod 占用的磁盘空间。通常每个节点预留 10–20 GB。
- 运维安全预留(Watermark): 为防止 OSD 写满导致集群卡死,Ceph 默认设置
mon_osd_full_ratio = 0.95,即预留 5% 的紧急空间。
综合预留比例的计算公式如下:
预留比例 = 1 - (1 - bluestore_overhead) × (1 - cluster_reserve_ratio) × (1 - full_ratio)
示例(生产环境典型值):
bluestore_overhead = 0.04
cluster_reserve_ratio = 0.02
full_ratio = 0.05
预留比例 = 1 - (0.96 × 0.98 × 0.95) ≈ 1 - 0.893 ≈ 0.107 → 10.7%
3.5 容量模型在版本漂移校准中的角色
在《容量规划驱动 Rook Ceph 存储版本漂移校准的基线构建》课程中,本节容量模型将作为后续所有校准计算的输入。下图展示了容量模型如何与版本漂移检测流程衔接:
3.6 实践检查清单
在开始版本漂移校准基线构建之前,请确认以下容量模型参数已记录:
- 总容量: 通过
ceph osd df tree获取所有 OSD 的RAW USED+RAW AVAIL之和。 - 副本因子: 通过
ceph osd pool ls detail确认每个 pool 的size与min_size。 - 预留比例: 检查
ceph osd pool get <pool_name> target_size_ratio以及mon_osd_full_ratio。 - 可用容量: 使用
ceph df的AVAIL列与上述公式交叉验证。
基线记录模板: 建议将上述四个参数记录为 YAML 格式的基线文件,作为后续版本漂移检测的参考锚点。
# capacity_baseline.yaml
cluster_name: prod-rook-ceph
total_capacity_tb: 120.5
reserved_ratio: 0.107
replication_factor: 3
usable_capacity_tb: 35.9
pool_default_size: 3
pool_default_min_size: 2
mon_osd_full_ratio: 0.95