天天看點

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,如需轉載請自行聯系原作者