cache tier 分级缓存

 

一图描述 cache tier:

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 代价很高
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值