ceph/doc/dev/cache-pool.rst

71 lines
1.8 KiB
ReStructuredText

Cache pool
==========
Purpose
-------
Use a pool of fast storage devices (probably SSDs) and use it as a
cache for an existing larger pool.
We should be able to create and add a cache pool to an existing pool
of data, and later remove it, without disrupting service or migrating
data around.
Use cases
---------
Read-write pool, writeback
~~~~~~~~~~~~~~~~~~~~~~~~~~
We have an existing data pool and put a fast cache pool "in front" of it. Writes will
go to the cache pool and immediately ack. We flush them back to the data pool based on
some policy.
Read-only pool, weak consistency
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
We have an existing data pool and add one or more read-only cache
pools. We copy data to the cache pool(s) on read. Writes are
forwarded to the original data pool. Stale data is expired from the
cache pools based on some as-yet undetermined policy.
This is likely only useful for specific applications with specific
data access patterns. It may be a match for rgw, for example.
Interface
---------
Set up a read/write cache pool foo-hot for pool foo::
ceph osd tier add foo foo-hot
ceph osd tier cache-mode foo-hot writeback
ceph osd tier cache-target-size foo-hot 10G
ceph osd tier cache-target-dirty foo-hot 1G
Direct all traffic for foo to foo-hot::
ceph osd tier set-overlay foo foo-hot
Drain the cache in preparation for turning it off::
ceph osd tier cache-mode foo-hot invalidate+forward
ceph osd tier cache-target-size foo-hot 0 # do not cache any new items
When cache pool is finally empty, disable it::
ceph osd tier remove-overlay foo
ceph osd tier remove foo foo-hot
Read-only pools with lazy consistency::
ceph osd tier add foo foo-east
ceph osd tier cache-mode foo-east readonly
ceph osd tier add foo foo-west
ceph osd tier cache-mode foo-west readonly
Set up a cold storage tier::
ceph osd tier add foo foo-cold