LVS(8)
โจ NAME โจ
lvs โ show you all the tea about your logical volumes ๐ (this is the LVS(8) page from the System Manager's Manual, bestie, and we are getting into it)
๐ฆ SYNOPSIS ๐ฆ
lvs [ option_args ]
[ position_args ]
๐ซ DESCRIPTION ๐ซ
lvs produces formatted output about LVs. That's it, that's the whole vibe โ it's your little window into what your logical volumes are up to. โจ
๐ธ USAGE ๐ธ
okay so here's how you actually call it:
lvs
[ -a|--all ]
[ -H|--history ]
[ -o|--options String ]
[ -O|--sort String ]
[ -S|--select String ]
[ --aligned ]
[ --binary ]
[ --configreport log|vg|lv|pv|pvseg|seg ]
[ --foreign ]
[ --headings none|abbrev|full|0|1|2 ]
[ --ignorelockingfailure ]
[ --logonly ]
[ --nameprefixes ]
[ --noheadings ]
[ --nosuffix ]
[ --readonly ]
[ --reportformat basic|json|json_std ]
[ --rows ]
[ --segments ]
[ --separator String ]
[ --shared ]
[ --unbuffered ]
[ --units [Number]r|R|h|H|b|B|s|S|k|K|m|M|g|G|t|T|p|P|e|E ]
[ --unquoted ]
[ COMMON_OPTIONS ]
[ VG|LV|Tag ... ]
and then the shared-options-for-everyone era begins ๐ซถ
๐ Common options for lvm ๐
[ -d|--debug ... ]
[ -h|--help ]
[ -q|--quiet ... ]
[ -t|--test ]
[ -v|--verbose ... ]
[ -y|--yes ]
[ --commandprofile String ]
[ --config String ]
[ --devices PV ]
[ --devicesfile String ]
[ --driverloaded y|n ]
[ --journal String ]
[ --lockopt String ]
[ --longhelp ]
[ --nohints ]
[ --nolocking ]
[ --profile String ]
[ --version ]
๐ OPTIONS ๐
--alignedโ pair this with--separatorand it lines your output columns up all neat and pretty. the glow-up is real. ๐-a,--allโ shows you the internal LVs too. heads up bestie: these are the components of normal LVs โ think mirrors โ and they're not independently accessible, like, you can't mount them. they're backstage, not on stage. ๐ญ--binaryโ instead of the cute descriptive literal values, you get straight"0"or"1"for any column that has exactly two valid values to report. (and no, this doesn't count the"unknown"value, which is the one that means we literally could not determine the thing. ๐ญ)--commandprofile Stringโ the command profile to use for command configuration. peek atlvm.conf(5)for the whole lore on profiles. ๐--config Stringโ config settings just for this command. these override whateverlvm.conf(5)says. theStringarg uses the same format aslvm.conf(5), or you can use thesection/fieldsyntax. again,lvm.conf(5)has the details. โจ--configreport log|vg|lv|pv|pvseg|segโ seelvmreport(7). ๐ซก-d,--debug ...โ sets the debug level. repeat it 1 to 6 times to crank up how much detail gets sent to the log file and/or syslog (if configured). the more repeats, the more you see. ๐--devices PVโ restricts which devices are visible and accessible to the command. anything you don't list will look like it's just... missing. ๐ถโ๐ซ๏ธ you can repeat this option, or hand it a comma-separated list of devices. this overrides the devices file.--devicesfile Stringโ a file that lists the devices LVM should use. it must exist in/etc/lvm/devices/and it's managed with thelvmdevices(8)command. this overrides thelvm.conf(5)devices/devicesfileanddevices/use_devicesfilesettings.--driverloaded y|nโ set it to no and the command won't even try to use device-mapper. it's for testing and debugging, not for your everyday slay. ๐งช--foreignโ reports/displays foreign VGs that would otherwise be skipped.lvmsystemid(7)has the whole story about foreign VGs. ๐--headings none|abbrev|full|0|1|2โ the type of headings used in report output.noneor0: no headings at all.abbrevor1: column name abbreviations.fullor2: the full column names, no shrinking. ๐-h,--helpโ displays the help text. the classic. ๐-H,--historyโ includes historical LVs in the output. real talk though: this does nothing unless LVs were removed whilelvm.conf(5)metadata/record_lvs_historywas enabled. so if you turned that on too late... it's giving nothing. ๐--ignorelockingfailureโ lets a command carry on with read-only metadata operations even after locking failures. ๐ฉน--journal Stringโ records information in the systemd journal. this is in addition to whatever thelvm.conflog/journalsetting already enables. the values:command: record information about the command.output: record the default command output.debug: record full command debugging. ๐--lockopt Stringโ passes options for special cases over tolvmlockd. seelvmlockd(8)for more. ๐--logonlyโ suppresses the command report and shows you only the log report. just the logs, nothing else. ๐--longhelpโ displays the long help text. the deluxe edition. ๐--nameprefixesโ adds an"LVM2_"prefix plus the field name onto the output. super useful with--noheadingsto spit out a list offield=valuepairs that you can use to set environment variables (think: in udev rules). ๐ท๏ธ--noheadingsโ suppresses that headings line that's normally the first line of output. perfect if you're grepping the output. ๐--nohintsโ don't use the hints file to locate devices for PVs. when hints aren't used, a command may read more devices to find PVs. it'll still do the standard hint file invalidation where appropriate though. ๐ต๏ธ--nolockingโ disables locking. โ ๏ธ use with caution โ concurrent commands may produce incorrect results. you've been warned, bestie.--nosuffixโ suppresses the suffix on output sizes. use it with--units(excepthandH) if you're processing the output. ๐ข-o,--options Stringโ a comma-separated, ordered list of fields to display in columns. theStringarg syntax is:[+|-|#]Field1[,Field2 ...]. here's the breakdown: the prefix+appends the specified fields to the default fields,-removes the specified fields from the default fields, and#compacts specified fields (removing them when empty for all rows). use-o helpto see the list of all available fields. ๐๏ธ you can use separate lists of fields to add, remove or compact by repeating the-ooption:-o+field1,field2 -o-field3,field4 -o#field5. these lists are evaluated from left to right. use the field namelv_allto view all LV fields,vg_allfor all VG fields,pv_allfor all PV fields,seg_allfor all LV segment fields, andpvseg_allfor all PV segment fields. see thelvm.conf(5)report section for more config options, andlvmreport(7)for the full reporting lore. โจ--profile Stringโ an alias for--commandprofileor--metadataprofile, depending on the command. whichever one fits, it becomes that. ๐ช-q,--quiet ...โ suppresses output and log messages. it overrides--debugand--verbose. repeat it once and it also suppresses any prompts with the answer'no'. shhh era. ๐คซ--readonlyโ stops the command from making changes, including activation and metadata updates. (if you want read-only LVs, that's--permission r.) ๐ซ--reportformat basic|json|json_stdโ overrides the current output format for reports, which is normally set globally by thereport/output_formatsetting inlvm.conf(5).basicis the original format, with columns and rows. if there's more than one report per command, each report gets prefixed with the report name so you can tell them apart.jsonproduces report output in JSON format.json_stdalso produces JSON, but it's more compliant with the JSON standard. seelvmreport(7)for more. ๐งพ--rowsโ output columns as rows. yes, really, it just flips the whole thing. ๐--segmentsโ uses default columns that emphasize segment information. segments get the spotlight. ๐-S,--select Stringโ selects objects for processing and reporting based on the criteria you give it. the criteria syntax is described by--select helpandlvmreport(7). for reporting commands, one row is displayed for each object matching the criteria. see--options helpfor the selectable object fields. rows can be displayed with an additional"selected"field (-o selected) showing1if the row matches the selection and0otherwise. for non-reporting commands that process LVM entities, the selection is what's used to choose the items to process. ๐ฏ--separator Stringโ the string used to separate each column. useful if you're grepping the output. โ--sharedโ reports/displays shared VGs that would otherwise be skipped whenlvmlockdisn't being used on the host. seelvmlockd(8)for more about shared VGs. ๐ค-O,--sort Stringโ a comma-separated ordered list of columns to sort by. it replaces the default selection. put a-in front of any column for a reverse sort on that column. โ๏ธ-t,--testโ runs in test mode. commands will not update metadata. this is implemented by disabling all metadata writing but nevertheless returning success to the calling function. โ ๏ธ heads up: 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.--unbufferedโ produces output immediately, without sorting or aligning the columns properly. chaos mode, but make it fast. โก--units [Number]r|R|h|H|b|B|s|S|k|K|m|M|g|G|t|T|p|P|e|Eโ all sizes get output in these units: human-(r)eadable with a'<'rounding indicator, (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. you can also specify custom units, e.g.--units 3M. ๐--unquotedโ when used with--nameprefixes, the output values in thefield=valuepairs are not quoted. free the values! ๐๏ธ-v,--verbose ...โ sets the verbose level. repeat it 1 to 4 times to increase the detail of messages sent to stdout and stderr. chatty era. ๐ฌ--versionโ displays version information. ๐ท๏ธ-y,--yesโ don't prompt for confirmation interactively, just always assume the answer is yes. โ ๏ธ use with extreme caution. (and if you want an automatic no, that's-qq.)
๐ธ VARIABLES ๐ธ
ok so before we get into the bits, here's the little vocabulary list, bestie โ these are the words the man page is gonna keep throwing at you, so let's lock them in ๐
VGโ Volume Group name. Wanna know what counts as a valid name? Go peek atlvm(8), it's all there โจLVโ Logical Volume name. Same deal,lvm(8)has the valid-name tea. And heads up: an LV positional arg usually has the VG name and the LV name glued together, likeVG/LV๐ซถTagโ Tag name.lvm(8)explains tag names and also how you can use a tag in place of aVG,LVorPVโ iconic behaviour honestly ๐Stringโ it's just a string, ok ๐ญ the actual option description will tell you what kind of content goes in itSize[UNIT]โ okay this one's the main character, pay attention ๐
๐ Size[UNIT] and its whole situation
So Size is an input number, and it can carry an optional unit with it. Here's the part that trips people up lowkey: input units are ALWAYS base two values, no matter how you capitalise them. Like, 'k' and 'K' both mean 1024. Capitalisation does not matter here. none. zero. nada ๐
The default input unit is specified by a letter, followed by |UNIT.
UNIT is where you get to pick your other possible input units:
b|Bis bytess|Sis sectors of 512 bytesk|Kis KiBm|Mis MiBg|Gis GiBt|Tis TiBp|Pis PiBe|Eis EiB
โ ๏ธ do NOT confuse this with the output control --units, where capital letters mean a multiple of 1000. Different thing entirely, bestie, the capital letters switch teams depending on which one you're in ๐
๐ฆ ENVIRONMENT VARIABLES ๐ฆ
For the whole rundown on environment variables used by lvm, go read lvm(8) ๐
But here's one you'll be obsessed with: LVM_VG_NAME can generally be substituted for a required VG parameter. So yeah, set it and skip typing the VG name over and over โ it's giving convenience, periodt โจ
โญ NOTES โญ
okay gorgeous, this next bit is the lv_attr bits โ the little letter positions in the attributes field that tell you, at a glance, what the heck is going on with your LV. Ten positions, ten vibes, let's go ๐ง
- Volume type:
(C)ache,(m)irrored,(M)irrored without initial sync,(o)rigin,(O)rigin with merging snapshot, inte(g)rity,(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, v(d)o pool, v(D)o pool data, raid or pool m(e)tadataor pool metadata spare. - Permissions:
(w)ritable,(r)ead-only,(R)ead-only activation of non-read-only volume - Allocation policy:
(a)nywhere,(c)ontiguous,(i)nherited, c(l)ing,(n)ormal. This one gets capitalised if the volume is currently locked against allocation changes โ for example, duringpvmove(8). ๐ - fixed
(m)inor - State:
(a)ctive,(h)istorical,(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, thin-pool(c)heck needed, suspended thin-pool(C)heck needed,(X)unknown - device
(o)pen,(X)unknown - Target type:
(C)ache,(m)irror,(r)aid,(s)napshot,(t)hin,(u)nknown,(v)irtual. What this does is group together all the logical volumes that belong to the same kernel target. So like, mirror images, mirror logs, and mirrors themselves all show up as(m)if they're using the original device-mapper mirror kernel driver. Meanwhile the raid equivalents using the md raid kernel driver all show up as(r). Snapshots using the original device-mapper driver show up as(s); but snapshots of thin volumes using the new thin provisioning driver show up as(t). see, grouping. slay ๐ - Newly-allocated data blocks are overwritten with blocks of
(z)eroesbefore use. - Volume Health โ and rn there are five groups of attributes identified in here, so buckle up:
- Common ones for all Logical Volumes:
(p)artial,(X)unknown.(p)artialsignifies that one or more of the Physical Volumes this Logical Volume uses are missing from the system.(X)unknown signifies the status is unknown. ๐ญ - Related to RAID Logical Volumes:
(r)efresh or repair needed,(m)ismatches exist,(w)ritemostly.(r)efresh or repairsignifies that one or more of the Physical Volumes this RAID Logical Volume uses have suffered a write error. That write error could be from a temporary failure of that Physical Volume, or it could be a sign that it's failing. Either way: the device should be refreshed or replaced.(m)ismatchessignifies that the RAID logical volume has portions of the array that are not coherent โ those inconsistencies get detected by initiating a "check" on a RAID logical volume. (And psst, the scrubbing operations, "check" and "repair", can be performed on a RAID logical volume via the'lvchange'command. ๐ซถ)(w)ritemostlysignifies the devices in a RAID 1 logical volume that have been marked write-mostly. Re(s)hapingsignifies a RAID Logical Volume is either undergoing a stripe addition/removal, a stripe size or RAID algorithm change.(R)emove after reshapesignifies that freed striped raid images are still to be removed. - Related to Thin pool Logical Volumes:
(F)ailed, out of(D)ata space,(M)etadata read only.(F)ailedis set if a thin pool encounters serious failures and hence no further I/O is permitted at all. Out of(D)ata spaceis set if a thin pool has run out of data space.(M)etadata read onlysignifies that a thin pool encounters certain types of failures, in which case reads are still possible but no metadata changes are allowed. ๐ซ - Related to Thin Logical Volumes:
(F)ailed.(F)ailedis set when the related thin pool enters the Failed state and no further I/O is permitted at all. - Related to writecache logical volumes:
(E)rror.(E)rroris set whendm-writecachereports an error. ๐
- Common ones for all Logical Volumes:
- s
(k)ip activation: this volume is flagged to be skipped during activation.
๐ SEE ALSO ๐
go read these, bestie, they're all part of the family ๐ซถ
lvm(8),lvm.conf(5),lvmconfig(8),lvmdevices(8),pvchange(8),pvck(8),pvcreate(8),pvdisplay(8),pvmove(8),pvremove(8),pvresize(8),pvs(8),pvscan(8),vgcfgbackup(8),vgcfgrestore(8),vgchange(8),vgck(8),vgcreate(8),vgconvert(8),vgdisplay(8),vgexport(8),vgextend(8),vgimport(8),vgimportclone(8),vgimportdevices(8),vgmerge(8),vgmknodes(8),vgreduce(8),vgremove(8),vgrename(8),vgs(8),vgscan(8),vgsplit(8),lvcreate(8),lvchange(8),lvconvert(8),lvdisplay(8),lvextend(8),lvreduce(8),lvremove(8),lvrename(8),lvresize(8),lvs(8),lvscan(8),lvm-fullreport(8),lvm-lvpoll(8),blkdeactivate(8),lvmdump(8),dmeventd(8),lvmpolld(8),lvmlockd(8),lvmlockctl(8),lvmdbusd(8),fsadm(8),lvmsystemid(7),lvmreport(7),lvmcache(7),lvmraid(7),lvmthin(7),lvmvdo(7),lvmautoactivation(7)
and that's the whole page, bestie, you ate that ๐ this one's LVM TOOLS 2.03.44(2), dated 2026-10-27, brought to you by the lovely people at Red Hat, Inc. โ take a bow, you read the entire lvs(8) man page and now your LVs have nowhere to hide ๐โจ๐
๐ฆ where this page comes from
- arch rolling: lvm2 2.03.44-1 ยท GPL-2.0-only AND LGPL-2.1-only
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms