Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ElanHasson/4e38c98c4d4b35ae93da850b4571741d to your computer and use it in GitHub Desktop.
Save ElanHasson/4e38c98c4d4b35ae93da850b4571741d to your computer and use it in GitHub Desktop.
Add more physical space to an LVM volume

Find and create a partition with free space:

# parted
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print free
Model: ATA Crucial_CT240M50 (scsi)
Disk /dev/sda: 240GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start   End     Size    File system  Name                  Flags
        17.4kB  1049kB  1031kB  Free Space
 1      1049kB  512MB   511MB   fat32        EFI System Partition  boot
 2      512MB   768MB   256MB   ext2                               msftdata
 3      768MB   18.8GB  18.0GB               swap_1                lvm
 4      18.8GB  68.8GB  50.0GB                                     lvm
 5      68.8GB  83.8GB  15.0GB               es
 6      83.8GB  100GB   16.2GB               docker
        100GB   240GB   140GB   Free Space

We'll carve out a new 20GB partition:

(parted) mkpart
Partition name?  []? docker-2
File system type?  [ext2]?
Start? 100GB
End? 120GB
(parted) print
Model: ATA Crucial_CT240M50 (scsi)
Disk /dev/sda: 240GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start   End     Size    File system  Name                  Flags
 1      1049kB  512MB   511MB   fat32        EFI System Partition  boot
 2      512MB   768MB   256MB   ext2                               msftdata
 3      768MB   18.8GB  18.0GB               swap_1                lvm
 4      18.8GB  68.8GB  50.0GB                                     lvm
 5      68.8GB  83.8GB  15.0GB               es
 6      83.8GB  100GB   16.2GB               docker
 7      100GB   120GB   20.0GB               docker-2

(parted) quit

So /dev/sda7 is our new physical allocation, but we need to bless it:

# pvcreate /dev/sda7
  Physical volume "/dev/sda7" successfully created

Let's see the name of the volume group and logical volume we need to target:

# lvs
  LV         VG        Attr      LSize  Pool Origin Data%  Move Log Copy%  Convert
  docker_lib vg_docker -wi-ao--- 15.09g
  es         vg_es     -wi-ao--- 14.00g
  root       vg_nuc    -wi-ao--- 46.56g
  swap       vg_swap   -wi-ao--- 16.76g

The volume is docker_lib but first we need to adjust its volume group, vg_docker:

# vgextend vg_docker /dev/sda7
  Volume group "vg_docker" successfully extended

And to cross check that:

# vgs
  VG        #PV #LV #SN Attr   VSize  VFree
  vg_docker   2   1   0 wz--n- 33.71g 18.62g
  vg_es       1   1   0 wz--n- 14.00g     0
  vg_nuc      1   1   0 wz--n- 46.56g     0
  vg_swap     1   1   0 wz--n- 16.76g     0

Resize the logical volume (and its filesystem):

# lvresize --extents +100%FREE -r vg_docker/docker_lib
  Extending logical volume docker_lib to 33.71 GiB
  Logical volume docker_lib successfully resized
resize2fs 1.42.9 (4-Feb-2014)
Filesystem at /dev/mapper/vg_docker-docker_lib is mounted on /var/lib/docker; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 3
The filesystem on /dev/mapper/vg_docker-docker_lib is now 8837120 blocks long.

Awesome, it resized while online/in-use. Let's check:

# df -H
Filesystem                        Size  Used Avail Use% Mounted on
/dev/mapper/vg_nuc-root            50G   20G   28G  42% /
none                              4.1k     0  4.1k   0% /sys/fs/cgroup
udev                              8.4G   13k  8.4G   1% /dev
tmpfs                             1.7G  1.3M  1.7G   1% /run
none                              5.3M     0  5.3M   0% /run/lock
none                              8.4G  1.8M  8.4G   1% /run/shm
none                              105M     0  105M   0% /run/user
/dev/sda2                         248M  151M   85M  65% /boot
/dev/sda1                         510M  7.0M  503M   2% /boot/efi
/dev/mapper/vg_es-es               15G  3.2G   11G  23% /var/lib/elasticsearch
/dev/mapper/vg_docker-docker_lib   36G   14G   20G  41% /var/lib/docker

Written with StackEdit.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment