PVMOVE(8)

NAME
pvmove - move physical extents

SYNOPSIS
pvmove [-A/--autobackup y/n] [-d/--debug] [-f/--force] [-h/-?/--help] [-n/--name LogicalVolumeName/-Path[:LogicalExtent[-LogicalExtent]...]] [-t/--test] [-v[v]/--verbose [--verbose]] SourcePhysicalVolumePath[:PhysicalExtent[-PhysicalExtent]...] [DestinationPhysicalVolumePath[:PhysicalExtent[-PhysicalExtent]]...]

DESCRIPTION
pvmove allows you to move the logical/physical extents allocated on one logical/physical volume to one or more other physical volumes. You can select a logical/physical volume and optionally some of its logical/physical extents for the move by giving a list, a range or a combination of both. In that case only the physical extents corresponding to its logical extents on the SourcePhysicalVolumePath are moved to free (given) ones on the destination physical volume. You can move physical extents in use but make sure you have an current backup in case of a system crash while moving!!! pvmove may be safely interrupted by SIGINT while moving "next free" allocated logical volumes. Striped logical volume moves can't be interrupted by SIGINT because that may cause stripe inconsistencies.

  OPTIONS

-A, --autobackup y/n
    Controls automatic backup of VG metadata after the move ( see vgcfgbackup(8) ). Default is yes.

-d, --debug
    Enables additional debugging output (if compiled with DEBUG).

-f, --force
    Forces physical extent move without confirmation.

-h, -?, --help
    Print a usage message on standard output and exit successfully.

-n, --name LogicalVolumePath[:LogicalExtent...]
    Select a logical volume to only move its extents located on the source physical volume to the destination physical volume(s). A list of colon seperated logical extents may be given to move only those required.

-t, --test
    Do a test run without performing any real changes.

-v, --verbose
    Gives verbose runtime information about pvmove's activities.

-vv, --verbose --verbose
    Gives sector and device mapping information in addition to -v.

Examples
"pvmove -v /dev/hda4 /dev/sda2" move all logical extents of any logical volumes on /dev/hda4 to free physical extents on /dev/sda4 giving verbose runtime information. "pvmove -n my_lv:3:5:11 /dev/sdb6 /dev/hdb3" moves three logical extents (number 3, 5 and 11) of logical volume my_lv on /dev/sdb6 to free ones on /dev/hdb3. "pvmove -n my_lv:1:6:25-27 /dev/sdb6 /dev/hdb3:46:47-48" moves four logical extents of logical volume my_lv on /dev/sdb6 to four physical extents with numbers 3, 46, 47 and 48 on /dev/hdb3.

DIAGNOSTICS
pvmove returns an exit code of 0 for success and > 0 for error:
1  no source physical volume on command line
2  invalid extent numbers on command line
2  invalid source physical volume name
4  error reading physical volume
5  source physical volume is inconsistent
6  volume group doesn't exist
7  error reading VGDA
8  volume group is inconsistent
9  error getting index of physical volume
10 no logical volumes on source physical volume
12 invalid logical volume name
13 error getting logical volume number in VGDA
14 logical volume not on source physical volume
15 malloc() error
16 invalid physical volume name
17 physical volume doesn't belong to this volume group
18 more than one physical volume with destination physical extents given
19 error getting index of logical volume from VGDA
20 invalid logical extent given
21 invalid physical extent given
22 destination physical index in use
23 error moving physical extent(s)
95 driver/module not in kernel
96 invalid I/O protocol version
97 error locking logical volume manager
98 invalid lvmtab (run vgscan(8))
99 invalid command line
If pvmove doesn't want to move physical extents then check the logical volume attributes for conflicts. A striped logical volume can't be moved if there isn't enough space on any one of the destination physical volumes which DON'T contain a stripe of that logical volume. A stripe can't be partially moved. A contiguous logical volume can't be moved if there aren't enough contiguous free physical extents on the destination physical volumes.

ENVIRONMENT VARIABLES

LVM_AUTOBACKUP
    If this variable is set to "no" then the automatic backup of VG metadata is turned off.

LVM_VG_MAX_BACKUPS
    This variable determines the backup history depth of kept VGDA copy files in /etc/lvmconf. It can be set to a positive number between 0 and 999. The higher this number is, the more changes you can restore using vgcfgrestore(8).

See also
lvm(8), lvcreate(8), lvdisplay(8), pvdisplay(8)

AUTHOR
Heinz Mauelshagen <Linux-LVM@Sistina.com>