ceph使用缓存分层cache tier

为了优化I/O性能,结合1个SSD和10个HDD的Ceph集群,使用缓存分层技术是理想方案。以下是详细配置步骤和关键注意事项:


1. 缓存分层架构设计

  • 缓存层(Cache Tier):使用SSD OSD创建高性能池,存储热点数据。
  • 存储层(Backing Tier):使用10个HDD OSD创建容量池,存储全量数据。
  • 模式选择:推荐 Writeback模式(兼顾读写加速),流程如下:
  • 读操作:优先从SSD缓存读取,未命中则从HDD读取并缓存。
  • 写操作:数据先写入SSD缓存,异步刷回HDD存储层。

2. 配置步骤

步骤1:创建CRUSH规则

# 为SSD创建规则(假设OSD ID 0是SSD)
ceph osd crush rule create-replicated cache-rule default osd ssd

# 为HDD创建规则(假设OSD ID 1-10是HDD)
ceph osd crush rule create-replicated backing-rule default osd hdd

步骤2:创建存储池

# 创建SSD缓存池(副本数1,因单SSD)
ceph osd pool create cache-pool 128 128 replicated cache-rule

# 创建HDD存储池(副本数通常为3)
ceph osd pool create backing-pool 128 128 replicated backing-rule

步骤3:配置缓存分层

# 关联缓存层与存储层
ceph osd tier add backing-pool cache-pool

# 设置缓存模式为writeback
ceph osd tier cache-mode cache-pool writeback

# 设置overlay池(客户端访问backing-pool时自动重定向)
ceph osd tier set-overlay backing-pool cache-pool

步骤4:优化缓存策略

# 设置缓存命中集(跟踪热点数据)
ceph osd pool set cache-pool hit_set_type bloom # 使用Bloom Filter
ceph osd pool set cache-pool hit_set_count 4 # 保留4个HitSet
ceph osd pool set cache-pool hit_set_period 1200 # 每1200秒刷新HitSet

# 控制缓存数据刷回策略
ceph osd pool set cache-pool target_max_bytes 100000000000 # 最大缓存100GB
ceph osd pool set cache-pool cache_min_flush_age 600 # 10分钟后刷回HDD
ceph osd pool set cache-pool cache_min_evict_age 1800 # 30分钟后驱逐

步骤5:验证配置

# 检查缓存池状态
ceph osd pool ls detail | grep -E "cache-pool|backing-pool"

# 测试I/O路径(写入数据到backing-pool,观察是否缓存到cache-pool)
rados -p backing-pool put test-object /path/to/file

3. 关键优化参数

参数 推荐值 作用
hit_set_type bloom 高效追踪热点数据
target_max_bytes SSD容量的80% 避免缓存溢出
cache_min_flush_age 600秒 降低写延迟影响
cache_target_dirty_ratio 0.6 当脏数据超60%时触发刷写
cache_target_full_ratio 0.8 当缓存超80%时加速驱逐

4. 注意事项

  1. 单点风险:单SSD无冗余,若故障会导致未刷新的数据丢失。
  • 缓解方案:定期检查cache-pool的刷回状态,或增加SSD(至少2个实现副本)。
  1. 性能监控
ceph osd perf # 查看OSD延迟
ceph pg dump | grep cache-pool # 检查缓存池PG状态
  1. 缓存预热:业务初期手动缓存热点数据:
ceph osd pool set cache-pool cache-min-last-touch 86400 # 保留1天内的活跃数据
  1. 模式切换:需停服时切回直读HDD:
ceph osd tier cache-mode cache-pool forward # 透传模式
ceph osd tier remove-overlay backing-pool
ceph osd tier remove backing-pool cache-pool

5. 预期效果

  • 读加速:热点数据读取延迟下降50%~90%。
  • 写加速:小写操作先响应SSD,写入延迟显著降低。
  • 寿命优化:SSD吸收随机I/O,延长HDD寿命。

通过以上配置,SSD将有效承担热点I/O负载,充分发挥高性能优势,同时HDD提供大容量存储,实现成本与性能的平衡。

hdd规则使用默认的replicated_rule

是的,HDD 规则完全可以使用默认的 replicated_rule,前提是您的默认规则已经正确指向 HDD OSD。以下是具体分析和操作建议:


为什么可以直接使用默认规则?

  1. 默认规则的本质
    Ceph 初始部署时创建的默认规则(通常名为 replicated_rule)通常:
  • 使用 hostosd 作为故障域
  • 不区分设备类型(如 ssd/hdd),而是包含所有 OSD
  1. HDD 的适用性
    如果您的 10 个 HDD OSD 已经在默认规则管理的 CRUSH 树中(即 ceph osd tree 显示它们在 default root 下),则无需额外创建规则。

配置调整(简化版)

步骤1:仅创建 SSD 规则

# 仅针对SSD创建专属规则(假设SSD OSD ID为0)
ceph osd crush rule create-replicated ssd-rule default osd ssd

步骤2:创建存储池时直接使用默认规则

# 缓存池:使用SSD专属规则
ceph osd pool create cache-pool 128 128 replicated ssd-rule

# 存储池:直接使用默认规则(无需额外创建)
ceph osd pool create backing-pool 128 128 replicated replicated_rule

💡 关键验证:执行 ceph osd crush rule dump replicated_rule 确认规则包含所有 HDD OSD。


使用默认规则的条件

必须满足以下两点:

  1. 默认规则未修改
    未手动删除或重命名默认规则(初始安装后通常保留 replicated_rule)。

  2. HDD OSD 在默认 root 下
    通过 ceph osd tree 验证所有 HDD OSD 的归属:

ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 3.00000 root default # 默认root
-2 1.00000 host node1
0 ssd 0.10000 osd.0 up 1.00000 1.00000 # SSD
1 hdd 1.00000 osd.1 up 1.00000 1.00000 # HDD
...
10 hdd 1.00000 osd.10 up 1.00000 1.00000 # HDD

不适用默认规则的情况

如果出现以下任一场景,需强制为 HDD 创建规则

场景 解决方案
默认规则被误删 重建规则:
ceph osd crush rule create-replicated replicated_rule default host
HDD OSD 不在默认 root 下 1. 将 OSD 移回默认 root:
ceph osd crush move osd.{id} root=default
2. 或创建新规则指向 HDD 的位置
需要隔离 SSD/HDD 显式创建规则:
ceph osd crush rule create-replicated hdd-rule default osd hdd

最终配置命令(使用默认规则版)

# 1. 创建SSD专属规则
ceph osd crush rule create-replicated ssd-rule default osd ssd

# 2. 创建缓存池(SSD)
ceph osd pool create cache-pool 128 128 replicated ssd-rule

# 3. 创建存储池(HDD, 使用默认规则)
ceph osd pool create backing-pool 128 128 replicated replicated_rule

# 4. 配置缓存分层
ceph osd tier add backing-pool cache-pool
ceph osd tier cache-mode cache-pool writeback
ceph osd tier set-overlay backing-pool cache-pool

优点 vs 风险

方案 优点 风险
使用默认规则 配置简单,无需额外管理规则 若默认规则包含SSD会导致数据误存HDD
显式创建HDD规则 完全隔离设备类型,安全性高 增加配置复杂度

推荐做法:如果集群纯净(只有 SSD + HDD 且 SSD 已单独设规则),直接使用默认规则更高效;若存在混合设备类型,则显式创建规则更安全。

posted @ 2025-07-13 12:17  mofy  阅读(152)  评论(0)    收藏  举报