Ceph Cache tier配置
简单了解Cache tier
Cache tier 是Ceph服务端缓存的一种方案,可以提升存储在后端存储层的I/O性能,Cache tier 的创建需要一个由高速而昂贵的存储设备(如SSD)组成的存储池作为缓存层,以及一个相对廉价设备组成的后端存储池作为经济存储层。Ceph的对象处理器决定往哪里存储对象,Cache tier决定何时把缓存内的对象刷回后端存储层,所以缓存层和后端存储层对于Ceph客户端来说是完全透明的。
cache tier两种主要的工作模式
- writeback: 管理员把缓存层配置为 writeback 模式时, Ceph 客户端们会把数据写入缓存层、并收到缓存层发来的 ACK ;写入缓存层的数据会被迁移到存储层、然后从缓存层刷掉。直观地看,缓存层位于后端存储层的“前面”,当 Ceph 客户端要读取的数据位于存储层时,缓存层代理会把这些数据迁移到缓存层,然后再发往 Ceph 客户端。从此, Ceph 客户端将与缓存层进行 I/O 操作,直到数据不再被读写。此模式对于易变数据来说较理想(如照片/视频编辑、事务数据等)。
- readonly: 管理员把缓存层配置为 readonly 模式时, Ceph 直接把数据写入后端。读取时, Ceph 把相应对象从后端复制到缓存层,根据已定义策略、脏对象会被缓存层踢出。此模式适合不变数据(如社交网络上展示的图片/视频、 DNA 数据、 X-Ray 照片等),因为从缓存层读出的数据可能包含过期数据,即一致性较差。对易变数据不要用 readonly 模式。
正因为所有 Ceph 客户端都能用缓存层,所以才有提升块设备、 Ceph 对象存储、 Ceph 文件系统和原生绑定的 I/O 性能的潜力。
注:以上信息来源于Ceph的官网说明http://docs.ceph.com/docs/master/rados/operations/cache-tiering/#
结合上面的说明,要设置Cache tier,必须要有两个存储池,一个作为后端存储,另一个作为缓存
创建缓存层
1、创建存储池
把创建的storage作为后端存储层, cache作为缓存层
[root@node1 ~]# ceph osd pool create storage 64
pool 'storage' created
[root@node1 ~]# ceph osd pool create cache 64
pool 'cache' created
2、把缓存层挂接到后端存储池上
[root@node1 ~]# ceph osd tier add storage cache
pool 'cache' is now (or already was) a tier of 'storage'
3、设置缓存模式
[root@node1 ~]# ceph osd tier cache-mode cache writeback
set cache-mode for pool 'cache' to writeback
4、将客户端流量指向到缓存存储池
[root@node1 ~]# ceph osd tier set-overlay storage cache
overlay for 'storage' is now (or already was) 'cache'
调整Cache tier配置
1、设置缓存层hit_set_type使用bloom过滤器
[root@node1 ~]# ceph osd pool set cache hit_set_type bloom
set pool 27 hit_set_type to bloom
2、设置hit_set_count、hit_set_period
[root@node1 ~]# ceph osd pool set cache hit_set_count 1
set pool 27 hit_set_count to 1
[root@node1 ~]# ceph osd pool set cache hit_set_period 3600
set pool 27 hit_set_period to 3600
[root@node1 ~]# ceph osd pool set cache target_max_bytes 1000000000000
set pool 27 target_max_bytes to 1000000000000
hit_set_count 和 hit_set_period 选项分别定义了 HitSet 覆盖的时间区间、以及保留多少个这样的 HitSet,保留一段时间以来的访问记录,这样 Ceph 就能判断一客户端在一段时间内访问了某对象一次、还是多次(存活期与热度)。
3、设置min_read_recency_for_promete、min_write_recency_for_promote
[root@node1 ~]# ceph osd pool set cache min_read_recency_for_promote 1
set pool 27 min_read_recency_for_promote to 1
[root@node1 ~]# ceph osd pool set cache min_write_recency_for_promote 1
set pool 27 min_write_recency_for_promote to 1
min_read_recency_for_promote 定义了在处理一个对象的读操作时检查多少个 HitSet ,检查结果将用于决定是否异步地提升对象。它的取值应该在 0 和 hit_set_count 之间,如果设置为 0 ,对象会一直被提升;如果设置为 1 ,就只检查当前 HitSet ,如果此对象在当前 HitSet 里就提升它,否则就不提升;设置为其它值时,就要挨个检查此数量的历史 HitSet ,如果此对象出现在 min_read_recency_for_promote 个 HitSet 里的任意一个,那就提升它。min_write_recency_for_promote和min_read_recency_for_promote 类似
统计时间越长、 min_read_recency_for_promote 或 min_write_recency_for_promote 取值越高, ceph-osd 进程消耗的内存就越多,特别是代理正忙着刷回或赶出对象时,此时所有 hit_set_count 个 HitSet 都要载入内存
缓存空间消长配置
Cache tier有两个主要功能
刷回: 代理找出修改过(或脏)的对象、并把它们转发给存储池做长期存储。
赶出: 代理找出未修改(或干净)的对象、并把最近未用过的赶出缓存。
- 相对空间消长
缓存分层代理可根据缓存存储池相对大小刷回或赶出对象。当缓存池包含的已修改(或脏)对象达到一定比例时,缓存分层代理就把它们刷回到存储池。配置命令如下:
[root@node1 ~]# ceph osd pool set cache cache_target_dirty_ratio 0.4
set pool 27 cache_target_dirty_ratio to 0.4
[root@node1 ~]# ceph osd pool set cache cache_target_dirty_high_ratio 0.6
set pool 27 cache_target_dirty_high_ratio to 0.6
[root@node1 ~]# ceph osd pool set cache cache_target_full_ratio 0.8
set pool 27 cache_target_full_ratio to 0.8
参数说明
cache_target_dirty_ratio 当缓存达到对应值时开始刷回(0.4即40%)
cache_target_dirty_high_ratio 当缓存达到对应值时开始高速刷回(0.6即60%)
cache_target_full_ratio 当缓存达到对应值时开始赶出对应以维持空间空闲(0.8即80%)
- 绝对空间消长
缓存分层代理可根据总字节数或对象数量来刷回或赶出对象,配置命令如下:
设置容量达到1T时开始刷回和赶出
[root@node1 ~]# ceph osd pool set cache target_max_bytes 1099511627776
set pool 27 target_max_bytes to 1099511627776
设置对象数量达到1M是开始刷回和赶出
[root@node1 ~]# ceph osd pool set cache target_max_objects 1048576
set pool 27 target_max_objects to 1048576
- 缓存时长配置
让已修改(或脏)对象需至少延迟 10 分钟才能刷回
[root@node1 ~]# ceph osd pool set cache cache_min_flush_age 600
set pool 27 cache_min_flush_age to 600
设置对象放置30分钟后才可以赶出
[root@node1 ~]# ceph osd pool set cache cache_min_evict_age 1800
set pool 27 cache_min_evict_age to 1800
拆除缓存层
- 拆除readonly缓存
只读缓存不含变更数据,所以禁用它不会导致任何近期更改的数据丢失。
1、把缓存模式改为 none 即可禁用。
ceph osd tier cache-mode {cachepool} none
2、去除后端存储池的缓存池。
ceph osd tier remove {storagepool} {cachepool}
- 拆除writeback缓存
1、把缓存模式改为 forward ,这样新的和更改过的对象将直接刷回到后端存储池
[root@node1 ~]# ceph osd tier cache-mode cache forward --yes-i-really-mean-it
set cache-mode for pool 'cache' to forward
2、确保缓存池已刷回,可能要等数分钟
[root@node1 ~]# rados ls -p cache
可以通过以下命令进行手动刷回
[root@node1 ~]# rados -p cache cache-flush-evict-all
3、取消流量指向缓存池
[root@node1 ~]# ceph osd tier remove-overlay storage
there is now (or already was) no overlay for 'storage'
4、剥离缓存池
[root@node1 ~]# ceph osd tier remove storage cache
pool 'cache' is now (or already was) not a tier of 'storage'
Ceph Cache tier配置相关推荐
- Ceph Cache Tier
CacheTier是ceph服务端缓存的一种方案,简单来说就是加一层Cache层,客户端直接跟Cache层打交道,提高访问速度,后端有一个存储层,实际存储大批量的数据. 分层存储的原理,就是存储的数据 ...
- Ceph Cache Tier中缓存读写流程源码分析
存储系统:ceph-14.2.22 PrimaryLogPG::do_request [ 文件路径 ] ceph/src/osd/PrimaryLogPG.cc OSD在收到客户端发送的请求时,会调用 ...
- Ceph cache tier 中 flush 和 evict 机制源码分析
存储系统:ceph-14.2.22 操作系统:ubuntu-server-16.04.07 OSDService::agent_entry [ 文件路径 ] ceph/src/osd/OSD.cc O ...
- Ceph性能测试(RBD、CephFS、NFS、Cache Tier)
本文是以下两篇文章的后续: 探索fio参数如何选择以及全方位对比HDD和SSD性能:部署Ceph前测试磁盘性能,同时基于fio测试参数的变化深入了解fio原理和磁盘IO特点. CentOS8使用cep ...
- cache tier 分级缓存
一图描述 cache tier: Ceph 缓存层将冷热数据分离,以快速存储设备作为缓存层,低速廉价存储设备作为存储层 提升 IO 性能 使用两个 pool,作为存储层和缓存层,缓存层覆盖在存储层上, ...
- flash cache tier下放flush实验
创建3台vm 分别是ceph01.ceph02.ceph03 a)后台手动部署ceph b)后台部署完毕后创建一个HDD池 rados mkpool HDD 然后定制crushmap 1.ceph o ...
- Ceph分布式存储(架构 配置与使用 原理 性能调优)
Ceph分布式存储 Ceph分布式存储 1. Ceph概述 1.1 背景 1.2 介绍 1.3 特点 1.4 分布式存储系统横纵对比 2. Ceph架构设计 2.1 Ceph整体设计 2.2 逻辑架构 ...
- 【Laravel Cache】 配置redis 存储缓存,通俗易懂,一次就掌握
文章目录 1. 配置缓存 /config/cache.php 配置缓存驱动是什么?(即 CACHE_DRIVER="stores 中的key") 配置stores中具体的模块 配置 ...
- oracle 百万记录 cache,学习笔记:通过案例深入学习In-Memory Database Cache 总结配置过程...
天萃荷净 详细记录关于In-Memory Database Cache配置方法与使用案例 一.Oracle数据库创建相关用户和权限 1.创建timesten用户 store information a ...
- Ceph集群配置遇见的困难
Ceph集群配置遇见的困难 首先按https://blog.csdn.net/aixiaoyang168/article/details/78788703 中进行配置 出现问题和些理解 说明管理节点和 ...
最新文章
- SAP MM MRKO功能里的Display与Settle功能之分离?
- MATLAB实战系列(三十五)-MATLAB基于BP神经网络的光伏发电太阳辐照度预测
- 程序员辞职卖卷饼:4天挣1个月工资!摆摊真那么赚钱?
- ***远程连接MYSQL提示1130 - Host is not allowed to connect to this MySQL server
- Spring Security——获取当前已登录用户UserDetails对象
- win10关机后自动重启_Win10关机风扇还在转|解决win10关机后风扇继续转方法
- 21种代码的“坏味道”
- 使用Office 365 试用账户 体验Office 365功能
- ai生成图片是什么技术_什么是生成型AI?
- 程序员应该阅读的一些书籍
- ROC评分中概念之阳性预测值/阴性预测值计算方法
- 《蜗居》的经典台词(转载)一
- 交流电机,如何用低成本的方案测试电机堵转?
- 如何绘制用户体验地图
- IPFS/FIL10月15日迎来又一轮减产 对投资者有什么影响?
- 找工作的一些感悟——前端小菜的成长
- Dolphinscheduler发邮件
- 榆熙教育电商学院:拼多多为何做“百亿补贴”?都带来了什么?
- FPGA学习笔记2.2——用Verilog实现七段管的工作逻辑
- SfxMCP基于GB28181/RTSP/ONVIF协议实现H5无插件直播方案 - sfxlab