.TH LVM 8 "LVM TOOLS #VERSION#" "Sistina Software UK" \" -*- nroff -*-
.
.SH NAME
.
lvm \(em LVM2 tools
.
.SH SYNOPSIS
.
.B lvm
.RI [ command | file ]
.
.SH DESCRIPTION
.
lvm provides the command-line tools for LVM2.  A separate
manual page describes each command in detail.
.P
If \fBlvm\fP is invoked with no arguments it presents a readline prompt
(assuming it was compiled with readline support).
LVM commands may be entered interactively at this prompt with
readline facilities including history and command name and option
completion.  Refer to \fBreadline\fP(3) for details.
.P
If \fBlvm\fP is invoked with argv[0] set to the name of a specific
LVM command (for example by using a hard or soft link) it acts as
that command.
.P
On invocation, \fBlvm\fP requires that only the standard file descriptors
stdin, stdout and stderr are available.  If others are found, they
get closed and messages are issued warning about the leak.
This warning can be suppressed by setting the environment variable
.B LVM_SUPPRESS_FD_WARNINGS\fP.
.P
Where commands take VG or LV names as arguments, the full path name is
optional.  An LV called "lvol0" in a VG called "vg0" can be specified
as "vg0/lvol0".  Where a list of VGs is required but is left empty,
a list of all VGs will be substituted.  Where a list of LVs is required
but a VG is given, a list of all the LVs in that VG will be substituted.
So \fBlvdisplay vg0\fP will display all the LVs in "vg0".
Tags can also be used - see \fB\-\-addtag\fP below.
.P
One advantage of using the built-in shell is that configuration
information gets cached internally between commands.
.P
A file containing a simple script with one command per line
can also be given on the command line.  The script can also be
executed directly if the first line is #! followed by the absolute
path of \fBlvm\fP.
.
.SH BUILT-IN COMMANDS
.
The following commands are built into lvm without links
normally being created in the filesystem for them.
.sp
.PD 0
.TP 14
.B config
The same as \fBlvmconfig\fP(8) below.
.TP
.B devtypes
Display the recognised built-in block device types.
.TP
.B dumpconfig
The same as \fBlvmconfig\fP(8) below.
.TP
.B formats
Display recognised metadata formats.
.TP
.B help
Display the help text.
.TP
.B lastlog
Display log report of last command run in LVM shell
if command log reporting is enabled.
.TP
.B lvpoll
Complete lvmpolld operations (Internal command).
.TP
.B pvdata
Not implemented in LVM2.
.TP
.B segtypes
Display recognised Logical Volume segment types.
.TP
.B systemid
Display any system ID currently set on this host.
.TP
.B tags
Display any tags defined on this host.
.TP
.B version
Display version information.
.PD
.
.SH COMMANDS
.
The following commands implement the core LVM functionality.
.sp
.PD 0
.TP 14
.B pvchange
Change attributes of a Physical Volume.
.TP
.B pvck
Check Physical Volume metadata.
.TP
.B pvcreate
Initialize a disk or partition for use by LVM.
.TP
.B pvdisplay
Display attributes of a Physical Volume.
.TP
.B pvmove
Move Physical Extents.
.TP
.B pvremove
Remove a Physical Volume.
.TP
.B pvresize
Resize a disk or partition in use by LVM2.
.TP
.B pvs
Report information about Physical Volumes.
.TP
.B pvscan
Scan all disks for Physical Volumes.
.TP
.B vgcfgbackup
Backup Volume Group descriptor area.
.TP
.B vgcfgrestore
Restore Volume Group descriptor area.
.TP
.B vgchange
Change attributes of a Volume Group.
.TP
.B vgck
Check Volume Group metadata.
.TP
.B vgconvert
Convert Volume Group metadata format.
.TP
.B vgcreate
Create a Volume Group.
.TP
.B vgdisplay
Display attributes of Volume Groups.
.TP
.B vgexport
Make volume Groups unknown to the system.
.TP
.B vgextend
Add Physical Volumes to a Volume Group.
.TP
.B vgimport
Make exported Volume Groups known to the system.
.TP
.B vgimportclone
Import and rename duplicated Volume Group (e.g. a hardware snapshot).
.TP
.B vgmerge
Merge two Volume Groups.
.TP
.B vgmknodes
Recreate Volume Group directory and Logical Volume special files
.TP
.B vgreduce
Reduce a Volume Group by removing one or more Physical Volumes.
.TP
.B vgremove
Remove a Volume Group.
.TP
.B vgrename
Rename a Volume Group.
.TP
.B vgs
Report information about Volume Groups.
.TP
.B vgscan
Scan all disks for Volume Groups and rebuild caches.
.TP
.B vgsplit
Split a Volume Group into two, moving any logical
volumes from one Volume Group to another by moving entire Physical
Volumes.
.TP
.B lvchange
Change attributes of a Logical Volume.
.TP
.B lvconvert
Convert a Logical Volume from linear to mirror or snapshot.
.TP
.B lvcreate
Create a Logical Volume in an existing Volume Group.
.TP
.B lvdisplay
Display attributes of a Logical Volume.
.TP
.B lvextend
Extend the size of a Logical Volume.
.TP
.B lvmchange
Change attributes of the Logical Volume Manager.
.TP
.B lvmconfig
Display the configuration information after
loading \fBlvm.conf\fP(5) and any other configuration files.
.TP
.B lvmdiskscan
Scan for all devices visible to LVM2.
.TP
.B lvmdump
Create lvm2 information dumps for diagnostic purposes.
.TP
.B lvreduce
Reduce the size of a Logical Volume.
.TP
.B lvremove
Remove a Logical Volume.
.TP
.B lvrename
Rename a Logical Volume.
.TP
.B lvresize
Resize a Logical Volume.
.TP
.B lvs
Report information about Logical Volumes.
.TP
.B lvscan
Scan (all disks) for Logical Volumes.
.PD
.P
The following commands are not implemented in LVM2 but might be
in the future:
.BR lvmsadc ", " lvmsar ", " pvdata .
.
.SH OPTIONS
.
The following options are available for many of the commands.
They are implemented generically and documented here rather
than repeated on individual manual pages.
.P
Additional hyphens within option names are ignored.  For example,
\fB\-\-readonly\fP and \fB\-\-read\-only\fP are both accepted.
.
.HP
.BR \-h | \-? | \-\-help
.br
Display the help text.
.
.HP
.BR \-\-version
.br
Display version information.
.
.HP
.BR \-v | \-\-verbose
.br
Set verbose level. Repeat from 1 to 3 times to increase the detail
of messages sent to stdout and stderr.  Overrides config file setting.
.
.HP
.BR \-d | \-\-debug
.br
Set debug level. Repeat from 1 to 6 times to increase the detail of
messages sent to the log file and/or syslog (if configured).
Overrides config file setting.
.
.HP
.BR \-q | \-\-quiet
.br
Suppress output and log messages.
Overrides \fB\-d\fP and \fB\-v\fP.
Repeat once to also suppress any prompts with answer 'no'.
.
.HP
.BR \-\-yes
.br
Don't prompt for confirmation interactively but instead always assume the
answer is 'yes'.  Take great care if you use this!
.
.HP
.BR \-t | \-\-test
.br
Run in test mode. Commands will not update metadata.
This is implemented by disabling all metadata writing but nevertheless
returning success to the calling function.  This may lead to unusual
error messages in multi-stage operations if a tool relies on reading
back metadata it believes has changed but hasn't.
.
.HP
.BR \-\-driverloaded
.RB { y | n }
.br
Whether or not the device-mapper kernel driver is loaded.
If you set this to \fBn\fP, no attempt will be made to contact the driver.
.
.HP
.BR \-A | \-\-autobackup
.RB { y | n }
.br
Whether or not to metadata should be backed up automatically after a change.
You are strongly advised not to disable this!
See \fBvgcfgbackup\fP(8).
.
.HP
.BR \-P | \-\-partial
.br
When set, the tools will do their best to provide access to Volume Groups
that are only partially available (one or more Physical Volumes belonging
to the Volume Group are missing from the system).  Where part of a logical
volume is missing, \fI\%/dev/ioerror\fP will be substituted, and you could use
\fBdmsetup\fP(8) to set this up to return I/O errors when accessed,
or create it as a large block device of nulls.  Metadata may not be
changed with this option. To insert a replacement Physical Volume
of the same or large size use \fBpvcreate \-u\fP to set the uuid to
match the original followed by \fBvgcfgrestore\fP(8).
.
.HP
.BR \-S | \-\-select
.IR Selection
.br
For reporting commands, display only rows that match \fISelection\fP criteria.
All rows are displayed with the additional "selected" column (\fB-o selected\fP)
showing 1 if the row matches the \fISelection\fP and 0 otherwise. For non-reporting
commands which process LVM entities, the selection can be used to match items
to process. See \fBSELECTION CRITERIA\fP section of this man page for more
information about the way the selection criteria are constructed.
.
.HP
.BR \-M | \-\-metadatatype
.IR Type
.br
Specifies which \fItype\fP of on-disk metadata to use, such as \fBlvm1\fP
or \fBlvm2\fP, which can be abbreviated to \fB1\fP or \fB2\fP respectively.
The default (\fBlvm2\fP) can be changed by setting \fBformat\fP
in the \fBglobal\fP section of the config file \fBlvm.conf\fP(5).
.
.HP
.BR \-\-ignorelockingfailure
.br
This lets you proceed with read-only metadata operations such as
\fBlvchange \-ay\fP and \fBvgchange \-ay\fP even if the locking module fails.
One use for this is in a system init script if the lock directory
is mounted read-only when the script runs.
.
.HP
.BR \-\-ignoreskippedcluster
.br
Use to avoid exiting with an non-zero status code if the command is run
without clustered locking and some clustered Volume Groups have to be
skipped over.
.
.HP
.BR \-\-readonly
.br
Run the command in a special read-only mode which will read on-disk
metadata without needing to take any locks.  This can be used to peek
inside metadata used by a virtual machine image while the virtual
machine is running.
It can also be used to peek inside the metadata of clustered Volume
Groups when clustered locking is not configured or running.  No attempt
will be made to communicate with the device-mapper kernel driver, so
this option is unable to report whether or not Logical Volumes are
actually in use.
.
.HP
.BR \-\-foreign
.br
Cause the command to access foreign VGs, that would otherwise be skipped.
It can be used to report or display a VG that is owned by another host.
This option can cause a command to perform poorly because lvmetad caching
is not used and metadata is read from disks.
.
.HP
.BR \-\-shared
.br
Cause the command to access shared VGs, that would otherwise be skipped
when lvmlockd is not being used.  It can be used to report or display a
lockd VG without locking. Applicable only if LVM is compiled with lockd
support.
.
.HP
.BR \-\-addtag
.IR Tag
.br
Add the tag \fITag\fP to a PV, VG or LV.
Supply this argument multiple times to add more than one tag at once.
A tag is a word that can be used to group LVM2 objects of the same type
together.
Tags can be given on the command line in place of PV, VG or LV
arguments.  Tags should be prefixed with @ to avoid ambiguity.
Each tag is expanded by replacing it with all objects possessing
that tag which are of the type expected by its position on the command line.
PVs can only possess tags while they are part of a Volume Group:
PV tags are discarded if the PV is removed from the VG.
As an example, you could tag some LVs as \fBdatabase\fP and others
as \fBuserdata\fP and then activate the database ones
with \fBlvchange \-ay @database\fP.
Objects can possess multiple tags simultaneously.
Only the new LVM2 metadata format supports tagging: objects using the
LVM1 metadata format cannot be tagged because the on-disk format does not
support it.
Characters allowed in tags are:
.BR A - Z
.BR a - z
.BR 0 - 9
.BR "_ + . -"
and as of version 2.02.78 the following characters are also accepted:
.BR "/ = ! : # &" .
.
.HP
.BR \-\-deltag
.IR Tag
.br
Delete the tag \fITag\fP from a PV, VG or LV, if it's present.
Supply this argument multiple times to remove more than one tag at once.
.
.HP
.BR \-\-alloc
.RB { anywhere | contiguous | cling | inherit | normal }
.br
Selects the allocation policy when a command needs to allocate
Physical Extents from the Volume Group.
Each Volume Group and Logical Volume has an allocation policy defined.
The default for a Volume Group is \fBnormal\fP which applies
common-sense rules such as not placing parallel stripes on the same
Physical Volume.  The default for a Logical Volume is \fBinherit\fP
which applies the same policy as for the Volume Group.  These policies can
be changed using \fBlvchange\fP(8) and \fBvgchange\fP(8) or overridden
on the command line of any command that performs allocation.
The \fBcontiguous\fP policy requires that new Physical Extents be placed adjacent
to existing Physical Extents.
The \fBcling\fP policy places new Physical Extents on the same Physical
Volume as existing Physical Extents in the same stripe of the Logical Volume.
If there are sufficient free Physical Extents to satisfy
an allocation request but \fBnormal\fP doesn't use them,
\fBanywhere\fP will - even if that reduces performance by
placing two stripes on the same Physical Volume.
.
.HP
.BR \-\-commandprofile
.IR ProfileName
.br
Selects the command configuration profile to use when processing an LVM command.
See also \fBlvm.conf\fP(5) for more information about \fBcommand profile config\fP and
the way it fits with other LVM configuration methods. Using \fB\-\-commandprofile\fP
option overrides any command profile specified via \fBLVM_COMMAND_PROFILE\fP
environment variable.
.
.HP
.BR \-\-metadataprofile
.IR ProfileName
.br
Selects the metadata configuration profile to use when processing an LVM command.
When using metadata profile during Volume Group or Logical Volume creation,
the metadata profile name is saved in metadata. When such Volume Group or Logical
Volume is processed next time, the metadata profile is automatically applied
and the use of \fB\-\-metadataprofile\fP option is not necessary. See also
\fBlvm.conf\fP(5) for more information about \fBmetadata profile config\fP and the
way it fits with other LVM configuration methods.
.
.HP
.BR \-\-profile
.IR ProfileName
.br
A short form of \fB\-\-metadataprofile\fP for \fBvgcreate\fP, \fBlvcreate\fP,
\fBvgchange\fP and \fBlvchange\fP command and a short form of \fB\-\-commandprofile\fP
for any other command (with the exception of \fBlvmconfig\fP command where the
\fB\-\-profile\fP has special meaning, see \fBlvmconfig\fP(8) for more information).
.
.HP
.BR \-\-reportformat
.IR {basic|json}
.br
Overrides current output format for reports which is defined globally by
\fBreport/output_format\fP configuration setting in \fBlvm.conf\fP(5).
The \fBbasic\fP format is the original format with columns and rows and
if there is more than one report per command, each report is prefixed
with report's name for identification. The \fBjson\fP stands for report
output in JSON format.
.HP
.BR \-\-config
.IR ConfigurationString
.br
Uses the ConfigurationString as direct string representation of the configuration
to override the existing configuration. The ConfigurationString is of exactly
the same format as used in any LVM configuration file. See \fBlvm.conf\fP(5)
for more information about \fBdirect config override on command line\fP and the
way it fits with other LVM configuration methods.
.
.SH VALID NAMES
.
The valid characters for VG and LV names are:
.BR a - z
.BR A - Z
.BR 0 - 9
.BR "+ _ . -"
.P
VG names cannot begin with a hyphen.
The name of a new LV also cannot begin with a hyphen.  However, if the
configuration setting \fBmetadata/record_lvs_history\fP is enabled then an LV
name with a hyphen as a prefix indicates that, although the LV was
removed, it is still being tracked because it forms part of the history of at
least one LV that is still present.  This helps to record the ancestry of
thin snapshots even after some links in the chain have been removed.
A reference to the historical LV 'lvol1' in VG 'vg00' would be 'vg00/-lvol1'
or just '-lvol1' if the VG is already set.  (The latter form must be preceded
by '--' to terminate command line option processing before reaching this
argument.)
.P
There are also various reserved names that are used internally by lvm that can
not be used as LV or VG names. A VG cannot be called anything that exists in
\fI/dev/\fP at the time of creation, nor can it be called '.' or '..'.
An LV cannot be called '.', '..', 'snapshot' or 'pvmove'.
The LV name may also not contain any of the following strings:
\fR'_cdata', '_cmeta', '_corig', '_mlog', '_mimage', '_pmspare',
\fR'_rimage', '_rmeta', '_tdata', '_tmeta' or '_vorigin'.
A directory bearing the name of each Volume Group is created under
\fI/dev\fP when any of its Logical Volumes are activated.
Each active Logical Volume is accessible from this directory as a symbolic
link leading to a device node.
Links or nodes in \fI/dev/mapper\fP are intended only for internal use and
the precise format and escaping might change between releases and distributions.
Other software and scripts should use the
\fI/dev/VolumeGroupName/LogicalVolumeName\fP format to reduce the chance of needing
amendment when the software is updated.  Should you need to process the node
names in /dev/mapper, you may use \fBdmsetup splitname\fP to separate out the
original VG, LV and internal layer names.
.P
.
.SH UNIQUE NAMES
.

VG names should be unique.  vgcreate will produce an error if the
specified VG name matches an existing VG name.  However, there are cases
where different VGs with the same name can appear to LVM, e.g. after
moving disks or changing filters.

When VGs with the same name exist, commands operating on all VGs will
include all of the VGs with the same name.  If the ambiguous VG name is
specified on the command line, the command will produce an error.  The
error states that multiple VGs exist with the specified name.  To process
one of the VGs specifically, the --select option should be used with the
UUID of the intended VG: '--select vg_uuid=<uuid>'.

An exception is if all but one of the VGs with the shared name is foreign
(see
.BR lvmsystemid (7).)
In this case, the one VG that is not foreign is assumed to be the intended
VG and is processed.
.P
LV names are unique within a VG.  The name of an historical LV cannot be
reused until the historical LV has itself been removed or renamed.

.
.SH ALLOCATION
.
When an operation needs to allocate Physical Extents for one or more
Logical Volumes, the tools proceed as follows:

First of all, they generate the complete set of unallocated Physical Extents
in the Volume Group.  If any ranges of Physical Extents are supplied at
the end of the command line, only unallocated Physical Extents within
those ranges on the specified Physical Volumes are considered.

Then they try each allocation policy in turn, starting with the strictest
policy (\fBcontiguous\fP) and ending with the allocation policy specified
using \fB\-\-alloc\fP or set as the default for the particular Logical
Volume or Volume Group concerned.  For each policy, working from the
lowest-numbered Logical Extent of the empty Logical Volume space that
needs to be filled, they allocate as much space as possible according to
the restrictions imposed by the policy.  If more space is needed,
they move on to the next policy.

The restrictions are as follows:

\fBContiguous\fP requires that the physical location of any Logical
Extent that is not the first Logical Extent of a Logical Volume is
adjacent to the physical location of the Logical Extent immediately
preceding it.

\fBCling\fP requires that the Physical Volume used for any Logical
Extent to be added to an existing Logical Volume is already in use by at
least one Logical Extent earlier in that Logical Volume.  If the
configuration parameter \fBallocation/cling_tag_list\fP is defined, then two
Physical Volumes are considered to match if any of the listed tags is
present on both Physical Volumes.  This allows groups of Physical
Volumes with similar properties (such as their physical location) to be
tagged and treated as equivalent for allocation purposes.

When a Logical Volume is striped or mirrored, the above restrictions are
applied independently to each stripe or mirror image (leg) that needs
space.

\fBNormal\fP will not choose a Physical Extent that shares the same Physical
Volume as a Logical Extent already allocated to a parallel Logical
Volume (i.e. a different stripe or mirror image/leg) at the same offset
within that parallel Logical Volume.

When allocating a mirror log at the same time as Logical Volumes to hold
the mirror data, Normal will first try to select different Physical
Volumes for the log and the data.  If that's not possible and the
.B allocation/mirror_logs_require_separate_pvs
configuration parameter is set to 0, it will then allow the log
to share Physical Volume(s) with part of the data.

When allocating thin pool metadata, similar considerations to those of a
mirror log in the last paragraph apply based on the value of the
.B allocation/thin_pool_metadata_require_separate_pvs
configuration parameter.

If you rely upon any layout behaviour beyond that documented here, be
aware that it might change in future versions of the code.

For example, if you supply on the command line two empty Physical
Volumes that have an identical number of free Physical Extents available for
allocation, the current code considers using each of them in the order
they are listed, but there is no guarantee that future releases will
maintain that property.  If it is important to obtain a specific layout
for a particular Logical Volume, then you should build it up through a
sequence of \fBlvcreate\fP(8) and \fBlvconvert\fP(8) steps such that the
restrictions described above applied to each step leave the tools no
discretion over the layout.

To view the way the allocation process currently works in any specific
case, read the debug logging output, for example by adding \fB\-vvvv\fP to
a command.
.
.SH LOGICAL VOLUME TYPES
.
Some logical volume types are simple to create and can be done with a
single \fBlvcreate\fP(8) command.  The linear and striped logical
volume types are an example of this.  Other logical volume types may
require more than one command to create.  The cache (\fBlvmcache\fP(7))
and thin provisioning (\fBlvmthin\fP(7)) types are examples of this.
.
.SH SELECTION CRITERIA
.
The selection criteria are a set of \fBstatements\fP combined by \fBlogical
and grouping operators\fP. The \fBstatement\fP consists of \fBcolumn\fP
name for which a set of valid \fBvalues\fP is defined using
\fBcomparison operators\fP. For complete list of column names (fields)
that can be used in selection, see the output of \fB<lvm reporting command> -S help\fP.
.P
.SS Comparison operators \fR(cmp_op)
.sp
.PD 0
.TP
.B =~
Matching regular expression.
.TP
.B !~
Not matching regular expression.
.TP
.B =
Equal to.
.TP
.B !=
Not equal to.
.TP
.B >=
Greater than or equal to.
.TP
.B >
Greater than
.TP
.B <=
Less than or equal to.
.TP
.B <
Less than.
.PD
.P
.SS Binary logical operators \fR(cmp_log)
.sp
.PD 0
.TP
.B &&
All fields must match
.TP
.B ,
All fields must match
.TP
.B ||
At least one field must match
.TP
.B #
At least one field must match
.PD
.P
.SS Unary logical operators
.TP
.B !
Logical negation
.P
.SS Grouping operators
.sp
.PD 0
.TP
.B (
Left parenthesis
.TP
.B )
Right parenthesis
.TP
.B [
List start
.TP
.B ]
List end
.TP
.B {
List subset start
.TP
.B }
List subset end
.PD
.SS Informal grammar specification
.HP
.BR STATEMENT " = " column " cmp_op " VALUE " | " \%STATEMENT " log_op " STATEMENT " | " \%(STATEMENT) " | " \%!(STATEMENT)
.br
.HP
.BR VALUE " = " [VALUE " log_op " VALUE]
.br
For list-based types: string list. Matches strictly.
The log_op must always be of one type within the whole list value.
.HP
.BR VALUE " = " {VALUE " log_op " VALUE}
.br
For list-based types: string list. Matches a subset.
The log_op must always be of one type within the whole list value.
.HP
.BR VALUE " = " value
.br
For scalar types: number (integer), size (floating point number
with size unit suffix), percent (floating point number with or
without % suffix), string.
.
.SH DIAGNOSTICS
.
All tools return a status code of zero on success or non-zero on failure.
.
.SH ENVIRONMENT VARIABLES
.
.TP
.B HOME
Directory containing \fI.lvm_history\fP if the internal readline
shell is invoked.
.TP
.B LVM_COMMAND_PROFILE
Name of default command profile to use for LVM commands. This profile
is overriden by direct use of \fB\-\-commandprofile\fP command line option.
.TP
.B LVM_SYSTEM_DIR
Directory containing \fBlvm.conf\fP(5) and other LVM system files.
Defaults to "\fI#DEFAULT_SYS_DIR#\fP".
.TP
.B LVM_SUPPRESS_FD_WARNINGS
Suppress warnings about unexpected file descriptors passed into LVM.
.TP
.B LVM_VG_NAME
The Volume Group name that is assumed for
any reference to a Logical Volume that doesn't specify a path.
Not set by default.
.TP
.B LVM_LVMETAD_PIDFILE
Path to the file that stores the lvmetad process ID.
.TP
.B LVM_LVMETAD_SOCKET
Path to the socket used to communicate with lvmetad.
.TP
.B LVM_LVMPOLLD_PIDFILE
Path to the file that stores the lvmpolld process ID.
.TP
.B LVM_LVMPOLLD_SOCKET
Path to the socket used to communicate with lvmpolld..
.TP
.B LVM_LOG_FILE_EPOCH
A string of up to 32 letters appended to the log filename and
followed by the process ID and a startup timestamp using
this format string "_%s_%d_%llu".  When set, each process logs to a
separate file.
.TP
.B LVM_LOG_FILE_MAX_LINES
If more than this number of lines are sent to the log file, the command gets
aborted.  Automated tests use this to terminate looping commands.
.TP
.B LVM_EXPECTED_EXIT_STATUS
The status anticipated when the process exits.  Use ">N" to match any
status greater than N.  If the actual exit status matches and a log
file got produced, it is deleted.
.B LVM_LOG_FILE_EPOCH
and
.B LVM_EXPECTED_EXIT_STATUS
together allow automated test scripts to discard uninteresting log data.
.TP
.B LVM_SUPPRESS_LOCKING_FAILURE_MESSAGES
Used to suppress warning messages when the configured locking is known
to be unavailable.
.TP
.B DM_ABORT_ON_INTERNAL_ERRORS
Abort processing if the code detects a non-fatal internal error.
.TP
.B DM_DISABLE_UDEV
Avoid interaction with udev.  LVM will manage the relevant nodes in /dev
directly.
.
.SH FILES
.
.I #DEFAULT_SYS_DIR#/lvm.conf
.br
.I $HOME/.lvm_history
.
.SH SEE ALSO
.
.nh
.BR lvm.conf (5),
.BR lvmcache (7),
.BR lvmthin (7),
.BR clvmd (8),
.BR dmsetup (8),
.BR lvchange (8),
.BR lvcreate (8),
.BR lvdisplay (8),
.BR lvextend (8),
.BR lvmchange (8),
.BR lvmconfig (8),
.BR lvmdiskscan (8),
.BR lvreduce (8),
.BR lvremove (8),
.BR lvrename (8),
.BR lvresize (8),
.BR lvs (8),
.BR lvscan (8),
.BR pvchange (8),
.BR pvck (8),
.BR pvcreate (8),
.BR pvdisplay (8),
.BR pvmove (8),
.BR pvremove (8),
.BR pvs (8),
.BR pvscan (8),
.BR vgcfgbackup (8),
.BR vgchange  (8),
.BR vgck (8),
.BR vgconvert (8),
.BR vgcreate (8),
.BR vgdisplay (8),
.BR vgextend (8),
.BR vgimport (8),
.BR vgimportclone (8),
.BR vgmerge (8),
.BR vgmknodes (8),
.BR vgreduce (8),
.BR vgremove (8),
.BR vgrename (8),
.BR vgs (8),
.BR vgscan (8),
.BR vgsplit (8),
.BR readline (3)
