Linux

How To Expand A Logical Volume After Attaching Further Space

If you have installed your NVMe VPS instance using a distribution ISO. Then it’s likely your drive will be using a Logical Volume. Whilst generally, logical volumes are extremely handy, they pose some technical problems when trying to expand them. It’s not possible for us to automatically expand a logical volume. That’s because each instance will be using a different volume group. Therefore, the commands would be different for each user. You can, however, extend your logical volume in a few steps. To install from one of our ISO files, Use the “Reinstall” section and click the “ISO Images” tab.

Expand a Linux Logical Volume

This applies to all Linux Logical Volumes when you have added another hard drive or hotplugged space. The space is assigned to your instance but you need to expand the logical volume before you can use it. So in this guide, we will hotplug an additional drive into our development machine and look at how we expand the logical volume.

Find Your Volume Group

So before we start, we have a basic NVMe VPS. We have installed AlmaLinux 8 from the distribution ISO. We can see we have a logical volume that is 9GB and the volume group is called almalinux. Issue the vgdisplay command to find your volume group.

Now we have added another 10GB of space to our instance. So we now have a total of 20GB over two drives. We can confirm this by using the console. When space is hotplugged you will see a message from the Hypervisor confirming this. Because the space is hotplugged. There is no need to reboot your instance to use the additional space.

Expand A Logical Volume

Extend Volume Group

Before we can use the new drive prepare the volume group. By using the fdisk -l we can see Discovery has already added the space to our instance. It’s attached at /dev/sdb with a total of 10GB free. This makes the process extremely easy.

Device     Boot   Start      End  Sectors Size Id Type
/dev/sda1  *       2048  2099199  2097152   1G 83 Linux
/dev/sda2       2099200 20971519 18872320   9G 8e Linux LVM


Disk /dev/mapper/almalinux-root: 8 GiB, 8585740288 bytes, 16769024 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/almalinux-swap: 1 GiB, 1073741824 bytes, 2097152 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Issue the command below to extend the volume group to the new hard drive. Ensure you use the correct volume group name which you found using the vgdisplay command.

vgextend almalinux /dev/sdb

Physical volume "/dev/sdb" successfully created.
Volume group "almalinux" successfully extended

Expand Linux Logical Volume

So now we are ready to extend the logical volume (LV). If we issue the vgdisplay command we can see the free space in the Free PE / Size field. We can also see the volume group size is now 18.99GB. We can choose to expand the logical volume to use all of the free space or just some of it.

[root@dev ~]# vgdisplay
  --- Volume group ---
  VG Name               almalinux
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               18.99 GiB
  PE Size               4.00 MiB
  Total PE              4862
  Alloc PE / Size       2303 / <9.00 GiB
  Free  PE / Size       2559 / <10.00 GiB
  VG UUID               1J3yIj-hx2A-x1wT-qVLj-KAhx-DXdN-V8Ruem

Using blkid we can see our LV is the root partition.

blkid

So to expand the logical volume and use all of the free space issue the lvextend command with -l +100%FREE and the path to the logical volume.

lvextend -l +100%FREE /dev/mapper/almalinux-root

Size of logical volume almalinux/root changed from <8.00 GiB (2047 extents) to 17.99 GiB (4606 extents).
Logical volume almalinux/root successfully resized.

Extend Filesystem

And finally, extend the file system. Our images use XFS so use xfs_growfs and the path to the volume.

 xfs_growfs /dev/mapper/almalinux-root

That’s the process complete. We can now see by using the df -h command that our volume group has been extended. And our logical volume has been extended.

[root@dev ~]# df -h
Filesystem                  Size  Used Avail Use% Mounted on
devtmpfs                    353M     0  353M   0% /dev
tmpfs                       373M     0  373M   0% /dev/shm
tmpfs                       373M  9.8M  363M   3% /run
tmpfs                       373M     0  373M   0% /sys/fs/cgroup
/dev/mapper/almalinux-root   18G  1.8G   17G  10% /
/dev/sda1                  1014M  182M  833M  18% /boot
tmpfs                        75M     0   75M   0% /run/user/0

That’s the process of extending a logical volume or expanding a logical volume on the discovery network. Using Hotplugging is a great way to instantly provide additional resources without having to disrupt your production server.

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button