mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-22 17:35:59 +03:00
131 lines
4.5 KiB
Groff
131 lines
4.5 KiB
Groff
.TH PVMOVE 8 "LVM TOOLS #VERSION#" "Sistina Software UK" \" -*- nroff -*-
|
|
.SH NAME
|
|
pvmove \- move physical extents
|
|
.SH SYNOPSIS
|
|
.B pvmove
|
|
[\-\-abort]
|
|
[\-\-alloc AllocationPolicy]
|
|
[\-b|\-\-background]
|
|
[\-d|\-\-debug] [\-h|\-\-help] [\-i|\-\-interval Seconds]
|
|
[\-\-noudevsync] [\-v|\-\-verbose] [\-n|\-\-name LogicalVolume]
|
|
[SourcePhysicalVolume[:PE[-PE]...] [DestinationPhysicalVolume[:PE[-PE]...]...]]
|
|
.SH DESCRIPTION
|
|
.B pvmove
|
|
allows you to move the allocated physical extents (PEs) on
|
|
.I SourcePhysicalVolume
|
|
to one or more other physical volumes (PVs).
|
|
You can optionally specify a source
|
|
.I LogicalVolume
|
|
in which case only extents used by that LV will be moved to
|
|
free (or specified) extents on
|
|
.IR DestinationPhysicalVolume (s).
|
|
If no
|
|
.I DestinationPhysicalVolume
|
|
is specified, the normal allocation rules for the volume group are used.
|
|
|
|
If \fBpvmove\fP gets interrupted for any reason (e.g. the machine crashes)
|
|
then run \fBpvmove\fP again without any PhysicalVolume arguments to
|
|
restart any moves that were in progress from the last checkpoint.
|
|
Alternatively use \fBpvmove --abort\fP at any time to abort them
|
|
at the last checkpoint.
|
|
|
|
You can run more than one pvmove at once provided they are moving data
|
|
off different SourcePhysicalVolumes, but additional pvmoves will ignore
|
|
any logical volumes already in the process of being changed, so some
|
|
data might not get moved.
|
|
|
|
\fBpvmove\fP works as follows:
|
|
|
|
1. A temporary 'pvmove' logical volume is created to store
|
|
details of all the data movements required.
|
|
|
|
2. Every logical volume in the volume group is searched
|
|
for contiguous data that need moving
|
|
according to the command line arguments.
|
|
For each piece of data found, a new segment is added to the end of the
|
|
pvmove LV.
|
|
This segment takes the form of a temporary mirror to copy the data
|
|
from the original location to a newly-allocated location.
|
|
The original LV is updated to use the new temporary mirror segment
|
|
in the pvmove LV instead of accessing the data directly.
|
|
|
|
3. The volume group metadata is updated on disk.
|
|
|
|
4. The first segment of the pvmove logical volume is activated and starts
|
|
to mirror the first part of the data. Only one segment is mirrored at once
|
|
as this is usually more efficient.
|
|
|
|
5. A daemon repeatedly checks progress at the specified time interval.
|
|
When it detects that the first temporary mirror is in-sync,
|
|
it breaks that mirror so that only the new location for that data gets used
|
|
and writes a checkpoint into the volume group metadata on disk.
|
|
Then it activates the mirror for the next segment of the pvmove LV.
|
|
|
|
6. When there are no more segments left to be mirrored,
|
|
the temporary logical volume is removed and the volume group metadata
|
|
is updated so that the logical volumes reflect the new data locations.
|
|
|
|
Note that this new process cannot support the original LVM1
|
|
type of on-disk metadata. Metadata can be converted using \fBvgconvert\fP(8).
|
|
|
|
.SH OPTIONS
|
|
.TP
|
|
.I \-\-abort
|
|
Abort any moves in progress.
|
|
.TP
|
|
.I \-\-noudevsync
|
|
Disable udev synchronisation. The
|
|
process will not wait for notification from udev.
|
|
It will continue irrespective of any possible udev processing
|
|
in the background. You should only use this if udev is not running
|
|
or has rules that ignore the devices LVM2 creates.
|
|
.TP
|
|
.I \-b, \-\-background
|
|
Run the daemon in the background.
|
|
.TP
|
|
.I \-i, \-\-interval Seconds
|
|
Report progress as a percentage at regular intervals.
|
|
.TP
|
|
.I \-n, \-\-name " \fILogicalVolume\fR"
|
|
Move only the extents belonging to
|
|
.I LogicalVolume
|
|
from
|
|
.I SourcePhysicalVolume
|
|
instead of all allocated extents to the destination physical volume(s).
|
|
|
|
.SH EXAMPLES
|
|
To move all logical extents of any logical volumes on
|
|
.B /dev/sdb1
|
|
to free physical extents elsewhere in the volume group, use:
|
|
.sp
|
|
\ pvmove /dev/sdb1
|
|
.P
|
|
Additionally, the destination device can be specified.
|
|
.sp
|
|
\ pvmove /dev/sdb1 /dev/sdc1
|
|
.P
|
|
It is possible to perform the action on a single logical volume (instead of all
|
|
the logical volumes that might be on the source device), like this:
|
|
.sp
|
|
\ pvmove -n lvol1 /dev/sdb1 /dev/sdc1
|
|
.P
|
|
Rather than moving the contents of the entire device, it is possible to
|
|
move a range of extents.
|
|
.sp
|
|
\ pvmove /dev/sdb1:1000-1999
|
|
.P
|
|
It is possible to move the range of extents to a specific location (as long
|
|
as the location has sufficent free extents) - even on the same device.
|
|
.sp
|
|
\ pvmove /dev/sdb1:1000-1999 /dev/sdc1
|
|
.sp
|
|
\ pvmove /dev/sdb1:1000-1999 /dev/sdb1:0-999
|
|
.P
|
|
A specific logical volume in a range of extents can also be picked out and
|
|
moved.
|
|
.sp
|
|
\ pvmove -n lvol1 /dev/sdb1:1000-1999 /dev/sdc1
|
|
.SH SEE ALSO
|
|
.BR lvm (8),
|
|
.BR vgconvert (8)
|
|
.BR pvs (8) |