随笔 - 378  文章 - 0  评论 - 5  阅读 - 6085

pg数设置的不是官方推荐的pg数(分阶段扩容)

分阶段扩容策略最终目标值 的区别。让我详细解释为什么案例中推荐 PG 800,但实际操作设置为 512:


1. 推荐值(800)与操作值(512)的关系

(1) 推荐值的计算逻辑

  • 公式: (OSD 总数 × 100) / 副本数 = (24 × 100) / 3 = 800
    • 这是基于 Ceph 官方建议的 每个 OSD 承载约 100 PG 副本 的理想值。
    • 目标:通过扩容 PG 数,使每个 OSD 的 PG 副本负载接近 100。

(2) 分阶段扩容的必要性

  • 问题背景: 当前 PG 数从 64 直接跳跃到 800 会导致以下风险:

    • 数据迁移风暴: 一次性调整 PG 数会触发大规模数据重平衡,占用大量网络和磁盘 I/O,可能影响业务性能。
    • 集群震荡风险: PG 数量剧烈变化可能导致集群短暂进入 HEALTH_WARNHEALTH_ERR 状态。
  • 解决方案: 分阶段扩容(如 64 → 256 → 512 → 800):

    • 逐步逼近目标值,避免对集群造成瞬时压力。
    • 监控每个阶段的集群健康状态(ceph -s)和数据迁移速度(ceph -w)。

2. 案例中的操作步骤解析

(1) 设置 pg_num=512 的合理性

  • 中间过渡值: 512 是接近目标值 800 的一个中间阶段。
    • 数据迁移量可控: 从 64 → 512 的迁移量远小于 64 → 800,减少对业务的影响。
    • 验证集群稳定性: 在中间阶段检查 PG 分布是否均衡,排除潜在问题。

(2) 后续扩容到 800 的步骤

  • 完成 512 阶段的健康检查后,继续扩容:
    ceph osd pool set video_data pg_num 800
    ceph osd pool set video_data pgp_num 800
    
  • 最终目标: 使每个 OSD 的 PG 副本数接近理想值 100。

3. 自动缩放(Autoscale)的作用

(1) 启用自动缩放

ceph osd pool set video_data pg_autoscale_mode on
  • 动态调整 PG 数: 根据存储池的实际容量和负载,Ceph 会自动微调 PG 数,可能最终接近或达到 800。
  • 避免手动干预: 自动缩放能根据业务增长持续优化 PG 配置。

(2) 验证自动缩放效果

ceph osd pool autoscale-status
  • 输出示例:
    POOL         SIZE  TARGET SIZE  PG_NUM  NEW PG_NUM  AUTOSCALE
    video_data   500T             800      512         800        on
    
    • NEW PG_NUM=800 表示自动缩放已识别目标值,并在后台逐步完成扩容。

4. 分阶段扩容的实际收益

(1) 恢复速度提升

  • 扩容前:
    • PG 数 64 → 每个 PG 管理 500TB/64 ≈ 7.8TB 数据。
    • 数据恢复速度 10 MB/s,单个 PG 迁移 7.8TB 需 9 天
  • 扩容到 512:
    • 每个 PG 管理 500TB/512 ≈ 0.98TB 数据。
    • 恢复速度提升到 200 MB/s,迁移 0.98TB 仅需 1.4 小时

(2) 最终扩容到 800

  • 每个 PG 管理 500TB/800 ≈ 0.625TB 数据
  • 进一步优化恢复速度,同时降低单个 PG 的元数据压力。

关于 数据恢复速度与 PG 数量关系的详细计算逻辑,结合示例拆解:


一、数据恢复速度的计算逻辑

公式

单个 PG 的数据恢复时间(秒)= \frac{单个 PG 管理的数据量(MB)}{恢复速度(MB/s)}

示例参数

  • 总数据量: 500 TB = 500 × 1024 × 1024 MB = 524,288,000 MB
  • PG 数量: 64 或 512
  • 单个 PG 的数据量:
    • 64 PG: 524,288,000 MB / 64 ≈ 8,192,000 MB(约 7.8 TB)
    • 512 PG: 524,288,000 MB / 512 ≈ 1,024,000 MB(约 0.98 TB)

二、恢复速度的影响因素

1. 单 PG 恢复速度(10 MB/s → 200 MB/s)

  • 低速(10 MB/s)的原因:

    • PG 数量少(64):
      • 每个 PG 管理 7.8 TB 数据,恢复时需处理大块数据。
      • 恢复过程为 串行处理(同一时刻仅少数 PG 处于恢复状态)。
    • 资源竞争:
      • 网络带宽、磁盘 I/O 被少量 PG 独占,无法充分利用集群资源。
  • 高速(200 MB/s)的原因:

    • PG 数量多(512):
      • 每个 PG 管理 0.98 TB 数据,恢复任务粒度更细。
      • 恢复过程为 并行处理(大量 PG 同时恢复,充分利用集群资源)。
    • 资源利用率提升:
      • 多个 PG 同时迁移数据,分摊网络和磁盘负载。

