NAME
lvm.conf - Configuration file for LVM2
SYNOPSIS
/etc/lvm/lvm.conf
DESCRIPTION
lvm.conf is loaded during the initialisation phase of lvm (8). This
file can in turn lead to other files being loaded - settings read in
later override earlier settings. File timestamps are checked between
commands and if any have changed, all the files are reloaded.
Use lvm dumpconfig to check what settings are in use.
SYNTAX
This section describes the configuration file syntax.
Whitespace is not significant unless it is within quotes. This
provides a wide choice of acceptable indentation styles. Comments
begin with # and continue to the end of the line. They are treated as
whitespace.
Here is an informal grammar:
file = value*
A configuration file consists of a set of values.
value = section | assignment
A value can either be a new section, or an assignment.
section = identifier ’{’ value* ’}’
A section is groups associated values together.
It is denoted by a name and delimited by curly brackets.
e.g. backup {
...
}
assignment = identifier ’=’ (array | type)
An assignment associates a type with an identifier.
e.g. max_archives = 42
array = ’[’ (type ’,’)* type ’]’ | ’[’ ’]’
Inhomogeneous arrays are supported.
Elements must be separated by commas.
An empty array is acceptable.
type = integer | float | string
integer = [0-9]*
float = [0-9]*.[0-9]*
string = ’"’ .* ’"’
Strings must be enclosed in double quotes.
SECTIONS
The sections that may be present in the file are:
devices — Device settings
dir — Directory in which to create volume group device nodes.
Defaults to "/dev". Commands also accept this as a prefix on
volume group names.
scan — List of directories to scan recursively for LVM physical
volumes. Devices in directories outside this hierarchy will be
ignored. Defaults to "/dev".
preferred_names — List of patterns compared in turn against all
the pathnames referencing the same device in in the scanned
directories. The pathname that matches the earliest pattern in
the list is the one used in any output. As an example, if
device-mapper multipathing is used, the following will select
multipath device names:
devices { preferred_names = [ "^/dev/mapper/mpath" ] }
filter — List of patterns to apply to devices found by a scan.
Patterns are regular expressions delimited by any character and
preceded by a (for accept) or r (for reject). The list is
traversed in order, and the first regex that matches determines
if the device will be accepted or rejected (ignored). Devices
that don’t match any patterns are accepted. If you want to
reject patterns that don’t match, end the list with "r/.*/". If
there are several names for the same device (e.g. symbolic links
in /dev), if any name matches any a pattern, the device is
accepted; otherwise if any name matches any r pattern it is
rejected; otherwise it is accepted. As an example, to ignore
/dev/cdrom you could use:
devices { filter=["r|cdrom|"] }
cache_dir — Persistent filter cache file directory. Defaults to
"/etc/lvm/cache".
write_cache_state — Set to 0 to disable the writing out of the
persistent filter cache file when lvm exits. Defaults to 1.
types — List of pairs of additional acceptable block device
types found in /proc/devices together with maximum (non-zero)
number of partitions (normally 16). By default, LVM2 supports
ide, sd, md, loop, dasd, dac960, nbd, ida, cciss, ubd, ataraid,
drbd, power2, i2o_block and iseries/vd. Block devices with
major numbers of different types are ignored by LVM2. Example:
types = ["fd", 16]. To create physical volumes on device-mapper
volumes created outside LVM2, perhaps encrypted ones from
cryptsetup, you’ll need types = ["device-mapper", 16]. But if
you do this, be careful to avoid recursion within LVM2. The
figure for number of partitions is not currently used in LVM2 -
and might never be.
sysfs_scan — If set to 1 and your kernel supports sysfs and it
is mounted, sysfs will be used as a quick way of filtering out
block devices that are not present.
md_component_detection — If set to 1, LVM2 will ignore devices
used as components of software RAID (md) devices by looking for
md superblocks. This doesn’t always work satisfactorily e.g. if
a device has been reused without wiping the md superblocks
first.
md_chunk_alignment — If set to 1, and a Physical Volume is
placed directly upon an md device, LVM2 will align its data
blocks with the md device’s stripe-width.
data_alignment_detection — If set to 1, and your kernel provides
topology information in sysfs for the Physical Volume, the start
of data area will be aligned on a multiple of the âârequest the
device can perform without incurring a read-modify-write penalty
(e.g. MD’s chunk size). optimal_io_size is the device’s
preferred unit of receiving I/O (e.g. MD’s stripe width).
minimum_io_size is used if optimal_io_size is undefined (0). If
both md_chunk_alignment and data_alignment_detection are enabled
the result of data_alignment_detection is used.
data_alignment — Default alignment (in KB) of start of data area
when creating a new Physical Volume using the lvm2 format. If a
Physical Volume is placed directly upon an md device and
md_chunk_alignment or data_alignment_detection is enabled this
parameter is ignored. Set to 0 to use the default alignment of
64KB or the page size, if larger.
data_alignment_offset_detection — If set to 1, and your kernel
provides topology information in sysfs for the Physical Volume,
the start of the aligned data area of the Physical Volume will
be shifted by the alignment_offset exposed in sysfs.
To see the location of the first Physical Extent of an existing
Physical Volume use pvs -o +pe_start . It will be a multiple of
the requested data_alignment plus the alignment_offset from
data_alignment_offset_detection (if enabled) or the pvcreate
commandline.
log — Default log settings
file — Location of log file. If this entry is not present, no
log file is written.
overwrite — Set to 1 to overwrite the log file each time a tool
is invoked. By default tools append messages to the log file.
level — Log level (0-9) of messages to write to the file. 9 is
the most verbose; 0 should produce no output.
verbose — Default level (0-3) of messages sent to stdout or
stderr. 3 is the most verbose; 0 should produce the least
output.
syslog — Set to 1 (the default) to send log messages through
syslog. Turn off by setting to 0. If you set to an integer
greater than one, this is used - unvalidated - as the facility.
The default is LOG_USER. See /usr/include/sys/syslog.h for safe
facility values to use. For example, LOG_LOCAL0 might be 128.
indent — When set to 1 (the default) messages are indented
according to their severity, two spaces per level. Set to 0 to
turn off indentation.
command_names — When set to 1, the command name is used as a
prefix for each message. Default is 0 (off).
prefix — Prefix used for all messages (after the command name).
Default is two spaces.
activation — Set to 1 to log messages while devices are
suspended during activation. Only set this temporarily while
debugging a problem because in low memory situations this
setting can cause your machine to lock up.
backup — Configuration for metadata backups.
archive_dir — Directory used for automatic metadata archives.
Backup copies of former metadata for each volume group are
archived here. Defaults to "/etc/lvm/archive".
backup_dir — Directory used for automatic metadata backups. A
single backup copy of the current metadata for each volume group
is stored here. Defaults to "/etc/lvm/backup".
archive — Whether or not tools automatically archive existing
metadata into archive_dir before making changes to it. Default
is 1 (automatic archives enabled). Set to 0 to disable.
Disabling this might make metadata recovery difficult or
impossible if something goes wrong.
backup — Whether or not tools make an automatic backup into
backup_dir after changing metadata. Default is 1 (automatic
backups enabled). Set to 0 to disable. Disabling this might
make metadata recovery difficult or impossible if something goes
wrong.
retain_min — Minimum number of archives to keep. Defaults to
10.
retain_days — Minimum number of days to keep archive files.
Defaults to 30.
shell — LVM2 built-in readline shell settings
history_size — Maximum number of lines of shell history to
retain (default 100) in $HOME/.lvm_history
global — Global settings
test — If set to 1, run tools in test mode i.e. no changes to
the on-disk metadata will get made. It’s equivalent to having
the -t option on every command.
activation — Set to 0 to turn off all communication with the
device-mapper driver. Useful if you want to manipulate logical
volumes while device-mapper is not present in your kernel.
proc — Mount point of proc filesystem. Defaults to /proc.
umask — File creation mask for any files and directories
created. Interpreted as octal if the first digit is zero.
Defaults to 077. Use 022 to allow other users to read the files
by default.
format — The default value of --metadatatype used to determine
which format of metadata to use when creating new physical
volumes and volume groups. lvm1 or lvm2.
fallback_to_lvm1 — Set this to 1 if you need to be able to
switch between 2.4 kernels using LVM1 and kernels including
device-mapper. The LVM2 tools should be installed as normal and
the LVM1 tools should be installed with a .lvm1 suffix e.g.
vgscan.lvm1. If an LVM2 tool is then run but unable to
communicate with device-mapper, it will automatically invoke the
equivalent LVM1 version of the tool. Note that for LVM1 tools
to manipulate physical volumes and volume groups created by LVM2
you must use --metadataformat lvm1 when creating them.
library_dir — A directory searched for LVM2’s shared libraries
ahead of the places dlopen (3) searches.
format_libraries — A list of shared libraries to load that
contain code to process different formats of metadata. For
example, liblvm2formatpool.so is needed to read GFS pool
metadata if LVM2 was configured --with-pool=shared.
locking_type — What type of locking to use. 1 is the default,
which use flocks on files in locking_dir (see below) to avoid
conflicting LVM2 commands running concurrently on a single
machine. 0 disables locking and risks corrupting your metadata.
If set to 2, the tools will load the external locking_library
(see below). If the tools were configured --with-
cluster=internal (the default) then 3 means to use built-in
cluster-wide locking. Type 4 enforces read-only metadata and
forbids any operations that might want to modify Volume Group
metadata. All changes to logical volumes and their states are
communicated using locks.
wait_for_locks — When set to 1, the default, the tools wait if a
lock request cannot be satisfied immediately. When set to 0,
the operation is aborted instead.
locking_dir — The directory LVM2 places its file locks if
locking_type is set to 1. The default is /var/lock/lvm.
locking_library — The name of the external locking library to
load if locking_type is set to 2. The default is
liblvm2clusterlock.so. If you need to write such a library,
look at the lib/locking source code directory.
tags — Host tag settings
hosttags — If set to 1, create a host tag with the machine name.
Setting this to 0 does nothing, neither creating nor destroying
any tag. The machine name used is the nodename as returned by
uname (2).
Additional host tags to be set can be listed here as
subsections. The @ prefix for tags is optional. Each of these
host tag subsections can contain a host_list array of host
names. If any one of these entries matches the machine name
exactly then the host tag gets defined on this particular host,
otherwise it doesn’t.
After lvm.conf has been processed, LVM2 works through each host
tag that has been defined in turn, and if there is a
configuration file called lvm_<host_tag>.conf it attempts to
load it. Any settings read in override settings found in
earlier files. Any additional host tags defined get appended to
the search list, so in turn they can lead to further
configuration files being processed. Use lvm dumpconfig to
check the result of config file processing.
The following example always sets host tags tag1 and sets tag2
on machines fs1 and fs2:
tags { tag1 { } tag2 { host_list = [ "fs1", "fs2" ] } }
These options are useful if you are replicating configuration
files around a cluster. Use of hosttags = 1 means every machine
can have static and identical local configuration files yet use
different settings and activate different logical volumes by
default. See also volume_list below and --addtag in lvm (8).
activation — Settings affecting device-mapper activation
missing_stripe_filler — When activating an incomplete logical
volume in partial mode, this option dictates how the missing
data is replaced. A value of "error" will cause activation to
create error mappings for the missing data, meaning that read
access to missing portions of the volume will result in I/O
errors. You can instead also use a device path, and in that case
this device will be used in place of missing stripes. However,
note that using anything other than "error" with mirrored or
snapshotted volumes is likely to result in data corruption. For
instructions on how to create a device that always returns
zeros, see lvcreate (8).
mirror_region_size — Unit size in KB for copy operations when
mirroring.
readahead — Used when there is no readahead value stored in the
volume group metadata. Set to none to disable readahead in
these circumstances or auto to use the default value chosen by
the kernel.
reserved_memory, reserved_stack — How many KB to reserve for
LVM2 to use while logical volumes are suspended. If
insufficient memory is reserved before suspension, there is a
risk of machine deadlock.
process_priority — The nice value to use while devices are
suspended. This is set to a high priority so that logical
volumes are suspended (with I/O generated by other processes to
those logical volumes getting queued) for the shortest possible
time.
volume_list — This acts as a filter through which all requests
to activate a logical volume on this machine are passed. A
logical volume is only activated if it matches an item in the
list. Tags must be preceded by @ and are checked against all
tags defined in the logical volume and volume group metadata for
a match. @* is short-hand to check every tag set on the host
machine (see tags above). Logical volume and volume groups can
also be included in the list by name e.g. vg00, vg00/lvol1.
metadata — Advanced metadata settings
pvmetadatacopies — When creating a physical volume using the
LVM2 metadata format, this is the default number of copies of
metadata to store on each physical volume. Currently it can be
set to 0, 1 or 2. The default is 1. If set to 2, one copy is
placed at the beginning of the disk and the other is placed at
the end. It can be overridden on the command line with
--metadatacopies. If creating a volume group with just one
physical volume, it’s a good idea to have 2 copies. If creating
a large volume group with many physical volumes, you may decide
that 3 copies of the metadata is sufficient, i.e. setting it to
1 on three of the physical volumes, and 0 on the rest. Every
volume group must contain at least one physical volume with at
least 1 copy of the metadata (unless using the text files
described below). The disadvantage of having lots of copies is
that every time the tools access the volume group, every copy of
the metadata has to be accessed, and this slows down the tools.
pvmetadatasize — Approximate number of sectors to set aside for
each copy of the metadata. Volume groups with large numbers of
physical or logical volumes, or volumes groups containing
complex logical volume structures will need additional space for
their metadata. The metadata areas are treated as circular
buffers, so unused space becomes filled with an archive of the
most recent previous versions of the metadata.
dirs — List of directories holding live copies of LVM2 metadata
as text files. These directories must not be on logical
volumes. It is possible to use LVM2 with a couple of
directories here, preferably on different (non-logical-volume)
filesystems and with no other on-disk metadata, pvmetadatacopies
= 0. Alternatively these directories can be in addition to the
on-disk metadata areas. This feature was created during the
development of the LVM2 metadata before the new on-disk metadata
areas were designed and no longer gets tested. It is not
supported under low-memory conditions, and it is important never
to edit these metadata files unless you fully understand how
things work: to make changes you should always use the tools as
normal, or else vgcfgbackup, edit backup, vgcfgrestore.
FILES
/etc/lvm/lvm.conf /etc/lvm/archive /etc/lvm/backup
/etc/lvm/cache/.cache /var/lock/lvm
SEE ALSO
lvm(8), umask(2), uname(2), dlopen(3), syslog(3), syslog.conf(5)