Ceph版本:14.2.22
操作系统:ubuntu 18.04
分层存储部署
创建分层结构
将数据存储池和缓存池建立分层结构
ceph osd tier add fs_data cache_pool
设置分层存储模式
ceph osd tier cache-mode cache_pool writeback
将客户端请求重定向到缓存池
ceph osd tier set-overlay fs_data cache_pool
fs_data
和 cache_pool
是两个副本池,副本数默认,PG数量都是为1。
缓存池参数配置
配置缓存池使用的目标查找算法
ceph osd pool set cache_pool hit_set_type bloom
配置缓存池使用的数据命中集合个数
ceph osd pool set cache_pool hit_set_count 1
配置缓存池使用的数据命中集合存在时间
ceph osd pool set cache_pool hit_set_period 3600
配置数据promote到缓存池时需要遍历数据命中集合个数
ceph osd pool set cache_pool min_read_recency_for_promote 1
ceph osd pool set cache_pool min_write_recency_for_promote 1
注:如果设置为0,表示始终都做promote。如果设置为1,表示遍历当前hit set。设置的个数要介于0到hitset总个数之间。
配置缓存池中能够存储object的最大数量
ceph osd pool set cache_pool target_max_objects 1000
配置存储池低速flush数据到数据存储池时被修改的数据容量占比
ceph osd pool set cache_pool cache_target_dirty_ratio 0.4
配置存储池高速flush数据到数据存储池时被修改的数据容量占比
ceph osd pool set cache_pool cache_target_dirty_high_ratio 0.6
配置存储池高速evict数据时被已经使用的数据容量占比
ceph osd pool set cache_pool cache_target_full_ratio 0.8
配置缓存池flush数据到数据存储池之前object在缓存池中存在的时间
ceph osd pool set cache_pool cache_min_flush_age 10
配置缓存池evict数据之前object在缓存池中存在的时间
ceph osd pool set cache_pool cache_min_evict_age 15
注意事项
1)以上所有参数都要配置,尤其是hit set
的配置。hit set在计算flush/evict比例、object promote流程中扮演者很重要角色。
2)上述设置缓存池总容量时,既可以通过target_max_objects
设置,也可以通过target_max_bytes
设置;可以同时设置这两个参数,可以以只设置其中一个。如果设置target_max_objects,将根据object数量去计算占比。如果设置target_max_bytes,将根据数据使用字节数计算占比。如果同时设置,将分别计算占比,然后对比选择出最大占比。
3)默认情况下,单次处理单个PG中的object数量为10;生产环境发现这种情况下,flush和evict的速度会比较慢,导致缓存池会一直处于full状态,进而导致很多OSD只读不能写,出现slowops;可以根据实际操作调整缓存池OSD的参数:osd_pool_default_cache _max_evict_check_size
;比如:ceph tell osd.* injectargs --osd_pool_default_cache_max_evict_check_size 100
。