天天看点

Ceph Cache Tier

CacheTier是ceph服务端缓存的一种方案,简单来说就是加一层Cache层,客户端直接跟Cache层打交道,提高访问速度,后端有一个存储层,实际存储大批量的数据。

分层存储的原理,就是存储的数据的访问是有热点的,数据并非均匀访问。有个通用法则叫做二八原则,也就是80%的应用只访问20%的数据,这20%的数据成为热点数据,如果把这些热点数据保存性能比较高的SSD磁盘上,就可以提高响应时间。

性能较高的存储,一般由SSD 磁盘组成,称之为Cache 层,hot层,Cache pool 或者 hot pool,访问性能比较低的存储层就称为 base pool 或者 data pool,cold pool 等。

一、ceph cache mode

1、WriteBack模式:

客户端写入cache层,cache层应答,并且及时的写入back层,并删除掉cache层数据。客户端读取时,如果cache层不存在该数据,则从back层迁移数据过来,服务读取请求,一直可以服务到有效期内,适合于大量修改的数据应用场景(例如图片视频编辑, 联机事务处理类应用),适合”热”数据。

2、Read-only模式:

读请求直接发送给cache pool,写请求并不经过cache pool,而是直接发送给back_pool.客户端写数据时,直接写入到back层,客户端读取时,cache层从back层拷贝数据,并在有效期内服务,过期的数据会被删除,这种方式的优点就是,cache pool 设置为单副本就可以了,即使cache pool 层失效,也不会有数据的丢失。这种模式比较适合数据一次写入,多次读取的应用场景。例如图片,视频, 音频等。适合”冷”数据。

3、Read-forward模式:

写的时候,和WriteBack模式一样;读的时候,如果cache层不存在该对象,则会转发读请求到back层。

4、Read-proxy模式:

和Read-forward模式相似,读取的时候不是转发客户端的请求,而是代表客户端去读取back层的数据。

二、使用Cache Tier步骤

1、创建2个pool

1

2

<code>ceph osd poolcreate cachepool 150 150</code>

<code>ceph osd poolcreate backpool 150 150</code>

2、关联2个pool

<code> </code><code>cephosd tier add backpool cachepool</code>

3、设置cache模式

<code>ceph osd tiercache-mode cachepool writeback</code>

<code>#writeback|forward|readonly|readforward四种模式根据需求选择</code>

4、设置over-lay

所谓overlay,即所有发送到后端存储层的请求会被转发到cache层。

<code>ceph osd tierset-overlay backpool cachepool</code>

三、配置cache tier

3

4

5

6

7

<code>cephosd pool </code><code>set</code> <code>foo-hot hit_set_type bloom</code>

<code>cephosd pool </code><code>set</code> <code>foo-hot hit_set_count 1</code>

<code>cephosd pool </code><code>set</code> <code>foo-hot hit_set_period 3600  </code><code># 1 hour</code>

<code>ceph osd pool </code><code>set</code> <code>foo-hot target_max_bytes1000000000000  </code><code># 1 TB</code>

<code>ceph osd pool </code><code>set</code> <code>foo-hottarget_max_objects 1000000       </code><code># 1million objects</code>

<code>ceph osd pool </code><code>set</code> <code>foo-hotcache_min_flush_age 600   </code><code># 10 minutes</code>

<code>ceph osd pool </code><code>set</code> <code>foo-hotcache_min_evict_age 1800   </code><code># 30 minutes</code>

Cache层的阈值

<code>ceph osd pool </code><code>set</code> <code>cachepooltarget_max_bytes 1099511627776</code>

<code>ceph osd pool </code><code>set</code> <code>cachepooltarget_max_objects 1000000</code>

<code>ceph osd pool </code><code>set</code> <code>cachepoolcache_target_dirty_ratio 0.4</code>

<code>ceph osd pool </code><code>set</code> <code>cachepoolcache_target_full_ratio 0.8</code>

<code>ceph osd pool </code><code>set</code> <code>cachepool  cache_min_flush_age 600</code>

<code>ceph osd pool </code><code>set</code> <code>cachepoolcache_min_evict_age 1800</code>

删除cache tier(Read-only)

<code>ceph osd tier cache-mode cachepool none</code>

<code>ceph osd tier remove backpool cachepool</code>

删除cache tier(Write-back)

<code>ceph osd tier cache-mode cachepool forward</code>

<code>rados -p cachepool </code><code>ls</code>

<code>rados -p cachepool cache-flush-evict-all</code>

<code>ceph osd tier remove-overlay backpool</code>

<code></code>

本文转自Jacken_yang 51CTO博客,原文链接:http://blog.51cto.com/linuxnote/1791160,如需转载请自行联系原作者