mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-22 17:35:59 +03:00
9f60083aff
Support has many limitations and lots of FIXMEs inside, however it makes initial task when user creates a separate LV for thin pool data and thin metadata already usable, so let's enable it for testing. Easiest API: lvconvert --chunksize XX --thinpool data_lv metadata_lv More functionality extensions will follow up. TODO: Code needs some rework since a lot of same code is getting copied.
312 lines
11 KiB
Groff
312 lines
11 KiB
Groff
.TH LVCONVERT 8 "LVM TOOLS #VERSION#" "Red Hat, Inc" \" -*- nroff -*-
|
|
.SH NAME
|
|
lvconvert \- convert a logical volume from linear to mirror or snapshot
|
|
.SH SYNOPSIS
|
|
.B lvconvert
|
|
.BR \-m | \-\-mirrors
|
|
.I Mirrors
|
|
.RB [ \-\-mirrorlog
|
|
.RI { disk | core | mirrored }]
|
|
.RB [ \-\-corelog ]
|
|
.RB [ \-R | \-\-regionsize
|
|
.IR MirrorLogRegionSize ]
|
|
.RB [ \-\-type
|
|
.IR SegmentType ]
|
|
.RB [ \-A | \-\-alloc
|
|
.IR AllocationPolicy ]
|
|
.RB [ \-b | \-\-background ]
|
|
.RB [ \-f | \-\-force ]
|
|
.RB [ \-i | \-\-interval
|
|
.IR Seconds ]
|
|
.RB [ \-h | \-? | \-\-help ]
|
|
.RB [ \-\-stripes
|
|
.I Stripes
|
|
.RB [ \-I | \-\-stripesize
|
|
.IR StripeSize ]]
|
|
.RB [ \-\-noudevsync ]
|
|
.RB [ \-v | \-\-verbose ]
|
|
.RB [ \-y | \-\-yes ]
|
|
.RB [ \-\-version ]
|
|
.IR LogicalVolume [ Path ]
|
|
.RI [ PhysicalVolume [ Path ][ :PE [ -PE ]]...]
|
|
.sp
|
|
.B lvconvert \-\-splitmirrors \fIImages
|
|
.RB [ \-\-name
|
|
.IR SplitLogicalVolumeName ]
|
|
.RB [ \-\-trackchanges ]
|
|
.IR MirrorLogicalVolume [ Path ]
|
|
.RI [ SplittablePhysicalVolume [ Path ][ :PE [ -PE ]]...]
|
|
.sp
|
|
.B lvconvert
|
|
.BR \-s | \-\-snapshot
|
|
.RB [ \-c | \-\-chunksize
|
|
.IR ChunkSize ]
|
|
.RB [ \-h | \-? | \-\-help ]
|
|
.RB [ \-\-noudevsync ]
|
|
.RB [ \-v | \-\-verbose ]
|
|
.RB [ \-Z | \-\-zero
|
|
.RI { y | n }]
|
|
.RB [ \-\-version ]
|
|
.IR OriginalLogicalVolume [ Path ]
|
|
.IR SnapshotLogicalVolume [ Path ]
|
|
.sp
|
|
.B lvconvert \-\-merge
|
|
.RB [ \-b | \-\-background ]
|
|
.RB [ \-i | \-\-interval
|
|
.IR Seconds ]
|
|
.RB [ \-h | \-? | \-\-help ]
|
|
.RB [ \-v | \-\-verbose ]
|
|
.RB [ \-\-version ]
|
|
.IR LogicalVolume [ Path ]...
|
|
.sp
|
|
.B lvconvert \-\-thinpool
|
|
.IR ThinPoolLogicalVolume { Name | Path }
|
|
.RB [ \-c | \-\-chunksize
|
|
.IR ChunkSize ]
|
|
.RB [[ \-\-poolmetadatasize
|
|
.IR MetadataSize [ bBsSkKmMgG ]
|
|
.RI [ PhysicalVolume [ Path ][ :PE [ -PE ]]...]]
|
|
|
|
|
.IR ThinMetadataLogicalVolume { Name | Path }]
|
|
.RB [ \-Z | \-\-zero
|
|
.RI { y | n }]
|
|
.RB [ \-h | \-? | \-\-help ]
|
|
.RB [ \-v | \-\-verbose ]
|
|
.RB [ \-\-version ]
|
|
.sp
|
|
.B lvconvert \-\-repair
|
|
.RB [ \-h | \-? | \-\-help ]
|
|
.RB [ \-v | \-\-verbose ]
|
|
.RB [ \-\-version ]
|
|
.IR LogicalVolume [ Path ]
|
|
.RI [ PhysicalVolume [ Path ]...]
|
|
.sp
|
|
.B lvconvert \-\-replace \fIPhysicalVolume
|
|
.RB [ \-h | \-? | \-\-help ]
|
|
.RB [ \-v | \-\-verbose ]
|
|
.RB [ \-\-version ]
|
|
.IR LogicalVolume [ Path ]
|
|
.RI [ PhysicalVolume [ Path ]...]
|
|
|
|
.SH DESCRIPTION
|
|
lvconvert is used to change the segment type (i.e. linear, mirror, etc) or
|
|
characteristics of a logical volume. For example, it can add or remove the
|
|
redundant images of a logical volume, change the log type of a mirror, or
|
|
designate a logical volume as a snapshot repository.
|
|
.br
|
|
If the conversion requires allocation of physical extents (for
|
|
example, when converting from linear to mirror) and you specify
|
|
one or more PhysicalVolumes (optionally with ranges of physical
|
|
extents), allocation of physical extents will be restricted to
|
|
these physical extents. If the conversion frees physical extents
|
|
(for example, when converting from a mirror to a linear, or reducing
|
|
mirror legs) and you specify one or more PhysicalVolumes,
|
|
the freed extents come first from the specified PhysicalVolumes.
|
|
.SH OPTIONS
|
|
See \fBlvm\fP(8) for common options.
|
|
.br
|
|
Exactly one of
|
|
.BR \-\-splitmirrors ", " \-\-mirrors ", " \-\-repair ", " \-\-snapshot
|
|
or \fB\-\-merge\fP arguments is required.
|
|
.TP
|
|
.BR \-m ", " \-\-mirrors " " \fIMirrors
|
|
Specifies the degree of the mirror you wish to create.
|
|
For example, "\fB-m 1\fP" would convert the original logical
|
|
volume to a mirror volume with 2-sides; that is, a
|
|
linear volume plus one copy.
|
|
.TP
|
|
.IR \fB\-\-mirrorlog " {" disk | core | mirrored }
|
|
Specifies the type of log to use.
|
|
The default is disk, which is persistent and requires
|
|
a small amount of storage space, usually on a separate device
|
|
from the data being mirrored.
|
|
Core may be useful for short-lived mirrors: It means the mirror is
|
|
regenerated by copying the data from the first device again every
|
|
time the device is activated - perhaps, for example, after every reboot.
|
|
Using "mirrored" will create a persistent log that is itself mirrored.
|
|
.TP
|
|
.B \-\-corelog
|
|
The optional argument \fB--corelog\fP is the same as specifying
|
|
\fB--mirrorlog core\fP.
|
|
.TP
|
|
.BR \-R ", " \-\-regionsize " " \fIMirrorLogRegionSize
|
|
A mirror is divided into regions of this size (in MB), and the mirror log
|
|
uses this granularity to track which regions are in sync.
|
|
.TP
|
|
.B \-\-type \fISegmentType
|
|
Used to convert a logical volume to another segment type or to explicitly state
|
|
the desired RAID1 segment type (\fImirror\fP or \fIraid1\fP) when converting
|
|
a linear logical volume to a mirror with the \fB-m\fP argument.
|
|
.TP
|
|
.BR \-b ", " \-\-background
|
|
Run the daemon in the background.
|
|
.TP
|
|
.BR \-i ", " \-\-interval " " \fISeconds
|
|
Report progress as a percentage at regular intervals.
|
|
.TP
|
|
.B \-\-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
|
|
.B \-\-splitmirrors \fIImages
|
|
The number of redundant Images of a mirror to be split off and used
|
|
to form a new logical volume. A name must be supplied for the
|
|
newly-split-off logical volume using the \fB\-\-name\fP argument, unless
|
|
the \fB\-\-trackchanges\fP argument is given.
|
|
.TP
|
|
.B \-n \fIName
|
|
The name to apply to a logical volume which has been split off from
|
|
a mirror logical volume.
|
|
.TP
|
|
.B \-\-trackchanges
|
|
Used with \fB\-\-splitmirrors\fP on a raid1 device, this tracks changes so
|
|
that the read-only detached image can be merged efficiently back into
|
|
the mirror later. Only the regions of the detatched device where
|
|
the data changed get resynchronized.
|
|
|
|
Please note that this feature is only supported with the new md-based mirror
|
|
implementation and not with the original device-mapper mirror implementation.
|
|
.TP
|
|
.B \-s, \-\-snapshot
|
|
Create a snapshot from existing logical volume using another
|
|
existing logical volume as its origin.
|
|
.TP
|
|
.BR \-c ", " \-\-chunksize " " \fIChunkSize
|
|
Power of 2 chunk size for the snapshot logical volume between 4KiB and 512KiB.
|
|
.TP
|
|
.BR \-Z ", " \-\-zero " {" \fIy | \fIn }
|
|
Controls zeroing of the first KB of data in the snapshot.
|
|
If the volume is read-only the snapshot will not be zeroed.
|
|
.TP
|
|
.B \-\-merge
|
|
Merges a snapshot into its origin volume or merges a raid1 image that has
|
|
been split from its mirror with \fB\-\-trackchanges\fP back into its mirror.
|
|
|
|
To check if your kernel supports the snapshot merge feature, look
|
|
for 'snapshot-merge' in the output
|
|
of \fBdmsetup targets\fP. If both the origin and snapshot volume are not
|
|
open the merge will start immediately. Otherwise, the merge will start
|
|
the first time either the origin or snapshot are activated and both are closed.
|
|
Merging a snapshot into an origin that cannot be closed, for example a root
|
|
filesystem, is deferred until the next time the origin volume is activated.
|
|
When merging starts, the resulting logical volume will have the origin's name,
|
|
minor number and UUID. While the merge is in progress, reads or writes to the
|
|
origin appear as they were directed to the snapshot being merged. When the
|
|
merge finishes, the merged snapshot is removed. Multiple snapshots may
|
|
be specified on the commandline or a @tag may be used to specify
|
|
multiple snapshots be merged to their respective origin.
|
|
.TP
|
|
.B \-\-repair
|
|
Repair a mirror after suffering a disk failure. The mirror will be brought back
|
|
into a consistent state. By default, the original number of mirrors will be
|
|
restored if possible. Specify \fB\-y\fP on the command line to skip
|
|
the prompts. Use \fB\-f\fP if you do not want any replacement.
|
|
Additionally, you may use \fB\-\-use-policies\fP to use the device
|
|
replacement policy specified in \fBlvm.conf\fP(5),
|
|
viz. activation/mirror_log_fault_policy or
|
|
activation/mirror_device_fault_policy.
|
|
.TP
|
|
.B \-\-replace \fIPhysicalVolume
|
|
Remove the specified device (\fIPhysicalVolume\fP) and replace it with one
|
|
that is available in the volume group or from the specific list provided.
|
|
This option is only available to RAID segment types
|
|
(e.g. "raid1", "raid5", etc).
|
|
|
|
.SH Examples
|
|
Converts the linear logical volume "vg00/lvol1" to a two-way mirror
|
|
logical volume:
|
|
.sp
|
|
.B lvconvert \-m1 vg00/lvol1
|
|
|
|
Converts the linear logical volume "vg00/lvol1" to a two-way RAID1
|
|
logical volume:
|
|
.sp
|
|
.B lvconvert \-\-type raid1 \-m1 vg00/lvol1
|
|
|
|
Converts a mirror with a disk log to a mirror with an in-memory log:
|
|
.sp
|
|
.B lvconvert \-\-mirrorlog core vg00/lvol1
|
|
|
|
Converts a mirror with an in-memory log to a mirror with a disk log:
|
|
.sp
|
|
.B lvconvert \-\-mirrorlog disk vg00/lvol1
|
|
|
|
Converts a mirror logical volume to a linear logical volume:
|
|
.sp
|
|
.B lvconvert \-m0 vg00/lvol1
|
|
|
|
Converts a mirror logical volume to a RAID1 logical volume with the same
|
|
number of images:
|
|
.sp
|
|
.B lvconvert \-\-type raid1 vg00/mirror_lv
|
|
|
|
Converts logical volume "vg00/lvol2" to snapshot of original volume
|
|
"vg00/lvol1":
|
|
.sp
|
|
.B lvconvert \-s vg00/lvol1 vg00/lvol2
|
|
|
|
Converts linear logical volume "vg00/lvol1" to a two-way mirror,
|
|
using physical extents /dev/sda:0-15 and /dev/sdb:0-15 for allocation
|
|
of new extents:
|
|
.sp
|
|
.B lvconvert \-m1 vg00/lvol1 /dev/sda:0-15 /dev/sdb:0-15
|
|
|
|
Converts mirror logical volume "vg00/lvmirror1" to linear, freeing physical
|
|
extents from /dev/sda:
|
|
.sp
|
|
.B lvconvert \-m0 vg00/lvmirror1 /dev/sda
|
|
|
|
Merges "vg00/lvol1_snap" into its origin:
|
|
.sp
|
|
.B lvconvert \-\-merge vg00/lvol1_snap
|
|
|
|
If "vg00/lvol1", "vg00/lvol2" and "vg00/lvol3" are all tagged with "some_tag"
|
|
each snapshot logical volume will be merged serially,
|
|
e.g.: "vg00/lvol1", then "vg00/lvol2", then "vg00/lvol3".
|
|
If \-\-background were used it would start
|
|
all snapshot logical volume merges in parallel.
|
|
.sp
|
|
.B lvconvert \-\-merge @some_tag
|
|
|
|
Extracts one image from the mirror, making it a new logical volume named
|
|
"lv_split". The mirror the image is extracted from is reduced accordingly.
|
|
If it was a 2-way mirror (created with '-m 1'), then the resulting original
|
|
volume will be linear.
|
|
.sp
|
|
.B lvconvert \-\-splitmirrors 1 \-\-name lv_split vg00/lvmirror1
|
|
|
|
A mirrored logical volume created with \-\-type raid1 can use the
|
|
\-\-trackchanges argument when splitting off an image.
|
|
Detach one image from the mirrored logical volume lv_raid1 as a separate
|
|
read-only device and track the changes made to the mirror while it is detached.
|
|
The split-off device has a name of the form lv_raid1_rimage_N, where N is
|
|
a number, and it cannot be renamed.
|
|
.sp
|
|
.B lvconvert \-\-splitmirrors 1 \-\-trackchanges vg00/lv_raid1
|
|
|
|
Merge an image that was detached temporarily from its mirror with
|
|
the \-\-trackchanges argument back into its original mirror and
|
|
bring its contents back up-to-date.
|
|
.sp
|
|
.B lvconvert \-\-merge vg00/lv_raid1_rimage_1
|
|
|
|
Replaces the physical volume "/dev/sdb1" in the RAID1 logical volume "my_raid1"
|
|
with the specified physical volume "/dev/sdf1". Had the argument "/dev/sdf1"
|
|
been left out, lvconvert would attempt to find a suitable device from those
|
|
available in the volume group.
|
|
.sp
|
|
.B lvconvert \-\-replace /dev/sdb1 vg00/my_raid1 /dev/sdf1
|
|
|
|
.SH SEE ALSO
|
|
.BR lvm (8),
|
|
.BR vgcreate (8),
|
|
.BR lvremove (8),
|
|
.BR lvrename (8),
|
|
.BR lvextend (8),
|
|
.BR lvreduce (8),
|
|
.BR lvdisplay (8),
|
|
.BR lvscan (8)
|