Manpage of PVMOVE


Section: Maintenance Commands (8)
Updated: LVM TOOLS
Return to Main Contents


pvmove - move physical extents  


pvmove [-A|--autobackup{y|n}] [-d|--debug] [-f|--force] [-h|--help] [-i|--ignore_read_errors] [-t|--test] [-v[v]|--verbose [--verbose]] [{-n|--name}LogicalVolume[:LogicalExtent[-LE]...]] SourcePhysicalVolume[:PhysicalExtent[-PE]...] [DestinationPhysicalVolume[:PE[-PE]...]...]  


pvmove allows you to move the allocated physical extents (PEs) on SourcePhysicalVolume to one or more other physical volumes (PVs). You can optionally select a subset of the allocated physical extents on SourcePhysicalVolume by giving colon-separated lists and/or ranges of physical extents, or by specifying the source LogicalVolume optionally with colon-separated lists and/or ranges of logical extents. In this case only these extents are moved to free (or specified) extents on DestinationPhysicalVolume(s). If no DestinationPhysicalVolume is specifed, the normal allocation rules for the volume group are used.

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.  


-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.
-i, --ignore_read_errors
Ignore read errors while moving data. Usefull in case data is moved away from a broken or unaccessable disk (area).
-n, --name LogicalVolume[:LogicalExtent[-LogicalExtent]...]
Move only the extents belonging to LogicalVolume from SourcePhysicalVolume instead of all allocated extents to the destination physical volume(s). A optional colon separated list or range of logical extents may be given to limit the extents moved.
-t , --test
Do a test run without performing any real changes.
-v , --verbose
Gives verbose runtime information about pvmove's activities. If specified twice, sector and device mapping information is also given.


To move all logical extents of any logical volumes on /dev/hda4 to free physical extents elsewhere in the volume group, giving verbose runtime information, use:

pvmove -v /dev/hda4

To move three logical extents (numbers 3, 5 and 11) of logical volume my_lv to free ones on /dev/hdb3 use:

pvmove -n my_lv:3:5:11 /dev/sdb6 /dev/hdb3

To move four logical extents (numbers 1, 25, 26, and 27) of logical volume my_lv on /dev/sdb6 to four physical extents (numbers 46, 47, 48, and 49) on /dev/hdb3 use:

pvmove -n my_lv:1:25-27 /dev/sdb6 /dev/hdb3:46-49  


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 refuses 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.  


If this variable is set to "no" then the automatic backup of VG metadata is turned off.
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).



lvm(8), lvchange(8), lvcreate(8), lvdisplay(8), pvdisplay(8)  


Heinz Mauelshagen <>




This document was created by man2html, using the manual pages.
Time: 22:17:09 GMT, March 03, 2024