1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00
lvm2/device_mapper
David Teigland cac4a9743a Allow dm-cache cache device to be standard LV
If a single, standard LV is specified as the cache, use
it directly instead of converting it into a cache-pool
object with two separate LVs (for data and metadata).

With a single LV as the cache, lvm will use blocks at the
beginning for metadata, and the rest for data.  Separate
dm linear devices are set up to point at the metadata and
data areas of the LV.  These dm devs are given to the
dm-cache target to use.

The single LV cache cannot be resized without recreating it.

If the --poolmetadata option is used to specify an LV for
metadata, then a cache pool will be created (with separate
LVs for data and metadata.)

Usage:

$ lvcreate -n main -L 128M vg /dev/loop0

$ lvcreate -n fast -L 64M vg /dev/loop1

$ lvs -a vg
  LV   VG Attr       LSize   Type   Devices
  main vg -wi-a----- 128.00m linear /dev/loop0(0)
  fast vg -wi-a-----  64.00m linear /dev/loop1(0)

$ lvconvert --type cache --cachepool fast vg/main

$ lvs -a vg
  LV           VG Attr       LSize   Origin       Pool  Type   Devices
  [fast]       vg Cwi---C---  64.00m                     linear /dev/loop1(0)
  main         vg Cwi---C--- 128.00m [main_corig] [fast] cache  main_corig(0)
  [main_corig] vg owi---C--- 128.00m                     linear /dev/loop0(0)

$ lvchange -ay vg/main

$ dmsetup ls
vg-fast_cdata   (253:4)
vg-fast_cmeta   (253:5)
vg-main_corig   (253:6)
vg-main (253:24)
vg-fast (253:3)

$ dmsetup table
vg-fast_cdata: 0 98304 linear 253:3 32768
vg-fast_cmeta: 0 32768 linear 253:3 0
vg-main_corig: 0 262144 linear 7:0 2048
vg-main: 0 262144 cache 253:5 253:4 253:6 128 2 metadata2 writethrough mq 0
vg-fast: 0 131072 linear 7:1 2048

$ lvchange -an vg/min

$ lvconvert --splitcache vg/main

$ lvs -a vg
  LV   VG Attr       LSize   Type   Devices
  fast vg -wi-------  64.00m linear /dev/loop1(0)
  main vg -wi------- 128.00m linear /dev/loop0(0)
2018-11-06 13:44:54 -06:00
..
datastruct device_mapper: move hash.[hc] to base/data-struct 2018-06-08 13:54:19 +01:00
ioctl cleanup: move cast to det_t into MKDEV macro 2018-11-05 17:25:11 +01:00
misc cleanup: move cast to det_t into MKDEV macro 2018-11-05 17:25:11 +01:00
mm device_mapper: remove dbg_malloc. 2018-06-08 13:40:53 +01:00
regex build: get separate builddir working again 2018-06-04 13:22:14 +01:00
vdo cov: ignore error of vsnprintf 2018-10-15 17:49:44 +02:00
all.h Allow dm-cache cache device to be standard LV 2018-11-06 13:44:54 -06:00
libdm-common.c cleanup: move cast to det_t into MKDEV macro 2018-11-05 17:25:11 +01:00
libdm-common.h device_mapper: rename libdevmapper.h -> all.h 2018-06-08 12:31:45 +01:00
libdm-config.c device_mapper: remove dbg_malloc. 2018-06-08 13:40:53 +01:00
libdm-deptree.c Allow dm-cache cache device to be standard LV 2018-11-06 13:44:54 -06:00
libdm-file.c cov: mark warning as expected one 2018-11-03 16:10:32 +01:00
libdm-report.c cov: ensure vars are set 2018-10-15 17:49:44 +02:00
libdm-string.c device_mapper: remove dbg_malloc. 2018-06-08 13:40:53 +01:00
libdm-targets.c device-mapper: Fork libdm internally. 2018-05-16 13:00:50 +01:00
libdm-timestamp.c device_mapper: remove dbg_malloc. 2018-06-08 13:40:53 +01:00
Makefile device_mapper: basic support for vdo dm target 2018-07-09 15:28:35 +02:00