admin管理员组文章数量:1666735
一图描述 cache tier:
Ceph 缓存层将冷热数据分离,以快速存储设备作为缓存层,低速廉价存储设备作为存储层
- 提升 IO 性能
- 使用两个 pool,作为存储层和缓存层,缓存层覆盖在存储层上,也会叫 base pool 和 cache pool
客户端访问操作数据时,先读写缓存层,如果在存储层则提升到缓存层
ceph objecter 决定数据向哪个层存储,tier agent 处理何时把数据从缓存层冲洗或驱逐到存储层
缓存模式 ( cache_mode_t
[src/osd/osd_types.h] )
- write-back
client 写数据到 cache tier 并收到 cache tier 的 ACK。写入的数据会随着时间推移迁移到 storage tier 然后在 cache tier 被冲洗掉。
当 client 需要获取在存储层上,cache tiering agent 将数据到缓存层,然后发送给 client。这样客户端就在缓存层上进行 IO 操作。
适用于修改操作会比较多的数据,如照片、视频剪辑,交易数据
- read-only
客户端读数据时,ceph 拷贝请求对象到缓存层,上面有些留下的对象会根据一些 policy 被驱逐。
适用于不可变数据,因为缓存池的数据可能包含过期的数据。
- read-forward
和 write-back 一样处理写请求。
但是当客户端读数据时,如果数据没有被拷贝到缓存层时,就转发请求给存储层,并给客户端一个重定向的响应消息,然后客户端就向存储层请求读了。
如果存储层和缓存层性能相当,这种模式可能更好。
- read-proxy
当请求对象不在缓存层时,不把客户端重定向到存储层,而是让缓存层代表客户端从存储层进行读。
有些情况下可以减少延迟。
使用
1. 创建存储层
同时设置需要的两个存储池:
1 | ceph osd tier add cold-storage-pool hot-storage-pool |
2. 设置缓存模式
1 | ceph osd tier cache-mode hot-storage-pool writeback |
3. 缓存层覆盖存储池
这样可以定向客户端所有流量到缓存层:
1 | ceph osd tier set-overlay cold-storage-pool hot-storage-pool |
4. 缓存层配置
1 | ceph osd pool set {cachepool} {key} {value} |
配置见: pool options
缓存层代理主要有两个功能:
- 冲洗: 将脏数据迁移到存储层
- 驱逐: 将最近最少使用的干净数据从缓存层驱逐出去
上述功能可以基于总字节数或者对象总数来做,ceph 不能自动确定缓存层的大小,所以要进行配置:
- 在 1 TB 时进行冲洗或驱逐
1 | ceph osd pool set hot-storage-pool target_max_bytes 1099511627776 |
- 在有 100 万对象时进行冲洗或驱逐:
1 | ceph osd pool set hot-storage-pool target_max_objects 1000000 |
当缓存池有一定比例容量的脏数据时,可以进行冲洗:
1 | ceph osd pool set hot-storage-pool cache_target_dirty_ratio 0.4 |
当缓冲池使用一定比例容量时,可以进行驱逐:
1 | ceph osd pool set hot-storage cache_target_full_ratio 0.8 |
更多见配置选项
5. 删除缓存层
模式不同删除方式不同
如果是 read-only,它没有修改的数据,可以直接删除
1 2 3 4 | # diable ceph osd tier cache-mode hot-storage-pool none ceph osd tier remove cold-storage-pool hot-storage-pool |
如果是 write-back,因为可能有修改的数据,需要先设置 forward 模式把数据冲洗到存储层
1 | ceph osd tier cache-mode hot-storage-pool forward |
确保缓存层已经被冲洗完毕:
1 | rados -p hot-storage-pool ls |
如果还有,可以手动冲洗:
1 | rados -p hot-storage-pool cache-flush-evict-all |
移走覆盖,这样客户端不会把请求发到缓存层
1 | ceph osd tier remove-overlay cold-storage-pool |
最后删除池子:
1 | ceph osd tier remove cold-storage-pool hot-storage-pool |
ceph tier
- 使用副本(而非纠删码)
- promote 和 flush 代价很高
版权声明:本文标题:cache tier分级缓存 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1730076691a1221868.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论