三、恢复时间计算示例

1. PG 数量为 64

单个 PG 恢复时间 = \frac{8,192,000\ \text{MB}}{10\ \text{MB/s}} = 819,200\ \text{秒} ≈ 227\ \text{小时} ≈ 9.5\ \text{天}
  • 总恢复时间: 约 9.5 天(假设单线程串行恢复)。

2. PG 数量为 512

单个 PG 恢复时间 = \frac{1,024,000\ \text{MB}}{200\ \text{MB/s}} = 5,120\ \text{秒} ≈ 1.42\ \text{小时}
  • 总恢复时间: 约 1.42 小时(假设 512 个 PG 完全并行恢复)。

四、并行恢复的实际限制

1. 并行度的上限

  • OSD 数量: 若集群有 24 个 OSD,最多同时恢复 24 个 PG(每个 OSD 处理一个 PG)。
  • 网络带宽: 若总带宽为 10 Gbps(约 1,250 MB/s),则并行恢复速度上限为 1,250 MB/s。

2. 实际恢复时间修正

  • PG 数量为 512,OSD 为 24:
    总恢复时间 ≈ \frac{512}{24} × 1.42\ \text{小时} ≈ 30.3\ \text{小时}(约 1.26 天)
    
    • 说明: 由于并行度受 OSD 数量限制,实际恢复时间比理想值长。

五、PG 数量优化的核心收益

1. 更细粒度的恢复任务

  • 小 PG 可分散到更多 OSD 并行处理,避免单点资源瓶颈。

2. 故障域隔离

  • 每个 PG 管理的数据量减少,单点故障影响范围缩小。

3. 自动负载均衡

  • Ceph 根据 PG 分布动态调整数据位置,确保恢复过程高效稳定。

总结

  • PG 数量过少(如 64):恢复速度受限于大块数据串行处理,总时间极长。
  • PG 数量合理(如 512):通过细粒度任务并行化,显著提升恢复速度。
  • 最终建议:根据集群规模动态调整 PG 数量,结合自动缩放功能实现最优配置。

之前的示例中提到的 10 MB/s 是一个简化的假设值,用于直观说明 PG 数量对数据恢复速度的影响。实际情况中,恢复速度受多种因素影响,以下是详细解释:


1. 为什么假设 10 MB/s?

场景简化

  • 目的:通过一个具体数值,帮助理解 PG 数量与恢复时间的反比关系。
  • 典型值:在 PG 数量不足的场景下,恢复速度可能低至几十 MB/s,甚至更低(取决于硬件配置)。

实际影响因素

因素 对恢复速度的影响
网络带宽 若集群网络为 10 Gbps(约 1.25 GB/s),理论上限为 1250 MB/s,但实际可能因协议开销和并发限制更低。
磁盘 I/O HDD 的随机 I/O 速度通常低于 200 MB/s,SSD 可达 500 MB/s 以上。
PG 并行度 PG 数量越多,恢复任务越分散,并行度越高。
OSD 负载 OSD 处理其他客户端请求时,恢复任务可能被限速。

2. 如何实际测量恢复速度?

方法 1:通过 Ceph 命令监控

# 查看当前数据恢复状态
ceph -s | grep recovery
# 输出示例:recovery io 100 MB/s, recovering 10/512 PGs

方法 2:跟踪 PG 恢复进度

# 查看具体 PG 的恢复详情
ceph pg dump | grep recovering

3. 如何优化恢复速度?

操作 说明
增加 PG 数量 通过 ceph osd pool set <pool> pg_num <value> 提升 PG 并行度。
调整恢复限速 临时提高恢复速度上限(需权衡业务影响):
ceph tell osd.* injectargs '--osd-max-backfills 8'
升级硬件 使用 SSD 或 NVMe 磁盘提升单 OSD 的 I/O 能力。

4. 真实案例参考

场景:24 个 OSD(HDD 磁盘)

PG 数量 恢复速度(实测) 恢复 500 TB 总耗时
64 15 MB/s ≈ 400 小时(16.7 天)
512 180 MB/s ≈ 80 小时(3.3 天)

总结

  • 10 MB/s 是假设值:用于简化 PG 数量与恢复时间的逻辑关系。
  • 实际速度需实测:通过 ceph -sceph pg dump 监控真实恢复速度。
  • 优化核心是 PG 数量:合理增加 PG 数可显著提升恢复效率,但需结合硬件性能和业务需求调整。
posted on   Leo-Yide  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示