.TH LVS 8 "LVM TOOLS #VERSION#" "Sistina Software UK" \" -*- nroff -*-
.SH NAME
lvs \(em report information about logical volumes
.SH SYNOPSIS
.B lvs
.RB [ \-\-aligned ]
.RB [ \-\-binary ]
.RB [ \-a | \-\-all ]
.RB [ \-\-commandprofile
.IR ProfileName ]
.RB [ \-d | \-\-debug ]
.RB [ \-h | \-? | \-\-help ]
.RB [ \-\-ignorelockingfailure ]
.RB [ \-\-ignoreskippedcluster ]
.RB [ \-\-nameprefixes ]
.RB [ \-\-noheadings ]
.RB [ \-\-nosuffix ]
.RB [ \-o | \-\-options
.RI [ + ] Field [, Field ]]
.RB [ \-O | \-\-sort
.RI [ + | \- ] Key1 [,[ + | \- ] Key2 [,...]]]
.RB [ \-P | \-\-partial ]
.RB [ \-\-rows ]
.RB [ \-S | \-\-select
.IR Selection ]
.RB [ \-\-separator
.IR Separator ]
.RB [ \-\-segments ]
.RB [ \-\-unbuffered ]
.RB [ \-\-units
.IR hHbBsSkKmMgGtTpPeE ]
.RB [ \-\-unquoted ]
.RB [ \-v | \-\-verbose ]
.RB [ \-\-version ]
.RI [ VolumeGroupName | LogicalVolume { Name | Path }
.RI [ VolumeGroupName | LogicalVolume { Name | Path }\ ...]]

.SH DESCRIPTION
lvs produces formatted output about logical volumes.
.SH OPTIONS
See
.BR lvm (8)
for common options.
.TP
.B \-\-aligned
Use with \fB\-\-separator\fP to align the output columns.
.TP
.B \-\-binary
Use binary values "0" or "1" instead of descriptive literal values
for columns that have exactly two valid values to report (not counting
the "unknown" value which denotes that the value could not be determined).
.TP
.B \-\-all
Include information in the output about internal Logical Volumes that
are components of normally-accessible Logical Volumes, such as mirrors,
but which are not independently accessible (e.g. not mountable).
The names of such Logical Volumes are enclosed within square brackets
in the output.  For example, after creating a mirror using
.B lvcreate -m1 \-\-mirrorlog disk
, this option will reveal three internal Logical
Volumes, with suffixes mimage_0, mimage_1, and mlog.
.TP
.B \-\-nameprefixes
Add an "LVM2_" prefix plus the field name to the output.  Useful
with \fB\-\-noheadings\fP to produce a list of field=value pairs that can
be used to set environment variables (for example, in
.BR udev (7)
rules).
.TP
.B \-\-noheadings
Suppress the headings line that is normally the first line of output.
Useful if grepping the output.
.TP
.B \-\-nosuffix
Suppress the suffix on output sizes.  Use with \fB\-\-units\fP
(except h and H) if processing the output.
.TP
.BR \-o ", " \-\-options
Comma-separated ordered list of columns.  Precede the list with '\fI+\fP'
to append to the default selection of columns instead of replacing it.
.IP
Use \fB\-o lv_all\fP to select all logical volume columns,
and \fB\-o seg_all\fP
to select all logical volume segment columns.
.IP
Use \fB\-o help\fP to view the full list of columns available.
.IP
Column names include:
chunk_size,
convert_lv,
copy_percent,
data_lv,
devices,
discards,
lv_attr,
lv_host,
lv_kernel_major,
lv_kernel_minor,
lv_kernel_read_ahead,
lv_major,
lv_minor,
lv_name,
lv_path,
lv_profile,
lv_read_ahead,
lv_size,
lv_tags,
lv_time,
lv_uuid,
metadata_lv,
mirror_log,
modules,
move_pv,
origin,
origin_size,
pool_lv,
raid_max_recovery_rate,
raid_min_recovery_rate,
raid_mismatch_count,
raid_sync_action,
raid_write_behind,
region_size,
segtype,
seg_count,
seg_pe_ranges,
seg_size,
seg_size_pe,
seg_start,
seg_start_pe,
seg_tags,
snap_percent,
stripes,
stripe_size,
sync_percent,
thin_count,
transaction_id,
zero.
.IP
With \fB\-\-segments\fP, any "seg_" prefixes are optional;
otherwise any "lv_" prefixes are optional. Columns mentioned in
.BR vgs (8)
can also be chosen.
.IP
The lv_attr bits are:
.RS
.IP 1 3
Volume type: (C)ache, (m)irrored, (M)irrored without initial sync, (o)rigin,
(O)rigin with merging snapshot, (r)aid, (R)aid without initial sync,
(s)napshot, merging (S)napshot, (p)vmove, (v)irtual,
mirror or raid (i)mage, mirror or raid (I)mage out-of-sync, mirror (l)og device,
under (c)onversion, thin (V)olume, (t)hin pool, (T)hin pool data, raid or
pool m(e)tadata or pool metadata spare.
.IP 2 3
Permissions: (w)riteable, (r)ead-only, (R)ead-only activation of non-read-only
volume
.IP 3 3
Allocation policy:  (a)nywhere, (c)ontiguous, (i)nherited, c(l)ing, (n)ormal
This is capitalised if the volume is currently locked against allocation
changes, for example during
.BR pvmove (8).
.IP 4 3
fixed (m)inor
.IP 5 3
State: (a)ctive, (s)uspended, (I)nvalid snapshot, invalid (S)uspended snapshot,
snapshot (m)erge failed, suspended snapshot (M)erge failed,
mapped (d)evice present without tables, mapped device present with (i)nactive table,
(X) unknown
.IP 6 3
device (o)pen, (X) unknown
.IP 7 3
Target type: (C)ache, (m)irror, (r)aid, (s)napshot, (t)hin, (u)nknown, (v)irtual.
This groups logical volumes related to the same kernel target together.  So,
for example, mirror images, mirror logs as well as mirrors themselves appear as
(m) if they use the original device-mapper mirror kernel driver; whereas the raid
equivalents using the md raid kernel driver all appear as (r).
Snapshots using the original device-mapper driver appear as (s); whereas
snapshots of thin volumes using the new thin provisioning driver appear as (t).
.IP 8 3
Newly-allocated data blocks are overwritten with blocks of (z)eroes before use.
.IP 9 3
Volume Health: (p)artial, (r)efresh needed, (m)ismatches exist, (w)ritemostly,
(X) unknown.
(p)artial signifies that one or more of the Physical Volumes this Logical
Volume uses is missing from the system.  (r)efresh signifies that one or
more of the Physical Volumes this RAID Logical Volume uses had suffered a
write error.  The write error could be due to a temporary failure of that
Physical Volume or an indication that it is failing.  The device should be
refreshed or replaced.  (m)ismatches signifies that the RAID logical volume
has portions of the array that are not coherent.  Inconsistencies are
detected by initiating a "check" on a RAID logical volume.  (The scrubbing
operations, "check" and "repair", can be performed on a RAID logical
volume via the 'lvchange' command.)  (w)ritemostly signifies the devices in
a RAID 1 logical volume that have been marked write-mostly.
.IP 10 3
s(k)ip activation: this volume is flagged to be skipped during activation.
.RE
.TP
.BR \-O ", " \-\-sort
Comma-separated ordered list of columns to sort by.  Replaces the default
selection. Precede any column with '\fI\-\fP' for a reverse sort on that column.
.TP
.B \-\-rows
Output columns as rows.
.TP
.BR  \-S ", " \-\-select " " \fISelection
Display only rows that match Selection criteria. All rows are displayed with
the additional "selected" column (\fB-o selected\fP) showing 1 if the row
matches the Selection and 0 otherwise. The Selection criteria are defined
by specifying column names and their valid values (that can include reserved
values) while making use of supported comparison operators. See \fBlvm\fP(8)
and \fB\-S\fP, \fB\-\-select\fP description for more detailed information
about constructing the Selection criteria. As a quick help and to see full
list of column names that can be used in Selection including the list of
reserved values and the set of supported selection operators, check the
output of \fBlvs -S help\fP command.
.TP
.B \-\-segments
Use default columns that emphasize segment information.
.TP
.B \-\-separator \fISeparator
String to use to separate each column.  Useful if grepping the output.
.TP
.B \-\-unbuffered
Produce output immediately without sorting or aligning the columns properly.
.TP
.B \-\-units \fIhHbBsSkKmMgGtTpPeE
All sizes are output in these units: (h)uman-readable, (b)ytes, (s)ectors,
(k)ilobytes, (m)egabytes, (g)igabytes, (t)erabytes, (p)etabytes, (e)xabytes.
Capitalise to use multiples of 1000 (S.I.) instead of 1024.  Can also specify
custom units e.g. \fB\-\-units 3M\fP
.TP
.B \-\-unquoted
When used with \fB\-\-nameprefixes\fP, output values in the field=value
pairs are not quoted.
.SH SEE ALSO
.BR lvm (8),
.BR lvdisplay (8),
.BR pvs (8),
.BR vgs (8)
