Nothing like starting the new year with an "out of space" problem.
So, I have a RHEL 5.3 image running under VMWare Fusion. I needed more space in order to install some more software... easy I thought until I tired it and with the help of several blogs and other posting, I thought I would put my recipe into words. So the challenge is to add and extra 2GB into the root filesystem
Step 1 - Cleanly shutdown your VMWare guest
Suggest that you shutdown cleanly as you can to ensure that all other steps go smoothly.
Step 2 - Remove your Snapshots of the Guest
VMWare Fusion on a Mac forces you to remove any snapshots before you can re-size the disk
Step 3 - Resize the disk
There are some command line tools for doing this, but in the 'Hardware Settings' for the guest you can resize a disk (in VMWare Fusion and above).
Step 4 - Restart your Guest
Restart you guest
Step 5 - Look at your disk space
If you look at the disk psace from your guest, you will see that it show no extra disk space! This is simply because the O/S has not seen the added space yet. Use "
df" to take a look at the mounted volumes on your system.
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
3.8G 3.2G 427M 89% /
/dev/sda1 99M 12M 82M 13% /boot
tmpfs 506M 0 506M 0% /dev/shm
.host:/ 233G 173G 61G 74% /mnt/hgfs
As you can see, we have 427M if space left on the root file-system "/".
Step 6 - Make sure that there is free space
You can next check if the O/S can see the free space. Use the utility "
parted" to view the partitions.
[root@localhost ~]# parted
GNU Parted 1.8.1
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print free
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 8590MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 32.3kB 107MB 107MB primary ext3 boot
2 107MB 6440MB 6333MB primary lvm
6440MB 8587MB 2147MB Free Space
(parted) quit
Step 7 - Make a new partition out of the free space
In the step above you can see the free space, which starts at 6440MB and ends at 8587MB. You now need to make a new partition, using "
parted" again
[root@localhost ~]# parted
GNU Parted 1.8.1
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mkpart
Partition type? primary/extended? primary
File system type? [ext2]? ext3
Start? 6440
End? 8587
(parted) print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 8590MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 32.3kB 107MB 107MB primary ext3 boot
2 107MB 6440MB 6333MB primary lvm
3 6440MB 8587MB 2147MB primary
(parted) quit
We have a new partition out of the free space... but we have not finished yet!
Step 8 - Create the Physical Volume from the Partition
Now that we have a partition on the disk we now create a physical volume using the "
pvcreate" command.
[root@localhost ~]# pvcreate /dev/sda3
Physical volume "/dev/sda3" successfully created
The device name (
/dev/sda3) came from Step 7, concatenating the device name (
/dev/sda) with the partitions number (
3) to get /dev/sda3.
Step 9 - Determine the Volume Group
Now that we have a partition, we need to add it into the Volume Group. First find the name of the volume group using the "
vgscan" command.
[root@localhost ~]# vgscan
Reading all physical volumes. This may take a while...
Found volume group "VolGroup00" using metadata type lvm2
Step 10 - Add the partition into the Volume Group
Now add the partition into the volume group using the "
vgextend" command.
[root@localhost ~]# vgextend VolGroup00 /dev/sda3
Volume group "VolGroup00" successfully extended
Here's where we got the information from
- VolGroup00 came from Step 8
- /dev/sda3 came from Step 7, concatenating the device name (/dev/sda) with the partitions number (3) to get /dev/sda3
Step 11 - Extend the Logical Volume
Next we have to tell the Logival Volumn Manager (LVM) that we have an additional partition to add. We do this using the "
lvextend" command.
[root@localhost ~]# lvextend -l +63 /dev/VolGroup00/LogVol00 /dev/sda3
Extending logical volume LogVol00 to 5.84 GB
Logical volume LogVol00 successfully resized
What the command says above is the following
- Use partition /dev/sda3
- On Volume /dev/VolGroup00/LogVol00 (the name comes from Step 5)
- By 63 extents, this is roughly 2GB. There are other options that let you specific this in terms of GB, percentage free etc.
Step 12 - Now extend the filesystem
The the Logical Volume is just a collection of space. Typically you then take this space and create a file-system. Given that we have a file-system we want to extend it with the space we just added to the Logical Volume. We do this with the "
resize2fs" command.
Step 12.1 - Redhat 4.x
localhost ~]# ext2online /dev/VolGroup00/LogVol00
Step 12.2 - Redhat 5.x
[root@localhost ~]# resize2fs /dev/VolGroup00/LogVol00
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing required
Performing an on-line resize of /dev/VolGroup00/LogVol00 to 1531904 (4k) blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 1531904 blocks long.
This command takes all the space we added to the Logical Volume... now the acid test, do we see the free space in the file-system?
Step 13 - Check for free space
Check for the free space, using the "
df" command.
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
5.7G 3.2G 2.3G 59% /
/dev/sda1 99M 12M 82M 13% /boot
tmpfs 506M 0 506M 0% /dev/shm
.host:/ 233G 173G 61G 75% /mnt/hgfs
Success! You can see we now have an extra 2GB of free space! Go make yourself a cup of tea.