.TH LVCHANGE 8 "LVM TOOLS #VERSION#" "Sistina Software UK" \" -*- nroff -*-
.SH NAME
lvchange \(em change attributes of a logical volume
.SH SYNOPSIS
.B lvchange
.RB [ \-\-addtag
.IR Tag ]
.RB [ \-A | \-\-autobackup
.RI { y | n }]
.RB [ \-a | \-\-activate
.RI [ a | e | s | l ]{ y | n }]
.RB [ \-\-activationmode
.RI { complete | degraded | partial }]
.RB [ \-k | \-\-setactivationskip
.RI { y | n }]
.RB [ \-K | \-\-ignoreactivationskip ]
.RB [ \-\-alloc
.IR AllocationPolicy ]
.RB [ \-\-cachepolicy
.IR policy ]
.RB [ \-\-cachesettings
.IR key=value ]
.RB [ \-\-commandprofile
.IR ProfileName ]
.RB [ \-C | \-\-contiguous
.RI { y | n }]
.RB [ \-d | \-\-debug ]
.RB [ \-\-degraded ]
.RB [ \-\-deltag
.IR Tag ]
.RB [ \-\-detachprofile ]
.RB [ \-\-discards
.RI { ignore | nopassdown | passdown }]
.RB [ \-\-errorwhenfull
.RI { y | n }]
.RB [ \-\-resync ]
.RB [ \-h | \-? | \-\-help ]
.RB [ \-\-ignorelockingfailure ]
.RB [ \-\-ignoremonitoring ]
.RB [ \-\-ignoreskippedcluster ]
.RB [ \-\-monitor
.RI { y | n }]
.RB [ \-\-poll
.RI { y | n }]
.RB [ \-\-[raid]maxrecoveryrate
.IR Rate ]
.RB [ \-\-[raid]minrecoveryrate
.IR Rate ]
.RB [ \-\-[raid]syncaction
.RI { check | repair }]
.RB [ \-\-[raid]writebehind
.IR IOCount ]
.RB [ \-\-[raid]writemostly
.IR PhysicalVolume [ : { y | n | t }]]
.RB [ \-\-sysinit ]
.RB [ \-\-noudevsync ]
.RB [ \-\-metadataprofile
.IR ProfileName ]
.RB [ \-M | \-\-persistent
.RI { y | n }
.RB [ \-\-minor
.IR minor ]
.RB [ \-\-major
.IR major ]]
.RB [ \-P | \-\-partial ]
.RB [ \-p | \-\-permission
.RI { r | rw }]
.RB [ \-r | \-\-readahead
.RI { ReadAheadSectors | auto | none }]
.RB [ \-\-refresh ]
.RB [ \-S | \-\-select
.IR Selection ]
.RB [ \-t | \-\-test ]
.RB [ \-v | \-\-verbose ]
.RB [ \-Z | \-\-zero
.RI { y | n }]
.RI [ LogicalVolumePath ...]
.SH DESCRIPTION
lvchange allows you to change the attributes of a logical volume
including making them known to the kernel ready for use.
.SH OPTIONS
See \fBlvm\fP(8) for common options.
.TP
.BR \-a ", " \-\-activate " [" \fIa | \fIe | \fIs | \fIl ]{ \fIy | \fIn }
Controls the availability of the logical volumes for use.
Communicates with the kernel device-mapper driver via
libdevmapper to activate (\-ay) or deactivate (\-an) the
logical volumes.
.IP
Activation of a logical volume creates a symbolic link
/dev/VolumeGroupName/LogicalVolumeName pointing to the device node.
This link is removed on deactivation.
All software and scripts should access the device through
this symbolic link and present this as the name of the device.
The location and name of the underlying device node may depend on
the distribution and configuration (e.g. udev) and might change
from release to release.
.IP
If autoactivation option is used (\-aay),
the logical volume is activated only if it matches an item in
the activation/auto_activation_volume_list set in lvm.conf.
If this list is not set, then all volumes are considered for
activation. The \-aay option should be also used during system
boot so it's possible to select which volumes to activate using
the activation/auto_activation_volume_list setting.
.IP
In a clustered VG, clvmd is used for activation, and the
following options are possible:

With \-aey, clvmd activates the LV in exclusive mode
(with an exclusive lock), allowing a single node to activate the LV.

With \-asy, clvmd activates the LV in shared mode
(with a shared lock), allowing multiple nodes to activate the LV concurrently.
If the LV type prohibits shared access, such as an LV with a snapshot,
the 's' option is ignored and an exclusive lock is used.

With \-ay (no mode specified), clvmd activates the LV in shared mode
if the LV type allows concurrent access, such as a linear LV.
Otherwise, clvmd activates the LV in exclusive mode.

With \-aey, \-asy, and \-ay, clvmd attempts to activate the LV
on all nodes.  If exclusive mode is used, then only one of the
nodes will be successful.

With \-an, clvmd attempts to deactivate the LV on all nodes.

