VMWare Logo

VMware Expand Hard Drive Size and Extend in CentOS Linux

One approach to adding space to an existing Linux hard drive that is using Linux LVM is to add space to the drive. This can easily be accomplished in VMware. This has been tested using VMware Workstation 9.0 for Windows with CentOS 6.5 (minimal install).

To demonstrate a before and after, here are a few commands that can be used to verify the existing disk size.

[root@hd1 ~]# fdisk -cul | grep 'Disk' | grep -v 'mapper\|identifier'
Disk /dev/sda: 42.9 GB, 42949672960 bytes

[root@hd1 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
ext4 36G 1.3G 33G 4% /
tmpfs tmpfs 935M 0 935M 0% /dev/shm
/dev/sda1 ext4 485M 55M 405M 12% /boot

[root@hd1 ~]# vgdisplay -C --units G
VG #PV #LV #SN Attr VSize VFree
vg_mini 1 2 0 wz--n- 42.42G 0G

The first thing to do, is shutdown the virtual machine. Go to the Settings ...


Select Hard Disk. Select Utilities, and chose Expand...


For this example, the drive will be expanded from 40.0 GB to 60.0 GB.


Press the Expand button. Wait for the virtual disk window "Expanding virtual disk ..." to complete.


This window, "The disk was successfully expanded...." should indicate a successful expansion. Press OK.

Start the virtual machine.

From the virtual machine, the following steps should extend the hard drive without losing data.

Verify the new drive size.

[root@hd1 ~]# fdisk -cul | grep 'Disk' | grep -v 'mapper\|identifier'
Disk /dev/sda: 64.4 GB, 64424509440 bytes

Create a new partition, slightly automated, use with caution. Modify accordingly to your configuration!! Note that there are two blank lines, each for ENTER. If you feel more comfortable use fdisk -cu /dev/sda and manually edit to your configuration. This example below adds a third primary partition (sda3) with Linux LVM as the filesystem.

echo "n
"| fdisk -cu /dev/sda;done
partx -va /dev/sda

Resize the volume group, resize the logical volume, and resize the filesystem.

[root@hd1 /]# vgdisplay -C --units G
VG #PV #LV #SN Attr VSize VFree
vg_mini 1 2 0 wz--n- 42.42G 0G

[root@hd1 /]# vgextend vg_mini /dev/sda3
dev_is_mpath: failed to get device for 8:3
No physical volume label read from /dev/sda3
Physical volume /dev/sda3 not found
Physical volume "/dev/sda3" successfully created
Volume group "vg_mini" successfully extended

[root@hd1 /]# vgdisplay -C --units G
VG #PV #LV #SN Attr VSize VFree
vg_mini 2 2 0 wz--n- 63.89G 21.47G

[root@hd1 /]# lvscan
ACTIVE '/dev/vg_mini/lv_root' [35.60 GiB] inherit
ACTIVE '/dev/vg_mini/lv_swap' [3.91 GiB] inherit

[root@hd1 /]# lvextend -l +100%FREE /dev/vg_mini/lv_root
Extending logical volume lv_root to 55.60 GiB
Logical volume lv_root successfully resized

[root@hd1 /]# resize2fs /dev/vg_mini/lv_root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vg_mini/lv_root is mounted on /; on-line resizing required
old desc_blocks = 3, new_desc_blocks = 4
Performing an on-line resize of /dev/vg_mini/lv_root to 14574592 (4k) blocks.
The filesystem on /dev/vg_mini/lv_root is now 14574592 blocks long.

Confirm the results using the methods described at the beginning of this article. Done.