I am not sure if it is the norm or not, but I like to create a virtual machine image for each project I work on. Being a consultant, I am usually on a few projects at a time and at very least need to refer back to past projects. Having a development environment on a virtual machine for each client makes it easy to stay organized and keep things isolated from one another.
The base image that I use to clone has a base install with the necessary IIS components, SQL Server 2008 and Visual Studio 2010 with the settings just how I like them along with the plug-ins such as ReSharper in place. I also have my AHK script in place as well, because your AHK scripts on your host machine will not work when in your VM (they do work when you are remoted into a server however).
My disk space was getting pretty tight this week because I started a new client and I duplicated an existing clients environment so I can test out upgrading to Sitecore 6.5 while still keeping the 6.4 in place. So today I went out and bought a BlacX SATA HDD eSATA + USB 2.0 Docking Station and a 500 GB drive. I could have gone larger or even gone with a solid state drive but I didn’t want to shell out a lot just yet because I wasn’t sure how performance would be. I tried to run my VMs from a MyBook back in 2006 and it just wasn’t possible and I was a bit pesimistic.
Well after a day of developing, I can officially say, I like it a lot. It is actually a bit more responsive than when the image was on my host machine’s hard drive. I imagine this is due to the fact that the host and VM do not have to compete for attention from a single drive.
I will probably end up getting a second docking station for the office so I just have to carry the small 2.5 mobile hard drive with me when commuting to/from work. The one downside to this is, I won’t be able to code on the train because I will not have access to the external drive. I figure I can catch up on non-development tasks during my commute or if I need, I could keep a copy of one of my images on my laptop too and only use it when commuting (I will just need to remember to get latest/check-in to ensure the external image and local image are in synch).