1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-22 17:35:59 +03:00
lvm2/tools
Jonathan Brassow c59167ec13 pvmove: Add support for RAID, mirror, and thin
This patch allows pvmove to operate on RAID, mirror and thin LVs.
The key component is the ability to avoid moving a RAID or mirror
sub-LV onto a PV that already has another RAID sub-LV on it.
(e.g. Avoid placing both images of a RAID1 LV on the same PV.)

Top-level LVs are processed to determine which PVs to avoid for
the sake of redundancy, while bottom-level LVs are processed
to determine which segments/extents to move.

This approach does have some drawbacks.  By eliminating whole PVs
from the allocation list, we might miss the opportunity to perform
pvmove in some senarios.  For example, if we have 3 devices and
a linear uses half of the first, a RAID1 uses half of the first and
half of the second, and a linear uses half of the third (FIGURE 1);
we should be able to pvmove the first device (FIGURE 2).
	FIGURE 1:
        [ linear ] [ -RAID- ] [ linear ]
        [ -RAID- ] [        ] [        ]

	FIGURE 2:
        [  moved ] [ -RAID- ] [ linear ]
        [  moved ] [ linear ] [ -RAID- ]
However, the approach we are using would eliminate the second
device from consideration and would leave us with too little space
for allocation.  In these situations, the user does have the ability
to specify LVs and move them one at a time.
2013-08-23 08:57:16 -05:00
..
.exported_symbols generate liblvm2cmd exported symbols too 2010-06-25 18:23:10 +00:00
.gitignore More .gitignore files for an in-source-tree build. 2012-06-08 16:34:43 +01:00
args.h commandline: add prefix aliases for raid options 2013-07-19 19:24:54 +01:00
cmdnames.h Fix inconsistent licence notices: executables are GPLv2; libraries LGPLv2.1. 2007-08-20 20:55:30 +00:00
commands.h cmdline: support ARG_GROUPABLE in merge_synonym 2013-07-19 20:37:43 +01:00
dmsetup.c dmsetup: display any message output from kernel 2013-08-16 15:25:39 +01:00
dumpconfig.c dumpconfig: also mention profilable type if giving hint about known types 2013-08-19 08:32:03 +02:00
errors.h lvresize: separate validation from action 2013-07-06 03:28:21 +01:00
formats.c Use __attribute__ consistently throughout. 2010-07-09 15:34:40 +00:00
lvchange.c RAID: Fix bug making lvchange unable to change recovery rate for RAID 2013-08-12 12:43:47 -05:00
lvconvert.c thin: thin pool can't be external origin 2013-08-09 23:04:30 +02:00
lvcreate.c thin: apply VG profile if creating a new thin pool 2013-08-06 11:42:40 +02:00
lvdisplay.c Rework the toollib interface (process_each_*) on top of new vg_read. 2009-07-01 17:00:50 +00:00
lvextend.c Some whitespace tidy-ups. 2008-01-30 14:00:02 +00:00
lvm2cmd-static.c Fix inconsistent licence notices: executables are GPLv2; libraries LGPLv2.1. 2007-08-20 20:55:30 +00:00
lvm2cmd.c Use __attribute__ consistently throughout. 2010-07-09 15:34:40 +00:00
lvm2cmd.h lvresize: separate validation from action 2013-07-06 03:28:21 +01:00
lvm2cmdline.h Support repetition of --addtag and --deltag arguments. 2010-11-11 17:29:05 +00:00
lvm-static.c Use __attribute__ consistently throughout. 2010-07-09 15:34:40 +00:00
lvm.c config: add profile arg to find_config_tree_int 2013-07-02 15:19:09 +02:00
lvmchange.c Use __attribute__ consistently throughout. 2010-07-09 15:34:40 +00:00
lvmcmdlib.c cleanup: drop unneeded included header files 2012-08-23 14:37:20 +02:00
lvmcmdline.c cmdline: support ARG_GROUPABLE in merge_synonym 2013-07-19 20:37:43 +01:00
lvmdiskscan.c Few more close and dev_close trace 2012-03-01 21:12:37 +00:00
lvreduce.c Some whitespace tidy-ups. 2008-01-30 14:00:02 +00:00
lvremove.c cleanup: introduce return_ECMD_FAILED macro 2013-07-01 23:10:33 +02:00
lvrename.c cleanup: stack usage 2013-07-01 23:11:14 +02:00
lvresize.c lvresize: separate validation from action 2013-07-06 03:28:21 +01:00
lvscan.c config: add silent mode 2012-08-25 20:35:48 +01:00
Makefile.in lvmetad: lvm depends on libdaemonclient.a 2013-01-04 23:10:38 +00:00
polldaemon.c config: add profile arg to find_config_tree_int 2013-07-02 15:19:09 +02:00
polldaemon.h Start using 64-bit status flags - most of the code already handles them. 2011-09-06 18:49:31 +00:00
pvchange.c locking: Make it possible to pass down an LV to activation code. 2013-06-10 17:26:38 +02:00
pvck.c Move the core of the lib/config/config.c functionality into libdevmapper, 2011-08-30 14:55:15 +00:00
pvcreate.c tools: remove metadata-exported.h 2013-07-09 03:07:55 +01:00
pvdisplay.c cleanup: uint64_t casts 2012-08-23 14:37:21 +02:00
pvmove.c pvmove: Add support for RAID, mirror, and thin 2013-08-23 08:57:16 -05:00
pvremove.c pvremove: stack trace 2013-07-08 14:01:41 +02:00
pvresize.c tools: remove metadata-exported.h 2013-07-09 03:07:55 +01:00
pvscan.c autoactivation: refresh existing VG before autoactivation 2013-08-14 14:04:58 +02:00
reporter.c report: remove LV_CREATE_PARAMS report type 2013-07-09 02:06:29 +01:00
segtypes.c Use __attribute__ consistently throughout. 2010-07-09 15:34:40 +00:00
stub.h Use __attribute__ consistently throughout. 2010-07-09 15:34:40 +00:00
toollib.c thin: chunk_size check already part of get_profilable_pool_params fn 2013-08-06 11:46:48 +02:00
toollib.h thin: move alloc_pool_metadata 2013-07-04 13:33:41 +02:00
tools.h filters: check for mpath before opening devs 2013-08-13 23:26:58 +01:00
vgcfgbackup.c cleanup: stack usage 2013-07-01 23:11:14 +02:00
vgcfgrestore.c cleanup: introduce return_ECMD_FAILED macro 2013-07-01 23:10:33 +02:00
vgchange.c vgchange: require confirmation with -c and no VGs 2013-08-13 18:20:11 +01:00
vgck.c vgck: Fix #894136, notice on-disk corruption in spite of lvmetad. 2013-08-13 23:25:49 +02:00
vgconvert.c config: add profile arg to find_config_tree_int 2013-07-02 15:19:09 +02:00
vgcreate.c metadata: add support for storing profile name in metadata (during vgcreate/lvcreate) 2013-07-02 15:19:09 +02:00
vgdisplay.c Use __attribute__ consistently throughout. 2010-07-09 15:34:40 +00:00
vgexport.c config: add silent mode 2012-08-25 20:35:48 +01:00
vgextend.c cleanup: introduce return_ECMD_FAILED macro 2013-07-01 23:10:33 +02:00
vgimport.c cleanup: comments and a message 2013-07-24 22:10:37 +01:00
vgmerge.c thin: vgsplit and vgmerge spare support 2013-07-18 18:22:44 +02:00
vgmknodes.c cleanup: introduce return_ECMD_FAILED macro 2013-07-01 23:10:33 +02:00
vgreduce.c locking: Make it possible to pass down an LV to activation code. 2013-06-10 17:26:38 +02:00
vgremove.c cleanup: introduce return_ECMD_FAILED macro 2013-07-01 23:10:33 +02:00
vgrename.c cleanup: introduce return_ECMD_FAILED macro 2013-07-01 23:10:33 +02:00
vgscan.c locking: Make it possible to pass down an LV to activation code. 2013-06-10 17:26:38 +02:00
vgsplit.c thin: vgsplit and vgmerge spare support 2013-07-18 18:22:44 +02:00