Resizing VirtualBox VHD

When I first created my VM for developing, I made the VHD a dynamic hard drive, but limited it to just 30GB. I didn’t think that I could fill that much space just doing Eclipse and Android SDK stuff, but I was obviously wrong. I tried following a couple of blog posts to complete the following steps, which I reference at the bottom of this post.

Step 1: Resize the VHD

I first tried resizing the VHD with the VBoxManage command modifyhd:

VBoxManage modifyhd [vhd or vdi file] --resize [size in MB]

When I tried that command from an elevated command prompt, I got the following error:

VBoxManage.exe: error: Failed to create the VirtualBox object!
VBoxManage.exe: error: Code CO_E_SERVER_EXEC_FAILURE (0x80080005) - Server execution failed (extended info not available)
VBoxManage.exe: error: Most likely, the VirtualBox COM server is not running or failed to start.

Running from an un-elevated command line fixed the issue, however after resizing the VHD in this way, the process apparently corrupted my MBR. Thankfully I made a backup and was able to start again. ALWAYS CREATE A BACKUP.

Finally, I gave up and created a new VHD and cloned it using the GParted bootable ISO (see below) and dd from the command line:

# dd if=/dev/sda of=/dev/sdb

This took about 10 minutes for a 20GB VHD (/dev/sda). Once I had them cloned, I resized the guest file system in GParted.

Step 2: Resize the Guest File System

Using GParted, I resized the guest file system in Ubuntu to fill the maximum space available so my development platform can expand as it needs to.

First, I downloaded the GParted bootable ISO. I mounted that in VirtualBox for the guest OS, and booted it up. Since I used that Live CD for the dd operation in step one, I was already there. From here, I simply expanded the partitions to fill the available space. Here is a quick guide on resizing a drive with a swap partition.

After rebooting with the new VHD, all my data is present and I have a lot of room to grow!


Leave a comment

Your email address will not be published. Required fields are marked *