# lvextend

## NAME



           lvextend — Add space to a logical volume
    


## SYNOPSIS



           **lvextend** _option_args position_args_
               [ _option_args_ ]
               [ _position_args_ ]
    
               **--alloc contiguous** |**cling** |**cling_by_tags** |**normal** |**anywhere** |**inherit**
            **-A** |**--autobackup y** |**n**
               **--commandprofile** _String_
               **--config** _String_
            **-d** |**--debug**
               **--devices** _PV_
               **--devicesfile** _String_
               **--driverloaded y** |**n**
            **-l** |**--extents**[**+**]_Number_[PERCENT]
            **-f** |**--force**
            **-h** |**--help**
               **--journal** _String_
               **--lockopt** _String_
               **--longhelp**
            **-m** |**--mirrors** _Number_
            **-n** |**--nofsck**
               **--nohints**
               **--nolocking**
               **--nosync**
               **--noudevsync**
               **--poolmetadatasize**[**+**]_Size_[m|UNIT]
               **--profile** _String_
            **-q** |**--quiet**
               **--reportformat basic** |**json**
            **-r** |**--resizefs**
            **-L** |**--size**[**+**]_Size_[m|UNIT]
            **-i** |**--stripes** _Number_
            **-I** |**--stripesize** _Size_[k|UNIT]
            **-t** |**--test**
               **--type linear** |**striped** |**snapshot** |**raid** |**mirror** |**thin** |**thin-pool** |**vdo** |
           **vdo-pool** |**cache** |**cache-pool** |**writecache**
               **--usepolicies**
            **-v** |**--verbose**
               **--version**
            **-y** |**--yes**
    


## DESCRIPTION



           lvextend extends the size of an LV. This requires allocating logi‐
           cal  extents from the VG's free physical extents. If the extension
           adds a new LV segment, the new segment will use the existing  seg‐
           ment type of the LV.
    
           Extending a copy-on-write snapshot LV adds space for COW blocks.
    
           Use  lvconvert(8) to change the number of data images in a RAID or
           mirrored LV.
    
           In the usage section below, **--size** _Size_ can be replaced with **--ex‐**
           **tents** _Number_.  See both descriptions the options section.
    