With \-aly, clvmd activates the LV only on the local node, and \-aln
deactivates only on the local node.  If the LV type allows concurrent
access, then shared mode is used, otherwise exclusive.

LVs with snapshots are always activated exclusively because they can only
be used on one node at once.

For local VGs, \-ay, \-aey, and \-asy are all equivalent.

.TP
.BR \-\-activationmode " {" \fIcomplete | \fIdegraded | \fIpartial }
The activation mode determines whether logical volumes are allowed to
activate when there are physical volumes missing (e.g. due to a device
failure).  \fIcomplete\fP is the most restrictive; allowing only those
logical volumes to be activated that are not affected by the missing
PVs.  \fIdegraded\fP allows RAID logical volumes to be activated even if
they have PVs missing.  (Note that the "\fImirror\fP" segment type is not
considered a RAID logical volume.  The "\fIraid1\fP" segment type should
be used instead.)  Finally, \fIpartial\fP allows any logical volume to
be activated even if portions are missing due to a missing or failed
PV.  This last option should only be used when performing recovery or
repair operations.  \fIdegraded\fP is the default mode.  To change it, modify
.B activation_mode
in
.BR lvm.conf (5).
.TP
.BR \-k ", " \-\-setactivationskip " {" \fIy | \fIn }
Controls  whether Logical Volumes are persistently flagged to be
skipped during activation. By default, thin snapshot volumes are
flagged for activation skip.  To activate such volumes,
an extra \fB\-K/\-\-ignoreactivationskip\fP option must be used.
The flag is not applied during deactivation. To see whether
the flag is attached, use \fBlvs\fP command where the state
of the flag is reported within \fBlv_attr\fP bits.
.TP
.BR \-K ", " \-\-ignoreactivationskip
Ignore the flag to skip Logical Volumes during activation.
.TP
.BR  \-\-cachepolicy " " policy ", " \-\-cachesettings " " key=value
Only applicable to cached LVs; see also \fBlvmcache(7)\fP. Sets
the cache policy and its associated tunable settings. In most use-cases,
default values should be adequate.
.TP
.BR \-C ", " \-\-contiguous " {" \fIy | \fIn }
Tries to set or reset the contiguous allocation policy for
logical volumes. It's only possible to change a non-contiguous
logical volume's allocation policy to contiguous, if all of the
allocated physical extents are already contiguous.
.TP
.BR \-\-detachprofile
Detach any metadata configuration profiles attached to given
Logical Volumes. See \fBlvm.conf\fP(5) for more information
about \fBmetadata profiles\fP.
.TP
.BR \-\-discards " {" \fIignore | \fInopassdown | \fIpassdown }
Set this to \fIignore\fP to ignore any discards received by a
thin pool Logical Volume.  Set to \fInopassdown\fP to process such
discards within the thin pool itself and allow the no-longer-needed
extents to be overwritten by new data.  Set to \fIpassdown\fP (the
default) to process them both within the thin pool itself and to
pass them down the underlying device.
.TP
.BR \-\-errorwhenfull " {" \fIy | \fIn }
Sets thin pool behavior when data space is exhaused. See
.BR lvcreate (8)
for information.
.TP
.B \-\-resync
Forces the complete resynchronization of a mirror.  In normal
circumstances you should not need this option because synchronization
happens automatically.  Data is read from the primary mirror device
and copied to the others, so this can take a considerable amount of
time - and during this time you are without a complete redundant copy
of your data.
.TP
.B \-\-metadataprofile " " \fIProfileName
Uses and attaches ProfileName configuration profile to the logical
volume metadata. Whenever the logical volume is processed next time,
the profile is automatically applied. If the volume group has another
profile attached, the logical volume profile is preferred.
See \fBlvm.conf\fP(5) for more information about \fBmetadata profiles\fP.
.TP
.B \-\-minor \fIminor
Set the minor number.
.TP
.B \-\-major \fImajor
Sets the major number. This option is supported only on older systems
(kernel version 2.4) and is ignored on modern Linux systems where major
numbers are dynamically assigned.
.TP
.BR \-\-monitor " {" \fIy | \fIn }
Start or stop monitoring a mirrored or snapshot logical volume with
dmeventd, if it is installed.
If a device used by a monitored mirror reports an I/O error,
the failure is handled according to
\fBmirror_image_fault_policy\fP and \fBmirror_log_fault_policy\fP
set in \fBlvm.conf\fP.
.TP
.BR \-\-poll " {" \fIy | \fIn }
Without polling a logical volume's backgrounded transformation process
will never complete.  If there is an incomplete pvmove or lvconvert (for
example, on rebooting after a crash), use \fB\-\-poll y\fP to restart the
process from its last checkpoint.  However, it may not be appropriate to
immediately poll a logical volume when it is activated, use
\fB\-\-poll n\fP to defer and then \fB\-\-poll y\fP to restart the process.
.TP
.IR \fB\-\-[raid]maxrecoveryrate " " \fIRate [ bBsSkKmMgG ]
Sets the maximum recovery rate for a RAID logical volume.  \fIRate\fP
is specified as an amount per second for each device in the array.
If no suffix is given, then KiB/sec/device is assumed.  Setting the
recovery rate to 0 means it will be unbounded.
.TP
.IR \fB\-\-[raid]minrecoveryrate " " \fIRate [ bBsSkKmMgG ]
Sets the minimum recovery rate for a RAID logical volume.  \fIRate\fP
is specified as an amount per second for each device in the array.
If no suffix is given, then KiB/sec/device is assumed.  Setting the
recovery rate to 0 means it will be unbounded.
.TP
.BR \-\-[raid]syncaction " {" \fIcheck | \fIrepair }
This argument is used to initiate various RAID synchronization operations.
The \fIcheck\fP and \fIrepair\fP options provide a way to check the
integrity of a RAID logical volume (often referred to as "scrubbing").
These options cause the RAID logical volume to
read all of the data and parity blocks in the array and check for any
discrepancies (e.g. mismatches between mirrors or incorrect parity values).
If \fIcheck\fP is used, the discrepancies will be counted but not repaired.
If \fIrepair\fP is used, the discrepancies will be corrected as they are
encountered.  The 'lvs' command can be used to show the number of
discrepancies found or repaired.
.TP
.BR \-\-[raid]writebehind " " \fIIOCount
Specify the maximum number of outstanding writes that are allowed to
devices in a RAID1 logical volume that are marked as \fIwrite-mostly\fP.
Once this value is exceeded, writes become synchronous (i.e. all writes
to the constituent devices must complete before the array signals the
write has completed).  Setting the value to zero clears the preference
and allows the system to choose the value arbitrarily.
.TP
.IR \fB\-\-[raid]writemostly " " PhysicalVolume [ : { y | n | t }]
Mark a device in a RAID1 logical volume as \fIwrite-mostly\fP.  All reads
to these drives will be avoided unless absolutely necessary.  This keeps
the number of I/Os to the drive to a minimum.  The default behavior is to
set the write-mostly attribute for the specified physical volume in the
logical volume.  It is possible to also remove the write-mostly flag by
appending a "\fI:n\fP" to the physical volume or to toggle the value by specifying
"\fI:t\fP".  The \fB\-\-writemostly\fP argument can be specified more than one time
in a single command; making it possible to toggle the write-mostly attributes
for all the physical volumes in a logical volume at once.
.TP
.B \-\-sysinit
Indicates that \fBlvchange\fP(8) is being invoked from early system
initialisation scripts (e.g. rc.sysinit or an initrd),
before writeable filesystems are available. As such,
some functionality needs to be disabled and this option
acts as a shortcut which selects an appropriate set of options. Currently
this is equivalent to using  \fB\-\-ignorelockingfailure\fP,
\fB\-\-ignoremonitoring\fP, \fB\-\-poll n\fP and setting
\fBLVM_SUPPRESS_LOCKING_FAILURE_MESSAGES\fP
environment variable.

