As an update to my old post – https://sirlagz.net/2016/01/20/live-resizing-lvm-on-linux/ – since utilites mature and change, tasks can get easier (or harder) as there are more commands and functionalities added.
In this instance,
lvm have been updated to make this a bit easier.
Step 1 – Resizing Hard Drive
This step remains the same. Expand the disk on your hypervisor, and if it doesn’t automatically update in the virtual machine itself, try running the following command
# for x in /sys/class/scsi_disk/*; do echo '1' > $x/device/rescan; done
If the disk is still the same size in
fdisk, then you’ll need to reboot the server.
Step 2 – Resizing Partition
Again we’ll need to use
parted in this step, but the commands are a bit easier.
parted as root, and then run a
print free command to make sure that you have space at the end of the partition.
You can see in my screenshot that my drive has some Free Space at the end
I need to resize both partitions 2 and 5 in my instance, but your situation may or may not be the same. Run the following commands to resize both partitions 2 and 5 to the maximum available space.
resizepart 2 100%
resizepart 5 100%
print free again to verify that the partitions have been resized.
quit to exit parted.
Step 3 – Resizing Physical Volume
This is the same as before, do a pvresize to expand the physical volume to the maximum capacity. Make sure you’re specifying the correct partition.
Step 4 – Resize Logical Volume and Filesystem
Now here is where it changes a bit. I don’t know when LVM got the ability to resize the filesystem as well (assuming it’s a filesystem that the utilities support. I use ext4 on most of my systems), but we can now resize everything in one go.
If you don’t know the path of your logical volume, you can check with the
Run the lvresize command with the path to resize both the volume and filesystem in one go
lvresize -l +100%FREE -r /dev/VolGroup/lv_root
Now your filesystem will have been expanded to all available space on the disk.