If you use Virtual PC or built-in Windows backup for example, you probably use virtual hard drives stored in vhd-files.
I already blogged once about how you can mount such a vhd file easily in Windows.
But there is one big problem with vhd files: When you create them, you often don’t really know how big the file should be. You can use a dynamic vhd to solve this partly (at the cost of performance), but still you need to give a maximum size.
And then the time will come when you realize your vhd needs to be bigger then you specified it. So here is how you can enlarge vhds – no matter whether they are fix sized or dynamic.
Enlarge vhd file using diskpart
You can enlarge the vhd file in diskpart. Start diskpart, e.g. with [Windows-Key]+[R], type “diskpart” and hit [enter]. UAC will prompt you for permission (say “Yes”). So now select your virtual disk using the following command:
select vdisk file="C:\path\to\vdisk.vhd"
Now enlarge the disk using this command:
expand vdisk maximum=10000
In this example, 10000 means that the new total size of the disk is 10 000 MB (adjust the number to your needs).
So now your virtual hard drive grew larger. But the partition inside still has the old size. So you need to enlarge the partition as well.
Enlarge the partition in the virtual disk using Disk management
The easiest way to do this is to use Windows Disk Management, which is part of Computer Management . The fastest way to get there in Windows 7 is to click the Windows icon and enter “Disk Management” and start the appearing “Windows Disc Management” (Windows UAC will again ask you for permission, say “Yes”). Or, also for other Windows version, [Windows]+[R] and type “diskmgmt.msc” and hit enter.
Open the VHD with “Action” / “Attach VHD”. Choose the file, make sure “readonly” is not checked and click “OK”.
Then you will see the VHD just like your normal drives in the graphical overview. There you will see the partition in blue (or dark green, if it is a logical one) and the empty space in light green. Right-click the partition and choose “Extend Volume”. The tool will propose to use all the empty space so you can just accept that and that’s it. Finally, right click the VHD drive and select “Detach VHD”. Make sure you don’t select the option to delete the VHD file after detaching!
Enlarge the partition in the virtual disk using diskpart
You can also achieve the same thing in diskpart (i.e. on the console, not using the GUI).
Open diskpart, and mount the VHD using:
select vdisk file="C:\path\to\vdisk.vhd" attach vdisk
list volume select volume=<No of volume> extend size=100
Instead of <No of volume>, you need to enter the number of the volume (see output of “list volume”).
In this example, the partition gets enlarged by 100 MB. Here you need to specify the relative amount of space that gets added.
Finally, detach the vdisk:
Problems? Just ask!
I hope this helps somebody. If so, please drop a comment. If you have problems, also just drop a comment.