If \fB\-\-sysinit\fP is used in conjunction with lvmetad(8) enabled and running,
autoactivation is preferred over manual activation via direct lvchange call.
Logical volumes are autoactivated according to auto_activation_volume_list
set in lvm.conf(5).
.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 \-\-ignoremonitoring
Make no attempt to interact with dmeventd unless \fB\-\-monitor\fP
is specified.
Do not use this if dmeventd is already monitoring a device.
.TP
.BR \-M ", " \-\-persistent " {" \fIy | \fIn }
Set to y to make the minor number specified persistent.
Change of persistent numbers is not supported for pool volumes.
.TP
.BR \-p ", " \-\-permission " {" \fIr | \fIrw }
Change access permission to read-only or read/write.
.TP
.BR \-r ", " \-\-readahead " {" \fIReadAheadSectors | \fIauto | \fInone }
Set read ahead sector count of this logical volume.
For volume groups with metadata in lvm1 format, this must
be a value between 2 and 120 sectors.
The default value is "auto" which allows the kernel to choose
a suitable value automatically.
"None" is equivalent to specifying zero.
.TP
.B \-\-refresh
If the logical volume is active, reload its metadata.
This is not necessary in normal operation, but may be useful
if something has gone wrong or if you're doing clustering
manually without a clustered lock manager.
.TP
.BR \-Z ", " \-\-zero " {" \fIy | \fIn }
Set zeroing mode for thin pool. Note: already provisioned blocks from pool
in non-zero mode are not cleared in unwritten parts when setting zero to
\fIy\fP.
.SH ENVIRONMENT VARIABLES
.TP
.B LVM_SUPPRESS_LOCKING_FAILURE_MESSAGES
Suppress locking failure messages.
.SH Examples
Changes the permission on volume lvol1 in volume group vg00 to be read-only:
.sp
.B lvchange \-pr vg00/lvol1
.SH SEE ALSO
.BR lvm (8),
.BR lvmcache (7),
.BR lvmthin (7),
.BR lvcreate (8),
.BR vgchange (8)
