核心参数
参数 | 作用 | 适用场景 | 建议值 |
---|---|---|---|
size | 副本数量,决定数据在 OSD 之间的冗余度 | 2-3 副本保证数据安全 | 生产环境建议 3 ,测试环境 2 |
min_size | 最小副本数,低于该值时数据不可写 | 一般设置为 size 的一半 | size / 2 向上取整,例如 2 副本时建议 2 ,3 副本时建议 2 |
pg_num / pgp_num | 置换组数量,决定数据在 OSD 之间的分布情况 | 高吞吐量时需合理设置 | 使用 ceph pg autoscaler 自动调整或手动计算合适的值 |
缓存相关参数
参数 | 作用 | 适用场景 | 建议值 |
---|---|---|---|
hit_set_type | 用于追踪最近访问过的对象,通常用于 writeback 或 readproxy 缓存模式 | 仅在 writeback 缓存需要统计访问频率时使用 | bloom (适用于热点缓存),none 表示未启用 |
hit_set_period | hit_set 统计的时间窗口(秒) | 影响数据推广(promote)策略 | 一般 120s |
hit_set_count | 维护的 hit_set 历史记录数量 | 用于访问统计 | 适用于 readproxy 缓存,建议 8 |
cache_target_dirty_ratio | writeback 模式下,缓存池中允许的“脏”数据比例(未回写到主存储池) | 0 表示未启用缓存写回 | 0.2 ~ 0.4 (即 20%-40%) |
cache_target_dirty_high_ratio | writeback 模式下,达到此比例后强制回写 | 控制写缓存溢出 | 0.6 ~ 0.8 |
cache_target_full_ratio | 缓存池达到该比例时,触发对象驱逐(eviction) | 防止缓存池填满 | 0.8 ~ 0.9 |
cache_min_flush_age | 最小的回写等待时间(秒) | writeback 模式下生效,延迟数据写入,提高缓存命中率 | 60 ~ 300s |
cache_min_evict_age | 最小的驱逐时间(秒),低于该时间的数据不会从缓存池清除 | 控制缓存淘汰策略 | 300 ~ 600s |
数据提升与迁移相关参数
参数 | 作用 | 适用场景 | 建议值 |
---|---|---|---|
min_read_recency_for_promote | 读操作提升数据到缓存的最小访问次数 | 适用于 readproxy ,减少缓存污染 | 3 ~ 5 (减少临时访问数据进入缓存) |
min_write_recency_for_promote | 写操作提升数据到缓存的最小访问次数 | 适用于 writeback ,避免冷数据进入缓存 | 3 ~ 5 |
I/O 相关参数
参数 | 作用 | 适用场景 | 建议值 |
---|---|---|---|
fast_read | 是否开启快速读取(跳过缓存直接读后端池) | readproxy 或 readonly 模式时可用 | 1 (开启) |
hit_set_grade_decay_rate | hit_set 统计数据的衰减速度 | 影响数据淘汰率 | 0.9 ~ 0.95 |
hit_set_search_last_n | 在最近 N 个 hit_set 周期内搜索热点数据 | 用于热点统计 | 8 |
你的存储池的当前状态分析
你的 cache-pool 目前:
cache_mode
没有显示:说明缓存池可能未正确启用,建议检查ceph osd pool get cache-pool cache_mode
。- 所有缓存参数都为
0
:表示当前没有配置缓存策略,缓存机制可能未生效。 hit_set_type
为none
:说明没有开启热点追踪,建议启用bloom
过滤器以提高缓存效率。
改进建议
检查缓存模式
- 若输出为空或
none
,需要设置缓存模式,例如:
- 若输出为空或
设置基本缓存参数
启用
hit_set
以追踪热点确认是否正确绑定
总结
你的 cache-pool
目前的缓存机制似乎未生效(所有缓存参数都为 0
),可能只是创建了缓存池但未启用。如果你希望真正利用缓存池提高 CephFS 读写性能,建议:
- 启用
writeback
模式,允许缓存数据写入并在后台同步到主存储池。 - 调整缓存参数,优化数据回写、驱逐、访问提升策略。
- 检查缓存绑定关系,确保
cephfs_data
正确使用cache-pool
作为缓存层。
这样可以充分发挥 CephFS 的缓存能力,提高 I/O 性能!
没有评论:
发表评论