Tuesday, January 26, 2010

Expanding the root partition on Windows & Ubuntu

So I run out of space on my Windows XP and Ubuntu root partitions. Turns out that the same procedure works for both... its a two-for-one deal!

Step 1 - Cleanly shutdown the Virtual Machine

Step 2 - Resize the Virtual Disk
In Fusion for the Mac, this is just a question of going to the setting panel and adjusting the slide for the Disk capacity (Virtual Machines > Settings > Hard Disk).

If you are using one of the myriad of other VMWare products, one reliable way is to usevmware-vdiskmanager. This provides a mechanism to resize the virtual disk through the command line.

Step 3 - Re-partition the disk
You will need to download our use your favorite partitioning tool. I have used gparted successfully.

Using the gparted ISO disk image, its a simple task of mounting the image in the CD/DVD drive and then rebooting. Move the partitions around in order to utilize the free space in the virtual disk

Step 4 - Reboot
After you have created the free space for the O/S, reboot and you are away!

Tuesday, January 19, 2010

Fusion 3.0 slow down...fixed!

I had purchased Fusion 3, at a discount because I was part of the Beta program, but mostly because I brought into the fact that it was optimized for Snow Leopard and was faster. Was is there not to like about that.

Well, firstly, Fusion 3.0 just seemed to be much slower at taking snapshots and restoring VMs. Given that is what I'm doing 90% of the time that was a problem.

There seem to be two fixes that at least help, if not resolve the problem

1. Remove the VM directory from Spotlight indexing

Easy enough to do on System Preferences > Spotlight > Privacy

Click on the "+" and add your Virtual machine directory into the Privacy list.

2. Stop VMware for starting an index
Seems that VMWare causes a re-index scan to occur, so lets turn that off!

defaults write com.vmware.fusion PLLibrarySpotlightSearchDone -bool YES

Tuesday, January 5, 2010

Resizing a RHEL 4 & 5 LVM in a VMWare Guest

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.