## USAGE



           Extend an LV by a specified size.
    
           **lvextend -L** |**--size**[**+**]_Size_[m|UNIT] _LV_
               [ **-l** |**--extents**[**+**]_Number_[PERCENT] ]
               [ **-r** |**--resizefs**]
               [ **-i** |**--stripes** _Number_ ]
               [ **-I** |**--stripesize** _Size_[k|UNIT] ]
               [    **--poolmetadatasize**[**+**]_Size_[m|UNIT] ]
               [ COMMON_OPTIONS ]
               [ _PV_ ... ]
    
           —
    
           Extend an LV by specified PV extents.
    
           **lvextend** _LV PV_ ...
               [ **-r** |**--resizefs**]
               [ **-i** |**--stripes** _Number_ ]
               [ **-I** |**--stripesize** _Size_[k|UNIT] ]
               [ COMMON_OPTIONS ]
    
           —
    
           Extend a pool metadata SubLV by a specified size.
    
           **lvextend --poolmetadatasize**[**+**]_Size_[m|UNIT] _LV1_
               [ **-i** |**--stripes** _Number_ ]
               [ **-I** |**--stripesize** _Size_[k|UNIT] ]
               [ COMMON_OPTIONS ]
               [ _PV_ ... ]
    
               LV1 types: thinpool
    
           —
    
           Extend an LV according to a predefined policy.
    
           **lvextend --usepolicies** _LV1_
               [ **-r** |**--resizefs**]
               [ COMMON_OPTIONS ]
               [ _PV_ ... ]
    
               LV1 types: snapshot thinpool
    
           —
    
           Common options for command:
               [ **-A** |**--autobackup y** |**n**]
               [ **-f** |**--force**]
               [ **-m** |**--mirrors** _Number_ ]
               [ **-n** |**--nofsck**]
               [    **--alloc contiguous** |**cling** |**cling_by_tags** |**normal** |**anywhere** |
               **inherit**]
               [    **--nosync**]
               [    **--noudevsync**]
               [    **--reportformat basic** |**json**]
               [    **--type linear** |**striped** |**snapshot** |**raid** |**mirror** |**thin** |
               **thin-pool** |**vdo** |**vdo-pool** |**cache** |**cache-pool** |**writecache**]
    
           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



    
           **--alloc contiguous** |**cling** |**cling_by_tags** |**normal** |**anywhere** |**inherit**
                  Determines the allocation policy when a  command  needs  to
                  allocate Physical Extents (PEs) from the VG. Each VG and LV
                  has   an  allocation  policy  which  can  be  changed  with
                  vgchange/lvchange, or overridden on the command line.  **nor‐**
                  **mal** applies common sense rules such as not placing parallel
                  stripes on the same PV.  **inherit** applies the VG  policy  to
                  an  LV.   **contiguous** requires new PEs be placed adjacent to
                  existing PEs.  **cling** places new PEs on the same PV  as  ex‐
                  isting PEs in the same stripe of the LV.  If there are suf‐
                  ficient  PEs  for  an  allocation,  but normal does not use
                  them, **anywhere** will use them even  if  it  reduces  perfor‐
                  mance, e.g. by placing two stripes on the same PV.  Option‐
                  al  positional PV args on the command line can also be used
                  to limit which PVs the command  will  use  for  allocation.
                  See lvm(8) for more information about allocation.
    
           **-A** |**--autobackup y** |**n**
                  Specifies if metadata should be backed up automatically af‐
                  ter  a  change.   Enabling  this  is  strongly advised! See
                  vgcfgbackup(8) for more information.
    
           **--commandprofile** _String_
                  The command profile to use for command configuration.   See
                  lvm.conf(5) for more information about profiles.
    
           **--config** _String_
                  Config settings for the command. These override lvm.conf(5)
                  settings.    The   String  arg  uses  the  same  format  as
                  lvm.conf(5),  or  may  use   section/field   syntax.    See
                  lvm.conf(5) for more information about config.
    
           **-d** |**--debug**...
                  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).
    
           **--devices** _PV_
                  Devices  that  the  command can use. This option can be re‐
                  peated or accepts a comma separated list of  devices.  This
                  overrides the devices file.
    
           **--devicesfile** _String_
                  A  file listing devices that LVM should use.  The file must
                  exist  in  _/etc/lvm/devices/_  and  is  managed   with   the
                  lvmdevices(8)  command.  This overrides the lvm.conf(5) **de‐**
                  **vices/devicesfile** and **devices/use_devicesfile** settings.
    
           **--driverloaded y** |**n**
                  If set to no, the command will not attempt to  use  device-
                  mapper.  For testing and debugging.
    
           **-l** |**--extents**[**+**]_Number_[PERCENT]
                  Specifies  the  new size of the LV in logical extents.  The
                  --size and --extents options are alternate methods of spec‐
                  ifying size.  The total number  of  physical  extents  used
                  will be greater when redundant data is needed for RAID lev‐
                  els.   An alternate syntax allows the size to be determined
                  indirectly as a percentage of the size of a related VG, LV,
                  or set of PVs. The suffix **%VG** denotes the total size of the
                  VG, the suffix **%FREE** the remaining free space  in  the  VG,
                  and  the  suffix  **%PVS** the free space in the specified PVs.
                  For a snapshot, the size can be expressed as  a  percentage
                  of  the total size of the origin LV with the suffix **%ORIGIN**
                  (**100%ORIGIN** provides space for the whole origin).  When ex‐
                  pressed as a percentage, the size defines  an  upper  limit
                  for  the  number of logical extents in the new LV. The pre‐
                  cise number of logical extents in the new LV is not  deter‐
                  mined  until the command has completed.  When the plus **+** or
                  minus **-** prefix is used, the value is not an absolute  size,
                  but  is  relative  and added or subtracted from the current
                  size.
    
           **-f** |**--force**...
                  Override various  checks,  confirmations  and  protections.
                  Use with extreme caution.
    
           **-h** |**--help**
                  Display help text.
    
           **--journal** _String_
                  Record  information  in the systemd journal.  This informa‐
                  tion is in addition to information enabled by the  lvm.conf
                  log/journal setting.  command: record information about the
                  command.   output:  record the default command output.  de‐
                  bug: record full command debugging.
    
           **--lockopt** _String_
                  Used to pass options for special cases  to  lvmlockd.   See
                  lvmlockd(8) for more information.
    
           **--longhelp**
                  Display long help text.
    
           **-m** |**--mirrors** _Number_
                  Not used.
    
           **-n** |**--nofsck**
                  Do   not  perform  fsck  before  resizing  filesystem  when
                  filesystem requires it. You may need to use --force to pro‐
                  ceed with this option.
    
           **--nohints**
                  Do not use the hints file to locate devices for PVs. A com‐
                  mand may read more devices to find PVs when hints  are  not
                  used. The command will still perform standard hint file in‐
                  validation where appropriate.
    
           **--nolocking**
                  Disable locking.
    
           **--nosync**
                  Causes  the  creation  of  mirror,  raid1, raid4, raid5 and
                  raid10 to skip the initial synchronization. In case of mir‐
                  ror, raid1 and raid10, any data written afterwards will  be
                  mirrored,  but the original contents will not be copied. In
                  case of raid4 and raid5, no parity blocks will be  written,
                  though any data written afterwards will cause parity blocks
                  to  be  stored.   This is useful for skipping a potentially
                  long and resource intensive initial sync of an  empty  mir‐
                  ror/raid1/raid4/raid5  and  raid10  LV.  This option is not
                  valid for raid6, because raid6 relies on proper  parity  (P
                  and  Q Syndromes) being created during initial synchroniza‐
                  tion in order to reconstruct proper user date  in  case  of
                  device  failures.   raid0 and raid0_meta do not provide any
                  data copies or parity support and thus do not support  ini‐
                  tial synchronization.
    
           **--noudevsync**
                  Disables  udev  synchronisation.  The process will not wait
                  for notification from udev. It will  continue  irrespective
                  of any possible udev processing in the background. Only use
                  this  if  udev  is not running or has rules that ignore the
                  devices LVM creates.
    
           **--poolmetadatasize**[**+**]_Size_[m|UNIT]
                  Specifies the new size of the pool metadata LV.   The  plus
                  prefix  **+** can be used, in which case the value is added to
                  the current size.
    
           **--profile** _String_
                  An alias for --commandprofile or --metadataprofile, depend‐
                  ing on the command.
    
           **-q** |**--quiet**...
                  Suppress output and log  messages.  Overrides  --debug  and
                  --verbose.   Repeat  once to also suppress any prompts with
                  answer 'no'.
    
           **--reportformat basic** |**json**
                  Overrides current output format for reports  which  is  de‐
                  fined  globally  by  the  report/output_format  setting  in
                  lvm.conf(5).  **basic** is the original format with columns and
                  rows.  If there is more than one report per  command,  each
                  report is prefixed with the report name for identification.
                  **json** produces   report   output   in   JSON  format.  See
                  lvmreport(7) for more information.
    
           **-r** |**--resizefs**
                  Resize underlying filesystem together  with  the  LV  using
                  fsadm(8).
    
           **-L** |**--size**[**+**]_Size_[m|UNIT]
                  Specifies the new size of the LV.  The --size and --extents
                  options  are alternate methods of specifying size.  The to‐
                  tal number of physical extents used will  be  greater  when
                  redundant  data is needed for RAID levels.  When the plus **+**
                  or minus **-** prefix is used, the value  is  not  an  absolute
                  size, but is relative and added or subtracted from the cur‐
                  rent size.
    
           **-i** |**--stripes** _Number_
                  Specifies  the  number  of stripes in a striped LV. This is
                  the number of PVs (devices) that a  striped  LV  is  spread
                  across.  Data  that  appears sequential in the LV is spread
                  across multiple devices in units of the  stripe  size  (see
                  --stripesize).  This  does  not  change  existing allocated
                  space, but only applies to space  being  allocated  by  the
                  command.   When  creating a RAID 4/5/6 LV, this number does
                  not include the extra devices that are required for parity.
                  The largest number depends on the  RAID  type  (raid0:  64,
                  raid10:  32, raid4/5: 63, raid6: 62), and when unspecified,
                  the default depends on the RAID type (raid0: 2, raid10:  2,
                  raid4/5:  3, raid6: 5.)  To stripe a new raid LV across all
                  PVs     by     default,     see     lvm.conf(5)     **alloca‐**
                  **tion/raid_stripe_all_devices**.
    
           **-I** |**--stripesize** _Size_[k|UNIT]
                  The  amount  of  data  that is written to one device before
                  moving to the next in a striped LV.
    
           **-t** |**--test**
                  Run in test mode. Commands will not update metadata.   This
                  is implemented by disabling all metadata writing but never‐
                  theless 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.
    
           **--type linear** |**striped** |**snapshot** |**raid** |**mirror** |**thin** |**thin-pool** |**vdo** |
                  **vdo-pool** |**cache** |**cache-pool** |**writecache**
                  The LV type, also known as  "segment  type"  or  "segtype".
                  See  usage  descriptions for the specific ways to use these
                  types.  For more information about redundancy  and  perfor‐
                  mance  (**raid** <N>,  **mirror** ,  **striped** , **linear**) see lvmraid(7).
                  For thin provisioning  (**thin** ,  **thin-pool**)  see  lvmthin(7).
                  For    performance    caching   (**cache** ,   **cache-pool**)   see
                  lvmcache(7).  For copy-on-write  snapshots  (**snapshot**)  see
                  usage  definitions.   For VDO (**vdo**) see lvmvdo(7).  Several
                  commands omit an explicit type option because the  type  is
                  inferred  from  other options or shortcuts (e.g. --stripes,
                  --mirrors,  --snapshot,  --virtualsize,  --thin,   --cache,
                  --vdo).   Use  inferred types with care because it can lead
                  to unexpected results.
    
           **--usepolicies**
                  Perform an operation according to the policy configured  in
                  lvm.conf(5) or a profile.
    
           **-v** |**--verbose**...
                  Set verbose level. Repeat from 1 to 4 times to increase the
                  detail of messages sent to stdout and stderr.
    
           **--version**
                  Display version information.
    
           **-y** |**--yes**
                  Do not prompt for confirmation interactively but always as‐
                  sume  the answer yes. Use with extreme caution.  (For auto‐
                  matic no, see -qq.)
    


