ceph-cache-tier
文章目录
- 创建
- 缓存池原理
- 理论与实践相结合
- 缓存池容量控制
- 删除缓存层
创建
1、给数据资源池添加tier层
ceph osd tier add data_pool cache_pool --force-nonempty
2、设置tier模式为writeback
ceph osd tier cache-mode cache_pool writeback
3、设置tier层overlay
ceph osd tier set-overlay data_pool cache_pool
4、设置过滤器
ceph osd pool set cache_pool hit_set_type bloom
5、设置hit count数量
ceph osd pool set cache_pool hit_set_count 4
6、设置target_max_bytes
ceph osd pool set cache_pool target_max_bytes
7、设置第一条水线
ceph osd pool set cache_pool cache_target_dirty_ratio 0.4
8、设置第二条水线
ceph osd pool set cache_pool cache_target_dirty_high_ratio 0.6
9、设置第三条水线
ceph osd pool set cache_pool cache_target_full_ratio 0.8
缓存池原理
缓存分层特性也是在Ceph的Firefly版中正式发布的,这也是Ceph的Firefly版本中被谈论最多的一个特性。缓存分层是在更快的磁盘(通常是SSD),上创建一个Ceph池。这个缓存池应放置在一个常规的复制池或erasure池的前端,这样所有的客户端I/O操作都首先由缓存池处理。之后,再将数据写回到现有的数据池中。客户端能够在缓存池上享受高性能,而它们的数据显而易见最终是被写入到常规池中的。
[外链图片转存失败(img-7MFcOb0E-1564730623363)(ceph-cache-tier/640.png
一般来说,缓存层构建在昂贵/速度更快的SSD磁盘上,这样才能为客户提供更好的I/O性能。在缓存池后端通常是存储层,它由复制或者erasure类型的HDD组成。在这种类型的设置中,客户端将I/O请求提交到缓存池,不管它是一个读或写操作,它的请求都能够立即获得响应。速度更快的缓存层为客户端请求提供服务。一段时间后,缓存层将所有数据写回备用的存储层,以便它可以缓存来自客户端的新请求。在缓存层和存储层之间的数据迁移都是自动触发且对客户端是透明的。缓存分层能以两种模式进行配置。
writeback模式:当Ceph的缓存分层配置为writeback模式时,Ceph客户端将数据写到缓存层类型的池,也就是速度更快的池,因此能够立即接收写入确认。基于你为缓存层设置的flushing/evicting策略,数据将从缓存层迁移到存储层,并最终由缓存分层代理将其从缓存层中删除。处理来自客户端的读操作时,首先由缓存分层代理将数据从存储层迁移到缓存层,然后再把它提供给客户。直到数据变得不再活跃或成为冷数据,否则它将一直保留在缓存层中。
read-only模式:当Ceph的缓存分层配置为read-only模式时,它只适用于处理客户端的读操作。客户端的写操作不涉及缓存分层,所有的客户端写都在存储层上完成。在处理来自客户端的读操作时,缓存分层代理将请求的数据从存储层复制到缓存层。基于你为缓存层配置的策略,不活跃的对象将会从缓存层中删除。这种方法非常适合多个客户端需要读取大量类似数据的场景。
缓存层是在速度更快的物理磁盘(通常是SSD)上实现的,它在使用HDD构建的速度较慢的常规池前部署一个快速的缓存层。在本节中,我们将创建两个独立的池(一个缓存池和一个常规),分别用作缓存层和存储层。
理论与实践相结合
1、下面开始配置以cache作为sata-pool的前端高速缓冲池。
1)新建缓冲池,其中,cache作为sata-pool的前端高速缓冲池。
# ceph osd pool create storage 64
pool ‘storage’ created
# ceph osd pool create cache 64
pool ‘cache’ created
2)设定缓冲池读写策略为写回模式。
ceph osd tier cache-mode cache writeback
3)把缓存层挂接到后端存储池上
# ceph osd tier add storage cache
pool ‘cache’ is now (or already was) a tierof ‘storage’
4)将客户端流量指向到缓存存储池
# ceph osd tier set-overlay storage cache
overlay for ‘storage’ is now (or alreadywas) ‘cache’
2、调整Cache tier配置
1)设置缓存层hit_set_type使用bloom过滤器
# ceph osd pool set cache hit_set_type bloom
set pool 27 hit_set_type to bloom
命令格式如下:
ceph osd pool set {cachepool} {key} {value}
关于Bloom-Filte算法原理可参见:
https://blog.csdn.net/jiaomeng/article/details/1495500
2)设置hit_set_count、hit_set_period
# ceph osd pool set cache hit_set_count 1
set pool 27 hit_set_count to 1
# ceph osd pool set cache hit_set_period3600
set pool 27 hit_set_period to 3600
# ceph osd pool set cache target_max_bytes1000000000000
set pool 27 target_max_bytes to1000000000000
默认情况下缓冲池基于数据的修改时间来进行确定是否命中缓存,也可以设定热度数hit_set_count和热度周期hit_set_period,以及最大缓冲数据target_max_bytes。
hit_set_count 和 hit_set_period 选项分别定义了 HitSet 覆盖的时间区间、以及保留多少个这样的 HitSet,保留一段时间以来的访问记录,这样 Ceph 就能判断一客户端在一段时间内访问了某对象一次、还是多次(存活期与热度)。
3)设置min_read_recency_for_promote、min_write_recency_for_promote
# ceph osd pool set cachemin_read_recency_for_promote 1
set pool 27 min_read_recency_for_promote to1
# ceph osd pool set cachemin_write_recency_for_promote 1
set pool 27 min_write_recency_for_promote to 1
缓存池容量控制
先讲解个概念缓存池代理层两大主要操作
·刷写(flushing):负责把已经被修改的对象写入到后端慢存储,但是对象依然在缓冲池。
·驱逐(evicting):负责在缓冲池里销毁那些没有被修改的对象。
缓冲池代理层进行刷写和驱逐的操作,主要和缓冲池本身的容量有关。在缓冲池里,如果被修改的数据达到一个阈值(容量百分比),缓冲池代理就开始把这些数据刷写到后端慢存储。当缓冲池里被修改的数据达到40%时,则触发刷写动作。
# ceph osd pool set cachecache_target_dirty_ratio 0.4
当被修改的数据达到一个确定的阈值(容量百分比),刷写动作将会以高速运作。例如,当缓冲池里被修改数据达到60%时候,则高速刷写。
# ceph osd pool set cachecache_target_dirty_high_ratio 0.6
缓冲池的代理将会触发驱逐操作,目的是释放缓冲区空间。例如,当缓冲池里的容量使用达到80%时候,则触发驱逐操作。
# ceph osd pool set cachecache_target_full_ratio 0.8
除了上面提及基于缓冲池的百分比来判断是否触发刷写和驱逐,还可以指定确定的数据对象数量或者确定的数据容量。对缓冲池设定最大的数据容量,来强制触发刷写和驱逐操作。
# ceph osd pool set cache target_max_bytes1073741824
同时,也可以对缓冲池设定最大的对象数量。在默认情况下,RBD的默认对象大小为4MB,1GB容量包含256个4MB的对象,则可以设定:
# ceph osd pool set cache target_max_objects 256
4)缓冲池的数据刷新问题在缓冲池里,对象有最短的刷写周期。若被修改的对象在缓冲池里超过最短周期,将会被刷写到慢存储池。
# ceph osd pool set cachecache_min_flush_age 600
注意:单位是分钟
设定对象最短的驱逐周期。
# ceph osd pool set cachecache_min_evict_age 1800
删除缓存层
删除readonly缓存
1)把缓存模式改为 none 即可禁用。
ceph osd tier cache-mode {cachepool} none
2)去除后端存储池的缓存池。
ceph osd tier remove {storagepool}{cachepool}
删除writeback缓存
1)把缓存模式改为 forward ,这样新的和更改过的对象将直接刷回到后端存储池
# ceph osd tier cache-mode cache forward–yes-i-really-mean-it
set cache-mode for pool ‘cache’ to forward
2)确保缓存池已刷回,可能要等数分钟
# rados ls -p cache
可以通过以下命令进行手动刷回
# rados -p cache cache-flush-evict-all
3)取消流量指向缓存池
# ceph osd tier remove-overlay storage
there is now (or already was) no overlayfor ‘storage’
4)剥离缓存池
# ceph osd tier remove storage cache
pool ‘cache’ is now (or already was) not atier of ‘storage’
5)刷tier层数据
rados -p ram1 cache-flush-evict-all
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集群考虑要不要加入分层存储 因此花了点时间研究了下 1,首先肯定要弄清Ceph分层存储的结构 ,结构图大概就是下图所示 缓存层(A cache tier)为Ceph客户端提供更好的I/O ...
- 《Ceph源码分析》——第1章,第5节RADOS
本节书摘来自华章出版社<Ceph源码分析>一书中的第1章,第1.5节RADOS,作者常涛,更多章节内容可以访问云栖社区"华章计算机"公众号查看 1.5 RADOS RA ...
- ceph常用命令-pool相关命令
2019独角兽企业重金招聘Python工程师标准>>> 1.1 查询系统中所有的pool 命令格式: ceph osd lspools 或rados lspools 1.2 ...
- 一文囊括Ceph所有利器(工具)
原文链接: 知乎专栏: 一文囊括Ceph所有利器(工具) - 知乎 前言 ceph的工具很多,包括集群管理与运维,还有性能分析等等. 所以本文期望应收尽收所有的工具,也当做自己的一个梳理与总结,当自己 ...
最新文章
- php中文乱码问题解决方案
- 华为ax3怎么接光纤sc接口_视频监控工程中使用光纤光缆注意事项有哪些?
- 喜报 | 链家签约神策数据,让数据“说话”更精准
- 省钱攻略送上!戴尔官网OptiPlex商用台式机到手仅需2279元!速速抢购!
- HDU6268 Master of Subgraph
- junit框架——单元测试
- 计算机主机光驱弹不出来怎么办,win7系统电脑按下光驱按钮托盘就是弹不出来怎么办...
- 阿里云自带的mysql_阿里云自带mysql
- JavaEE实现图书管理系统
- IDEA .java with UTF-8: MALFORMED[1] [error] Please try specifying another one usi
- 如何使用浏览器网络监视工具进行黑客攻击
- 安卓Java开启usb热点_安卓手机通过USB共享PC的宽带网络上网
- 《密码编码学与网络安全》原理与实践笔记(一)
- 【学习技巧和心得】 - 如何将学习资源转化成图文笔记?
- java获取机器序列号_Java后台实现查询电脑本机CPU序列号工具类
- 基于asp.net714零食销售海米跨境电子商务商城
- GLOG中的(Verbose Logging)VLOG的使用
- 红外成像光电探测器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- Zookeeper连接异常 Got ping response for sessionid 2021-06-30
- 边缘提取之Roberts算子
热门文章
- python在文本添加超链接_在Markdown中快速插入超链接的Workflow
- 河北古村落版画展开幕 河北这些古村落你值得去看看
- matlab 此上下文中不允许出现函数定义
- Pycharm我认为最好看,最舒服的主题配色和字体设置
- 一线数据分析师教你如何写简历才能脱颖而出!
- Fisher精确检验与卡方检验
- 怎么将拍的照片免费转成PDF文件呢
- 相关证书介绍(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12等)
- rpc服务器不可用处于启用状态,电脑提示RPC服务器不可用怎么办?
- 毕业论文ppt的研究方法及过程计算机专业,毕业论文答辩ppt(要求和制作技巧)...