summaryrefslogtreecommitdiff
path: root/man/lvmcache.7_main
diff options
context:
space:
mode:
authorAlasdair G Kergon <agk@redhat.com>2017-03-14 00:47:46 +0000
committerAlasdair G Kergon <agk@redhat.com>2017-03-14 00:47:46 +0000
commitca905681ccf9afd2b8313b5a7a89ac609c9a7ba5 (patch)
tree8816d8d92260d202f9c0edb83617b2e994ae2e1a /man/lvmcache.7_main
parent38292ca1d0a78aa6b06a4180b8e87cb9dd417a22 (diff)
downloadlvm2-ca905681ccf9afd2b8313b5a7a89ac609c9a7ba5.tar.gz
man: Revise internal man page generation process.
For each section 8 man page, a .8_gen file is created from one of: .8_main - Old-style man page - content used directly .8_des and .8_end - Description and end section of a generated page .8_pregen - Pre-generated page used if the generator fails Other man sections are not generated and use the suffix .5_main or .7_main. Developers should use 'make generate' to regenerate the .8_pregen files.
Diffstat (limited to 'man/lvmcache.7_main')
-rw-r--r--man/lvmcache.7_main419
1 files changed, 419 insertions, 0 deletions
diff --git a/man/lvmcache.7_main b/man/lvmcache.7_main
new file mode 100644
index 000000000..45bb5b1a6
--- /dev/null
+++ b/man/lvmcache.7_main
@@ -0,0 +1,419 @@
+.TH "LVMCACHE" "7" "LVM TOOLS #VERSION#" "Red Hat, Inc" "\""
+.SH NAME
+lvmcache \(em LVM caching
+
+.SH DESCRIPTION
+
+The \fBcache\fP logical volume type uses a small and fast LV to improve
+the performance of a large and slow LV. It does this by storing the
+frequently used blocks on the faster LV.
+LVM refers to the small fast LV as a \fBcache pool LV\fP. The large
+slow LV is called the \fBorigin LV\fP. Due to requirements from dm-cache
+(the kernel driver), LVM further splits the cache pool LV into two
+devices - the \fBcache data LV\fP and \fBcache metadata LV\fP. The cache
+data LV is where copies of data blocks are kept from the
+origin LV to increase speed. The cache metadata LV holds the
+accounting information that specifies where data blocks are stored (e.g.
+on the origin LV or on the cache data LV). Users should be familiar with
+these LVs if they wish to create the best and most robust cached
+logical volumes. All of these associated LVs must be in the same VG.
+
+.SH Cache Terms
+.nf
+origin LV OriginLV large slow LV
+cache data LV CacheDataLV small fast LV for cache pool data
+cache metadata LV CacheMetaLV small fast LV for cache pool metadata
+cache pool LV CachePoolLV CacheDataLV + CacheMetaLV
+cache LV CacheLV OriginLV + CachePoolLV
+.fi
+
+.SH Cache Usage
+
+The primary method for using a cache type logical volume:
+
+
+.SS 0. create OriginLV
+
+Create an LV or identify an existing LV to be the origin LV.
+
+.B lvcreate \-n OriginLV \-L LargeSize VG SlowPVs
+
+.I Example
+.br
+# lvcreate \-n lvol0 \-L 100G vg
+
+
+.SS 1. create CacheDataLV
+
+Create the cache data LV. This LV will hold data blocks from the
+OriginLV. The size of this LV is the size of the cache and will be
+reported as the size of the cache pool LV.
+
+.B lvcreate \-n CacheDataLV \-L CacheSize VG FastPVs
+
+.I Example
+.br
+# lvcreate \-n cache0 \-L 10G vg /dev/fast
+
+
+.SS 2. create CacheMetaLV
+
+Create the cache metadata LV. This LV will hold cache pool metadata. The
+size of this LV should be 1000 times smaller than the cache data LV, with
+a minimum size of 8MiB.
+
+.B lvcreate \-n CacheMetaLV \-L MetaSize VG FastPVs
+
+.I Example
+.br
+# lvcreate \-n cache0meta \-L 12M vg /dev/fast
+
+.nf
+# lvs -a vg
+ LV VG Attr LSize Pool Origin
+ cache0 vg -wi-a----- 10.00g
+ cache0meta vg -wi-a----- 12.00m
+ lvol0 vg -wi-a----- 100.00g
+.fi
+
+
+.SS 3. create CachePoolLV
+
+Combine the data and metadata LVs into a cache pool LV.
+The behavior of the cache pool LV can be set in this step.
+.br
+CachePoolLV takes the name of CacheDataLV.
+.br
+CacheDataLV is renamed CachePoolLV_cdata and becomes hidden.
+.br
+CacheMetaLV is renamed CachePoolLV_cmeta and becomes hidden.
+
+.B lvconvert \-\-type cache-pool \-\-poolmetadata VG/CacheMetaLV
+.RS
+.B VG/CacheDataLV
+.RE
+
+.I Example
+.br
+# lvconvert \-\-type cache\-pool \-\-poolmetadata vg/cache0meta vg/cache0
+
+.nf
+# lvs -a vg
+ LV VG Attr LSize Pool Origin
+ cache0 vg Cwi---C--- 10.00g
+ [cache0_cdata] vg Cwi------- 10.00g
+ [cache0_cmeta] vg ewi------- 12.00m
+ lvol0 vg -wi-a----- 100.00g
+.fi
+
+
+.SS 4. create CacheLV
+
+Create a cache LV by linking the cache pool LV to the origin LV.
+The user accessible cache LV takes the name of the origin LV,
+while the origin LV becomes a hidden LV with the name
+OriginLV_corig. This can be done while the origin LV is in use.
+.br
+CacheLV takes the name of OriginLV.
+.br
+OriginLV is renamed OriginLV_corig and becomes hidden.
+
+.B lvconvert \-\-type cache \-\-cachepool VG/CachePoolLV VG/OriginLV
+
+.I Example
+.br
+# lvconvert \-\-type cache \-\-cachepool vg/cache0 vg/lvol0
+
+.nf
+# lvs -a vg
+ LV VG Attr LSize Pool Origin
+ cache0 vg Cwi---C--- 10.00g
+ [cache0_cdata] vg Cwi-ao---- 10.00g
+ [cache0_cmeta] vg ewi-ao---- 12.00m
+ lvol0 vg Cwi-a-C--- 100.00g cache0 [lvol0_corig]
+ [lvol0_corig] vg -wi-ao---- 100.00g
+.fi
+
+
+.SH Cache Removal
+
+.SS Split a cache pool LV off of a cache LV
+
+\&
+
+A cache pool LV can be disconnected from a cache LV, leaving an
+unused cache pool LV, and an uncached origin LV. This command
+writes back data from the cache pool to the origin LV when necessary.
+
+.B lvconvert --splitcache VG/CacheLV
+
+.SS Removing a cache pool LV without removing its linked origin LV
+
+\&
+
+This writes back data from the cache pool to the origin LV when necessary,
+then removes the cache pool LV, leaving the uncached origin LV.
+
+.B lvremove VG/CachePoolLV
+
+An alternative command that also disconnects the cache pool from the cache
+LV, and deletes the cache pool:
+
+.B lvconvert --uncache VG/CacheLV
+
+.I Example
+.nf
+# lvs vg
+ LV VG Attr LSize Pool Origin
+ cache0 vg Cwi---C--- 10.00g
+ lvol0 vg Cwi-a-C--- 100.00g cache0 [lvol0_corig]
+
+# lvremove vg/cache0
+
+# lvs vg
+ LV VG Attr LSize Pool Origin
+ lvol0 vg -wi-a----- 100.00g
+.fi
+
+.SS Removing a cache LV: both origin LV and the cache pool LV
+
+\&
+
+Removing a cache LV removes both the origin LV and the linked cache pool
+LV.
+
+.B lvremove VG/CacheLV
+
+
+.SH Cache Topics
+
+.SS Tolerate device failures in a cache pool LV
+
+\&
+
+Users who are concerned about the possibility of failures in their fast
+devices that could lead to data loss might consider making their cache
+pool sub-LVs redundant.
+
+.I Example
+.nf
+0. Create an origin LV we wish to cache
+# lvcreate \-L 10G \-n lv1 vg /dev/slow_devs
+
+1. Create a 2-way RAID1 cache data LV
+# lvcreate \-\-type raid1 \-m 1 \-L 1G -n cache1 vg \\
+ /dev/fast1 /dev/fast2
+
+2. Create a 2-way RAID1 cache metadata LV
+# lvcreate \-\-type raid1 \-m 1 \-L 8M -n cache1meta vg \\
+ /dev/fast1 /dev/fast2
+
+3. Create a cache pool LV combining cache data LV and cache metadata LV
+# lvconvert \-\-type cache\-pool \-\-poolmetadata vg/cache1meta vg/cache1
+
+4. Create a cached LV by combining the cache pool LV and origin LV
+# lvconvert \-\-type cache \-\-cachepool vg/cache1 vg/lv1
+.fi
+
+.SS Cache mode
+
+\&
+
+The default cache mode is "writethrough". Writethrough ensures that any
+data written will be stored both in the cache pool LV and on the origin
+LV. The loss of a device associated with the cache pool LV in this case
+would not mean the loss of any data.
+
+A second cache mode is "writeback". Writeback delays writing data blocks
+from the cache pool back to the origin LV. This mode will increase
+performance, but the loss of a device associated with the cache pool LV
+can result in lost data.
+
+With the \-\-cachemode option, the cache mode can be set when creating a
+cache LV, or changed on an existing cache LV. The current cache mode of a
+cache LV can be displayed with the cache_mode reporting option:
+
+.B lvs \-o+cache_mode VG/CacheLV
+
+.BR lvm.conf (5)
+.B allocation/cache_mode
+.br
+defines the default cache mode.
+
+.I Example
+.nf
+0. Create an origin LV we wish to cache (yours may already exist)
+# lvcreate \-L 10G \-n lv1 vg /dev/slow
+
+1. Create a cache data LV
+# lvcreate \-L 1G \-n cache1 vg /dev/fast
+
+2. Create a cache metadata LV
+# lvcreate \-L 8M \-n cache1meta vg /dev/fast
+
+3. Create a cache pool LV
+# lvconvert \-\-type cache\-pool \-\-poolmetadata vg/cache1meta vg/cache1
+
+4. Create a cache LV by combining the cache pool LV and origin LV,
+ and use the writethrough cache mode.
+# lvconvert \-\-type cache \-\-cachepool vg/cache1 \\
+ \-\-cachemode writethrough vg/lv1
+.fi
+
+
+.SS Cache policy
+
+\&
+
+The cache subsystem has additional per-LV parameters: the cache policy to
+use, and possibly tunable parameters for the cache policy. Three policies
+are currently available: "smq" is the default policy, "mq" is an older
+implementation, and "cleaner" is used to force the cache to write back
+(flush) all cached writes to the origin LV.
+
+The "mq" policy has a number of tunable parameters. The defaults are
+chosen to be suitable for the majority of systems, but in special
+circumstances, changing the settings can improve performance.
+
+With the \-\-cachepolicy and \-\-cachesettings options, the cache policy
+and settings can be set when creating a cache LV, or changed on an
+existing cache LV (both options can be used together). The current cache
+policy and settings of a cache LV can be displayed with the cache_policy
+and cache_settings reporting options:
+
+.B lvs \-o+cache_policy,cache_settings VG/CacheLV
+
+.I Example
+.nf
+Change the cache policy and settings of an existing cache LV.
+# lvchange \-\-cachepolicy mq \-\-cachesettings \\
+ \(aqmigration_threshold=2048 random_threshold=4\(aq vg/lv1
+.fi
+
+.BR lvm.conf (5)
+.B allocation/cache_policy
+.br
+defines the default cache policy.
+
+.BR lvm.conf (5)
+.B allocation/cache_settings
+.br
+defines the default cache settings.
+
+
+.SS Chunk size
+
+\&
+
+The size of data blocks managed by a cache pool can be specified with the
+\-\-chunksize option when the cache LV is created. The default unit
+is KiB. The value must be a multiple of 32KiB between 32KiB and 1GiB.
+
+Using a chunk size that is too large can result in wasteful use of the
+cache, where small reads and writes can cause large sections of an LV to
+be mapped into the cache. However, choosing a chunk size that is too
+small can result in more overhead trying to manage the numerous chunks
+that become mapped into the cache. Overhead can include both excessive
+CPU time searching for chunks, and excessive memory tracking chunks.
+
+Command to display the cache pool LV chunk size:
+.br
+.B lvs \-o+chunksize VG/CacheLV
+
+.BR lvm.conf (5)
+.B cache_pool_chunk_size
+.br
+controls the default chunk size used when creating a cache LV.
+
+The default value is shown by:
+.br
+.B lvmconfig \-\-type default allocation/cache_pool_chunk_size
+
+
+.SS Spare metadata LV
+
+\&
+
+See
+.BR lvmthin (7)
+for a description of the "pool metadata spare" LV.
+The same concept is used for cache pools.
+
+.SS Automatic pool metadata LV
+
+\&
+
+A cache data LV can be converted to cache pool LV without specifying a
+cache pool metadata LV. LVM will automatically create a metadata LV from
+the same VG.
+
+.B lvcreate -n CacheDataLV -L CacheSize VG
+.br
+.B lvconvert --type cache\-pool VG/CacheDataLV
+
+
+.SS Create a new cache LV without an existing origin LV
+
+\&
+
+A cache LV can be created using an existing cache pool without an existing
+origin LV. A new origin LV is created and linked to the cache pool in a
+single step.
+
+.B lvcreate \-\-type cache \-L LargeSize \-n CacheLV
+.RS
+.B \-\-cachepool VG/CachePoolLV VG SlowPVs
+.RE
+
+
+.SS Single step cache pool LV creation
+
+\&
+
+A cache pool LV can be created with a single lvcreate command, rather than
+using lvconvert on existing LVs. This one command creates a cache data
+LV, a cache metadata LV, and combines the two into a cache pool LV.
+
+.B lvcreate \-\-type cache\-pool \-L CacheSize \-n CachePoolLV VG FastPVs
+
+
+.SS Convert existing LVs to cache types
+
+\&
+
+When an existing origin LV is converted to a cache LV, the specified cache
+pool may be a normal LV, rather than a cache pool LV. In this case, lvm
+will first convert the normal LV to a cache pool LV. A pool metadata LV
+may optionally be specified.
+
+.B lvcreate -n OriginLV -L LargeSize VG
+.br
+.B lvcreate -n CacheDataLV -L CacheSize VG
+.br
+.B lvconvert --type cache --cachepool VG/CataDataLV VG/OriginLV
+
+This is equivalent to:
+
+.B lvcreate -n OriginLV -L LargeSize VG
+.br
+.B lvcreate -n CacheDataLV -L CacheSize VG
+.br
+.B lvconvert --type cache-pool VG/CacheDataLV
+.br
+.B lvconvert --type cache --cachepool VG/CachePoolLV VG/OriginLV
+
+
+.SH SEE ALSO
+.BR lvm.conf (5),
+.BR lvchange (8),
+.BR lvcreate (8),
+.BR lvdisplay (8),
+.BR lvextend (8),
+.BR lvremove (8),
+.BR lvrename (8),
+.BR lvresize (8),
+.BR lvs (8),
+.BR vgchange (8),
+.BR vgmerge (8),
+.BR vgreduce (8),
+.BR vgsplit (8)