## VARIABLES



           _LV_     Logical Volume name.  See lvm(8) for valid names.  An LV
                  positional arg generally includes the VG name and LV name,
                  e.g. VG/LV.  LV1 indicates the LV must have a specific
                  type, where the accepted LV types are listed. (raid repre‐
                  sents raid<N> type).
    
           _PV_     Physical Volume name, a device path under /dev.  For com‐
                  mands managing physical extents, a PV positional arg gener‐
                  ally accepts a suffix indicating a range (or multiple
                  ranges) of physical extents (PEs). When the first PE is
                  omitted, it defaults to the start of the device, and when
                  the last PE is omitted it defaults to end.  Start and end
                  range (inclusive): _PV_[**:**_PE_**-**_PE_]...  Start and length range
                  (counting from 0): _PV_[**:**_PE_**+**_PE_]...
    
           _String_ See the option description for information about the string
                  content.
    
           _Size_[UNIT]
                  Size is an input number that accepts an optional unit.  In‐
                  put units are always treated as base two values, regardless
                  of capitalization, e.g. 'k' and 'K' both refer to 1024.
                  The default input unit is specified by letter, followed by
                  |UNIT.  UNIT represents other possible input units: **b** |**B** is
                  bytes, **s** |**S** is sectors of 512 bytes, **k** |**K** is KiB, **m** |**M** is MiB,
                  **g** |**G** is GiB, **t** |**T** is TiB, **p** |**P** is PiB, **e** |**E** is EiB.  (This
                  should not be confused with the output control --units,
                  where capital letters mean multiple of 1000.)
    


## ENVIRONMENT VARIABLES



           See lvm(8) for information about environment variables used by
           lvm.  For example, LVM_VG_NAME can generally be substituted for a
           required VG parameter.
    


## EXAMPLES



           Extend the size of an LV by 54MiB, using a specific PV.
           **lvextend -L +54 vg01/lvol10 /dev/sdk3**
    
           Extend the size of an LV by the amount of free space on PV
           /dev/sdk3. This is equivalent to specifying "-l +100%PVS" on the
           command line.
           **lvextend vg01/lvol01 /dev/sdk3**
    
           Extend an LV by 16MiB using specific physical extents.
           **lvextend -L+16m vg01/lvol01 /dev/sda:8-9 /dev/sdb:8-9**
    
           Extend an LV to use all remaining free space in volume group and
           all resize its filesystem with fsadm(8).
           **lvextend -l+100%FREE -r vg01/lvol01**
    


* * *