{
    "mode": "man",
    "parameter": "lvm",
    "section": "8",
    "url": "https://www.chedong.com/phpMan.php/man/lvm/8/json",
    "generated": "2026-06-02T21:26:46Z",
    "synopsis": "lvm [command|file]",
    "sections": {
        "NAME": {
            "content": "lvm — LVM2 tools\n",
            "subsections": []
        },
        "SYNOPSIS": {
            "content": "lvm [command|file]\n",
            "subsections": []
        },
        "DESCRIPTION": {
            "content": "The Logical Volume Manager (LVM) provides tools to create virtual block devices from physical\ndevices.  Virtual devices may be easier to manage than physical devices, and can  have  capa‐\nbilities  beyond what the physical devices provide themselves.  A Volume Group (VG) is a col‐\nlection of one or more physical devices, each called a Physical Volume (PV).  A Logical  Vol‐\nume  (LV)  is  a  virtual  block device that can be used by the system or applications.  Each\nblock of data in an LV is stored on one or more PV in the VG, according to algorithms  imple‐\nmented by Device Mapper (DM) in the kernel.\n\nThe lvm command, and other commands listed below, are the command-line tools for LVM.  A sep‐\narate manual page describes each command in detail.\n\nIf lvm is invoked with no arguments it presents a readline prompt (assuming it  was  compiled\nwith  readline support).  LVM commands may be entered interactively at this prompt with read‐\nline facilities including history and command name and option  completion.   Refer  to  read‐‐\nline(3) for details.\n\nIf  lvm is invoked with argv[0] set to the name of a specific LVM command (for example by us‐\ning a hard or soft link) it acts as that command.\n\nOn invocation, lvm requires that only the standard file descriptors stdin, stdout and  stderr\nare  available.   If  others are found, they get closed and messages are issued warning about\nthe leak.  This warning can be  suppressed  by  setting  the  environment  variable  LVMSUP‐‐\nPRESSFDWARNINGS.\n\nWhere  commands  take  VG  or  LV  names as arguments, the full path name is optional.  An LV\ncalled \"lvol0\" in a VG called \"vg0\" can be specified as \"vg0/lvol0\".  Where a list of VGs  is\nrequired  but  is  left empty, a list of all VGs will be substituted.  Where a list of LVs is\nrequired but a VG is given, a list of all the LVs in that VG will be substituted.  So  lvdis‐‐\nplay vg0 will display all the LVs in \"vg0\".  Tags can also be used - see --addtag below.\n\nOne  advantage  of using the built-in shell is that configuration information gets cached in‐\nternally between commands.\n\nA file containing a simple script with one command per line can also be given on the  command\nline.  The script can also be executed directly if the first line is #! followed by the abso‐\nlute path of lvm.\n\nAdditional hyphens within option names are ignored.  For example, --readonly and  --read-only\nare both accepted.\n",
            "subsections": []
        },
        "BUILT-IN COMMANDS": {
            "content": "The  following  commands  are  built  into  lvm  without  links normally being created in the\nfilesystem for them.\n\nconfig        The same as lvmconfig(8) below.\ndevtypes      Display the recognised built-in block device types.\ndumpconfig    The same as lvmconfig(8) below.\nformats       Display recognised metadata formats.\nfullreport    Report information about PVs, PV segments, VGs, LVs and  LV  segments,  all  at\nonce.\nhelp          Display the help text.\nlastlog       Display log report of last command run in LVM shell if command log reporting is\nenabled.\nlvpoll        Complete lvmpolld operations (Internal command).\nsegtypes      Display recognised Logical Volume segment types.\nsystemid      Display any system ID currently set on this host.\ntags          Display any tags defined on this host.\nversion       Display version information.\n",
            "subsections": []
        },
        "COMMANDS": {
            "content": "The following commands implement the core LVM functionality.\n\npvchange      Change attributes of a Physical Volume.\npvck          Check Physical Volume metadata.\npvcreate      Initialize a disk or partition for use by LVM.\npvdisplay     Display attributes of a Physical Volume.\npvmove        Move Physical Extents.\npvremove      Remove a Physical Volume.\npvresize      Resize a disk or partition in use by LVM2.\npvs           Report information about Physical Volumes.\npvscan        Scan all disks for Physical Volumes.\nvgcfgbackup   Backup Volume Group descriptor area.\nvgcfgrestore  Restore Volume Group descriptor area.\nvgchange      Change attributes of a Volume Group.\nvgck          Check Volume Group metadata.\nvgconvert     Convert Volume Group metadata format.\nvgcreate      Create a Volume Group.\nvgdisplay     Display attributes of Volume Groups.\nvgexport      Make volume Groups unknown to the system.\nvgextend      Add Physical Volumes to a Volume Group.\nvgimport      Make exported Volume Groups known to the system.\nvgimportclone Import and rename duplicated Volume Group (e.g. a hardware snapshot).\nvgmerge       Merge two Volume Groups.\nvgmknodes     Recreate Volume Group directory and Logical Volume special files\nvgreduce      Reduce a Volume Group by removing one or more Physical Volumes.\nvgremove      Remove a Volume Group.\nvgrename      Rename a Volume Group.\nvgs           Report information about Volume Groups.\nvgscan        Scan all disks for Volume Groups.\nvgsplit       Split a Volume Group into two, moving any logical volumes from one Volume Group\nto another by moving entire Physical Volumes.\nlvchange      Change attributes of a Logical Volume.\nlvconvert     Convert a Logical Volume from linear to mirror or snapshot.\nlvcreate      Create a Logical Volume in an existing Volume Group.\nlvdisplay     Display attributes of a Logical Volume.\nlvextend      Extend the size of a Logical Volume.\nlvmconfig     Display  the  configuration information after loading lvm.conf(5) and any other\nconfiguration files.\nlvmdiskscan   Scan for all devices visible to LVM2.\nlvmdump       Create lvm2 information dumps for diagnostic purposes.\nlvreduce      Reduce the size of a Logical Volume.\nlvremove      Remove a Logical Volume.\nlvrename      Rename a Logical Volume.\nlvresize      Resize a Logical Volume.\nlvs           Report information about Logical Volumes.\nlvscan        Scan (all disks) for Logical Volumes.\n\nThe following LVM1 commands are not implemented in LVM2: lvmchange, lvmsadc, lvmsar,  pvdata.\nFor performance metrics, use dmstats(8) or to manipulate the kernel device-mapper driver used\nby LVM2 directly, use dmsetup(8).\n",
            "subsections": []
        },
        "VALID NAMES": {
            "content": "The valid characters for VG and LV names are: a-z A-Z 0-9 +  . -\n\nVG names cannot begin with a hyphen.  The name of a new LV also cannot begin with  a  hyphen.\nHowever,  if the configuration setting metadata/recordlvshistory is enabled then an LV name\nwith a hyphen as a prefix indicates that, although the LV was  removed,  it  is  still  being\ntracked  because it forms part of the history of at least one LV that is still present.  This\nhelps to record the ancestry of thin snapshots even after some links in the chain  have  been\nremoved.   A  reference  to the historical LV 'lvol1' in VG 'vg00' would be 'vg00/\\-lvol1' or\njust '-lvol1' if the VG is already set.  (The latter form must be preceded by '--' to  termi‐\nnate command line option processing before reaching this argument.)\n\nThere are also various reserved names that are used internally by lvm that can not be used as\nLV or VG names. A VG cannot be called anything that exists in /dev/ at the time of  creation,\nnor  can it be called '.' or '..'.  An LV cannot be called '.', '..', 'snapshot' or 'pvmove'.\nThe LV name may also not contain any of the following strings: 'cdata', 'cmeta',  'corig',\n'mlog',  'mimage',  'pmspare',  'rimage',  'rmeta',  'tdata',  'tmeta',  'vorigin' or\n'vdata'.  A directory bearing the name of each Volume Group is created under /dev  when  any\nof its Logical Volumes are activated.  Each active Logical Volume is accessible from this di‐\nrectory as a symbolic link leading to a device node.  Links or nodes in /dev/mapper  are  in‐\ntended  only  for  internal  use and the precise format and escaping might change between re‐\nleases and distributions.  Other  software  and  scripts  should  use  the  /dev/VolumeGroup‐\nName/LogicalVolumeName  format to reduce the chance of needing amendment when the software is\nupdated.  Should you need to process the node names  in  /dev/mapper,  you  may  use  dmsetup\nsplitname to separate out the original VG, LV and internal layer names.\n",
            "subsections": []
        },
        "UNIQUE NAMES": {
            "content": "VG  names  should be unique.  vgcreate will produce an error if the specified VG name matches\nan existing VG name.  However, there are cases where different VGs with the same name can ap‐\npear to LVM, e.g. after moving disks or changing filters.\n\nWhen  VGs with the same name exist, commands operating on all VGs will include all of the VGs\nwith the same name.  If the ambiguous VG name is specified on the command line,  the  command\nwill produce an error.  The error states that multiple VGs exist with the specified name.  To\nprocess one of the VGs specifically, the --select option should be used with the UUID of  the\nintended VG: '--select vguuid=<uuid>'.\n\nAn  exception  is  if  all  but  one  of the VGs with the shared name is foreign (see lvmsys‐‐\ntemid(7).)  In this case, the one VG that is not foreign is assumed to be the intended VG and\nis processed.\n\nLV  names  are  unique  within a VG.  The name of an historical LV cannot be reused until the\nhistorical LV has itself been removed or renamed.\n\n",
            "subsections": []
        },
        "ALLOCATION": {
            "content": "When an operation needs to allocate Physical Extents for one or  more  Logical  Volumes,  the\ntools proceed as follows:\n\nFirst  of  all,  they generate the complete set of unallocated Physical Extents in the Volume\nGroup.  If any ranges of Physical Extents are supplied at the end of the command  line,  only\nunallocated  Physical  Extents within those ranges on the specified Physical Volumes are con‐\nsidered.\n\nThen they try each allocation policy in turn, starting with the strictest policy (contiguous)\nand  ending  with the allocation policy specified using --alloc or set as the default for the\nparticular Logical Volume or Volume Group concerned.  For each policy, working from the  low‐\nest-numbered  Logical  Extent of the empty Logical Volume space that needs to be filled, they\nallocate as much space as possible according to the restrictions imposed by the  policy.   If\nmore space is needed, they move on to the next policy.\n\nThe restrictions are as follows:\n\nContiguous  requires  that  the physical location of any Logical Extent that is not the first\nLogical Extent of a Logical Volume is adjacent to the physical location of the Logical Extent\nimmediately preceding it.\n\nCling  requires that the Physical Volume used for any Logical Extent to be added to an exist‐\ning Logical Volume is already in use by at least one Logical Extent earlier in  that  Logical\nVolume.  If the configuration parameter allocation/clingtaglist is defined, then two Physi‐\ncal Volumes are considered to match if any of the listed tags is  present  on  both  Physical\nVolumes.  This allows groups of Physical Volumes with similar properties (such as their phys‐\nical location) to be tagged and treated as equivalent for allocation purposes.\n\nWhen a Logical Volume is striped or mirrored, the above  restrictions  are  applied  indepen‐\ndently to each stripe or mirror image (leg) that needs space.\n\nNormal  will  not  choose a Physical Extent that shares the same Physical Volume as a Logical\nExtent already allocated to a parallel Logical Volume (i.e. a different stripe or mirror  im‐\nage/leg) at the same offset within that parallel Logical Volume.\n\nWhen  allocating  a  mirror  log at the same time as Logical Volumes to hold the mirror data,\nNormal will first try to select different Physical Volumes for the  log  and  the  data.   If\nthat's not possible and the allocation/mirrorlogsrequireseparatepvs configuration parame‐\nter is set to 0, it will then allow the log to share Physical  Volume(s)  with  part  of  the\ndata.\n\nWhen  allocating  thin  pool metadata, similar considerations to those of a mirror log in the\nlast paragraph apply based on the value  of  the  allocation/thinpoolmetadatarequiresepa‐‐\nratepvs configuration parameter.\n\nIf  you  rely  upon  any layout behaviour beyond that documented here, be aware that it might\nchange in future versions of the code.\n\nFor example, if you supply on the command line two empty Physical Volumes that have an  iden‐\ntical  number  of  free Physical Extents available for allocation, the current code considers\nusing each of them in the order they are listed, but there is no guarantee  that  future  re‐\nleases  will  maintain  that  property.  If it is important to obtain a specific layout for a\nparticular Logical Volume, then you should build it up through a sequence of lvcreate(8)  and\nlvconvert(8)  steps such that the restrictions described above applied to each step leave the\ntools no discretion over the layout.\n\nTo view the way the allocation process currently works in any specific case, read  the  debug\nlogging output, for example by adding -vvvv to a command.\n",
            "subsections": []
        },
        "LOGICAL VOLUME TYPES": {
            "content": "Some logical volume types are simple to create and can be done with a single lvcreate(8) com‐\nmand.  The linear and striped logical volume types are an example  of  this.   Other  logical\nvolume  types  may require more than one command to create.  The cache (lvmcache(7)) and thin\nprovisioning (lvmthin(7)) types are examples of this.\n",
            "subsections": []
        },
        "DIAGNOSTICS": {
            "content": "All tools return a status code of zero on success or non-zero on failure.  The non-zero codes\ndistinguish  only  between the broad categories of unrecognised commands, problems processing\nthe command line arguments and any other failures.  As LVM remains under active  development,\nthe  code  used  in  a specific case occasionally changes between releases.  Message text may\nalso change.\n",
            "subsections": []
        },
        "ENVIRONMENT VARIABLES": {
            "content": "HOME   Directory containing .lvmhistory if the internal readline shell is invoked.\n\nLVMOUTFD\nFile descriptor to use for common output from LVM commands.\n\nLVMERRFD\nFile descriptor to use for error output from LVM commands.\n\nLVMREPORTFD\nFile descriptor to use for report output from LVM commands.\n\nLVMCOMMANDPROFILE\nName of default command profile to use for LVM commands. This profile is overriden  by\ndirect use of --commandprofile command line option.\n\nLVMRUNBYDMEVENTD\nThis  variable is normally set by dmeventd plugin to inform lvm2 command it is running\nfrom dmeventd plugin so lvm2 takes some extra action to avoid comunication  and  dead‐\nlocks with dmeventd.\n\nLVMSYSTEMDIR\nDirectory containing lvm.conf(5) and other LVM system files.  Defaults to \"/etc/lvm\".\n\nLVMSUPPRESSFDWARNINGS\nSuppress warnings about unexpected file descriptors passed into LVM.\n\nLVMSUPPRESSSYSLOG\nSuppress contacting syslog.\n\nLVMVGNAME\nThe  Volume  Group  name  that  is  assumed for any reference to a Logical Volume that\ndoesn't specify a path.  Not set by default.\n\nLVMLVMPOLLDPIDFILE\nPath to the file that stores the lvmpolld process ID.\n\nLVMLVMPOLLDSOCKET\nPath to the socket used to communicate with lvmpolld..\n\nLVMLOGFILEEPOCH\nA string of up to 32 letters appended to the log filename and followed by the  process\nID  and  a  startup  timestamp using this format string \"%s%d%llu\".  When set, each\nprocess logs to a separate file.\n\nLVMLOGFILEMAXLINES\nIf more than this number of lines are sent to the log file, the command gets  aborted.\nAutomated tests use this to terminate looping commands.\n\nLVMEXPECTEDEXITSTATUS\nThe  status  anticipated when the process exits.  Use \">N\" to match any status greater\nthan N.  If the actual exit status matches and a log file got produced, it is deleted.\nLVMLOGFILEEPOCH  and LVMEXPECTEDEXITSTATUS together allow automated test scripts\nto discard uninteresting log data.\n\nLVMSUPPRESSLOCKINGFAILUREMESSAGES\nUsed to suppress warning messages when the configured locking is known to be  unavail‐\nable.\n\nDMABORTONINTERNALERRORS\nAbort processing if the code detects a non-fatal internal error.\n\nDMDISABLEUDEV\nAvoid interaction with udev.  LVM will manage the relevant nodes in /dev directly.\n\nDMDEBUGWITHLINENUMBERS\nPrepends source file name and code line number with libdm debugging.\n",
            "subsections": []
        },
        "FILES": {
            "content": "/etc/lvm/lvm.conf\n$HOME/.lvmhistory\n",
            "subsections": []
        },
        "SEE ALSO": {
            "content": "lvm(8) lvm.conf(5) lvmconfig(8)\n\npvchange(8)   pvck(8)  pvcreate(8)  pvdisplay(8)  pvmove(8)  pvremove(8)  pvresize(8)  pvs(8)\npvscan(8)\n\nvgcfgbackup(8) vgcfgrestore(8)  vgchange(8)  vgck(8)  vgcreate(8)  vgconvert(8)  vgdisplay(8)\nvgexport(8)  vgextend(8)  vgimport(8)  vgimportclone(8)  vgmerge(8)  vgmknodes(8) vgreduce(8)\nvgremove(8) vgrename(8) vgs(8) vgscan(8) vgsplit(8)\n\nlvcreate(8)  lvchange(8)  lvconvert(8)  lvdisplay(8)  lvextend(8)   lvreduce(8)   lvremove(8)\nlvrename(8) lvresize(8) lvs(8) lvscan(8)\n\nlvm-fullreport(8) lvm-lvpoll(8) lvm2-activation-generator(8) blkdeactivate(8) lvmdump(8)\n\ndmeventd(8) lvmpolld(8) lvmlockd(8) lvmlockctl(8) cmirrord(8) lvmdbusd(8)\n\nlvmsystemid(7) lvmreport(7) lvmraid(7) lvmthin(7) lvmcache(7)\n\ndmsetup(8), dmstats(8), readline(3)\n\n\n\nRed Hat, Inc.                     LVM TOOLS 2.03.11(2) (2021-01-08)                           LVM(8)",
            "subsections": []
        }
    },
    "summary": "lvm — LVM2 tools",
    "flags": [],
    "examples": [],
    "see_also": [
        {
            "name": "lvm.conf",
            "section": "5",
            "url": "https://www.chedong.com/phpMan.php/man/lvm.conf/5/json"
        },
        {
            "name": "lvmconfig",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/lvmconfig/8/json"
        },
        {
            "name": "pvchange",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/pvchange/8/json"
        },
        {
            "name": "pvck",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/pvck/8/json"
        },
        {
            "name": "pvcreate",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/pvcreate/8/json"
        },
        {
            "name": "pvdisplay",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/pvdisplay/8/json"
        },
        {
            "name": "pvmove",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/pvmove/8/json"
        },
        {
            "name": "pvremove",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/pvremove/8/json"
        },
        {
            "name": "pvresize",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/pvresize/8/json"
        },
        {
            "name": "pvs",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/pvs/8/json"
        },
        {
            "name": "pvscan",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/pvscan/8/json"
        },
        {
            "name": "vgcfgbackup",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/vgcfgbackup/8/json"
        },
        {
            "name": "vgcfgrestore",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/vgcfgrestore/8/json"
        },
        {
            "name": "vgchange",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/vgchange/8/json"
        },
        {
            "name": "vgck",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/vgck/8/json"
        },
        {
            "name": "vgcreate",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/vgcreate/8/json"
        },
        {
            "name": "vgconvert",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/vgconvert/8/json"
        },
        {
            "name": "vgdisplay",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/vgdisplay/8/json"
        },
        {
            "name": "vgexport",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/vgexport/8/json"
        },
        {
            "name": "vgextend",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/vgextend/8/json"
        },
        {
            "name": "vgimport",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/vgimport/8/json"
        },
        {
            "name": "vgimportclone",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/vgimportclone/8/json"
        },
        {
            "name": "vgmerge",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/vgmerge/8/json"
        },
        {
            "name": "vgmknodes",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/vgmknodes/8/json"
        },
        {
            "name": "vgreduce",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/vgreduce/8/json"
        },
        {
            "name": "vgremove",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/vgremove/8/json"
        },
        {
            "name": "vgrename",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/vgrename/8/json"
        },
        {
            "name": "vgs",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/vgs/8/json"
        },
        {
            "name": "vgscan",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/vgscan/8/json"
        },
        {
            "name": "vgsplit",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/vgsplit/8/json"
        },
        {
            "name": "lvrename",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/lvrename/8/json"
        },
        {
            "name": "lvresize",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/lvresize/8/json"
        },
        {
            "name": "lvs",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/lvs/8/json"
        },
        {
            "name": "lvscan",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/lvscan/8/json"
        },
        {
            "name": "lvm-fullreport",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/lvm-fullreport/8/json"
        },
        {
            "name": "lvm-lvpoll",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/lvm-lvpoll/8/json"
        },
        {
            "name": "lvm2-activation-generator",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/lvm2-activation-generator/8/json"
        },
        {
            "name": "blkdeactivate",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/blkdeactivate/8/json"
        },
        {
            "name": "lvmdump",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/lvmdump/8/json"
        },
        {
            "name": "dmeventd",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/dmeventd/8/json"
        },
        {
            "name": "lvmpolld",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/lvmpolld/8/json"
        },
        {
            "name": "lvmlockd",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/lvmlockd/8/json"
        },
        {
            "name": "lvmlockctl",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/lvmlockctl/8/json"
        },
        {
            "name": "cmirrord",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/cmirrord/8/json"
        },
        {
            "name": "lvmdbusd",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/lvmdbusd/8/json"
        },
        {
            "name": "lvmsystemid",
            "section": "7",
            "url": "https://www.chedong.com/phpMan.php/man/lvmsystemid/7/json"
        },
        {
            "name": "lvmreport",
            "section": "7",
            "url": "https://www.chedong.com/phpMan.php/man/lvmreport/7/json"
        },
        {
            "name": "lvmraid",
            "section": "7",
            "url": "https://www.chedong.com/phpMan.php/man/lvmraid/7/json"
        },
        {
            "name": "lvmthin",
            "section": "7",
            "url": "https://www.chedong.com/phpMan.php/man/lvmthin/7/json"
        },
        {
            "name": "lvmcache",
            "section": "7",
            "url": "https://www.chedong.com/phpMan.php/man/lvmcache/7/json"
        },
        {
            "name": "dmsetup",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/dmsetup/8/json"
        },
        {
            "name": "dmstats",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/dmstats/8/json"
        },
        {
            "name": "readline",
            "section": "3",
            "url": "https://www.chedong.com/phpMan.php/man/readline/3/json"
        }
    ],
    "tldr": {
        "source": "official",
        "description": "Manage physical volumes, volume groups, and logical volumes using the Logical Volume Manager (LVM) interactive shell.",
        "examples": [
            {
                "description": "Start the Logical Volume Manager interactive shell",
                "command": "sudo lvm"
            },
            {
                "description": "Initialize a drive or partition to be used as a physical volume",
                "command": "sudo lvm pvcreate {{/dev/sdXY}}"
            },
            {
                "description": "Display information about physical volumes",
                "command": "sudo lvm pvdisplay"
            },
            {
                "description": "Create a volume group called vg1 from the physical volume on `/dev/sdXY`",
                "command": "sudo lvm vgcreate {{vg1}} {{/dev/sdXY}}"
            },
            {
                "description": "Display information about volume groups",
                "command": "sudo lvm vgdisplay"
            },
            {
                "description": "Create a logical volume with size 10G from volume group vg1",
                "command": "sudo lvm lvcreate {{-L|--size}} {{10G}} {{vg1}}"
            },
            {
                "description": "Display information about logical volumes",
                "command": "sudo lvm lvdisplay"
            },
            {
                "description": "Display help for a specific command",
                "command": "lvm help {{command}}"
            }
        ]
    }
}