Virtual PC Strategy
February 14, 2006
I have been a user of virtual machine technology for years. In fact I used the VMware products during their intial BETA cycles and later switched to Virtual PC which was then purchased by Microsoft.
Even though I have been using the tools for a while I’m remained pretty dumb when it comes to really exploiting some of the newer capabilities of the tools, such as differencing disks.
For the uninitiated, differencing disks allow you to create a new disk which references a “parent” disk. When you start the virtual machine using the differencing disk, the differencing disk only stores data that is different to the parent disk. In this way you can have multiple virtual machines all pointing to the one parent disk (via the differencing disk) but still have them completely independent from each other.
Anyway – like I was saying, I hadn’t really been taking advantage of these improvements in virtual machine technology. Lately however, I’ve been struggling to keep up with my need to test out BETA and CTP builds of upcoming Microsoft technologies and still maintain a stable development and office environment.
So – in the past couple of days I’ve been gradually building up my first virtual machine differencing disk hierarchy in Virtual PC. The first thing that I wanted to test out was the Team Foundation Server Release Candidate. This is the differencing disk hierarchy that I came up with.

The great thing about this is that I can now quickly provision a fully isolated development environment at any stage along the process above. For example – I’v already started adding other virtual machines using yet more differencing disks to support other development tasks that I am working on at the moment.

One of the things that is lacking from Virtual PC is a really good way to map the inter dependencies between the the differencing disks and their parents. When you parent to a disk the Virtual PC Console doesn’t stop you starting up that parent disk which can result in corruption. For the time being what I am doing is removing the virtual machines from the console which have been parented to – this should stop me shooting myself in the foot – but there is an opening here to build a tool which makes this more managable.

Anyway – I am hoping this will allow me to be more productive when it comes to testing out software, and I won’t have to overload my host OS too much. Eventually I suspect that I will just have the Office suite and Virtual PC on the host and do everything in virtual machines. I still have a phobia of presenting off a VPC though – I’ve seen them go south too many times with mysterious lock-ups.
February 15, 2006 at 12:00 am
Another good thing to do to stop yourself from trashing your entire stack of machines is set base images/machines to read-only in windows – that prevents you from being able to mess up the HD even if you do somehow manage to open the machine (because double-clicking on a .vmc file will not only move it to the console, but will start it up).
March 12, 2006 at 12:00 am
I also set the parent disks to read only.