In a virtualized environment you have a LINUX based Virtual Machine and the root drive has run out of space in an existing partition inside a single VM hard disc. However, the space that can be added to the VM Hard Disc will not necessarily increase space of the Linux root drive because when a Virtual Machine Hard disc is expanded, space is only added to the end of the logical partitions. This requires a simple tweak inside the Linux Operating System to add the extra space to the partition that needs it.
In this article, I would like to discuss how to incorporate the extra space into the existing Linux partition.
In a virtualized environment when a LINUX OS created the VM contained one VHD.
There are min three partitions created 1. ROOT 2. HOME & 3. SWAP.
And if you think that expanding the HDD from hypervisor will solve this, then you are wrong. This is because when VM HDD is expanded from the hypervisor, the additional space in only added to the end of the last logical partition (i.e. after the SWAP drive in our example).
So, we need to mount the expanded partition and merge it with the partition that requires expansion.
Let’s start step by step.
1. Shut down the VM from Hypervisor
2. Expand the disk capacity from settings with your desired value. Here we choose to expand the VHD with additional 60 GB space.
3. Start the VM from the hypervisor.
4. Login to virtual machine console as root.
5. Execute below command to check the disk space.
6. Now execute this below command to initialize the expanded space and mount it.
root@localhost ~]# fdisk /dev/sda WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u').
7. After this enter ‘n’ in the next line for creating new partition.
Command action e extended p primary partition (1-4) p
8. Then assign the partition number you wish based on your existing partition numbering.
Partition number (1-4): 3
Partition number (1-4): 3 Hex code (type L to list codes): 8e Changed system type of partition 3 to 8e (Linux LVM)
9. In the next line choose code ‘8e’ for select the LINUX OS
Hex code (type L to list codes): 8e
Hex code (type L to list codes): 8e Changed system type of partition 3 to 8e (Linux LVM)
10. Next enter ‘w’ to proceed further.
Command (m for help): w
Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8)
11. Reboot the system.
12. Now we need to create physical & logical volumes execute below command to create physical volume.
13. Execute below command to get the name of current Volume Group
14. Execute below command to extend the Volume Group with /dev/sda3
vgextend VolGroup /dev/sda3
15. Execute below command to get Logical Volume path.
16. Execute below command to extend the Logical Volume with /dev/sda3
lvextend /dev/VolGroup/lv_root /dev/sda3
17. Execute below command to update the Logical Volume
18. Check for the new disk space.
19. Your Disk space is now successfully increased with 60 GB.
You may also like: Planning & Management of Modern Data Center
It is a common occurrence that in a virtualized environment, we encounter such issue quite often and this is a handy way to add that breathing space to the virtualized OS.