A different take on organizing virtual disks

Recently Andrew Connell came out with a pretty lengthy article on how he organizes his work with Virtual PC and differencing disks. It's a good article and goes quite in depth into his setup. For me, I live, die, and otherwise breathe by my VPC images so it's something I'm always interested in. I'm not going to get into a "My Virtual environment is bigger than yours" discussion but the thing that I don't use is differencing disks like AC does.

My setup starts with installing a core OS (Windows Server 2003) to which I add on a web server role (IIS 6.0) and all the latest patches and service packs. This machine is called "BASE" and not joined to any domain. Anytime I need a setup, I copy the VHD and create a new image. Yes, this chews up disk space unlike differencing disks however the problem with differencing disks is that once you change the base disks you invalidate the entire tree of child images. AC gets around this by applying patches to his child disks but then I have to wonder how much effort that is to keep everything up to date? Personally I use SMS and my own update server that has all the latest patches and fire up the VMs to connect to it locally every 2-3 weeks.

I also take each image and add some common tools (like BGInfo from Sysinternals which is a great tool to show you information about your server as a background wallpaper, get it if you don't have it already) and bake that into the image so it's ready for the next copy. I also take the base image and add in Active Directory service and DNS to make a domain controller (zombiebrains.com) which I run with 256MB of RAM in case I want to attach any of my SharePoint images to it for domain type work (complete with a VBS file that builds my AD tree and adds about 100 people to the domain in various roles, all taken from zombie movies on IMDB.com).

Finally any servers that I want to do development on I just install the tools I need. I do have child disks (just a copy) of Windows 2003 Server with SharePoint, SQL, and Visual Studio installed for development as it's a 2-3 hour install for this setup. So for new SharePoint projects I just copy this image instead of the empty 2003 Server one (and optionally connect to the domain if needed using sysprep) and I'm ready for Web Part or tool development. How many portals and SharePoint type environments do I use? One Windows 2003 Server/SharePoint/VS2003/SQL dedicated image for each unique client I have and my own personal sandbox image for doing community work, pet projects, etc.

For some work (like Office 12 client or Windows XP) that I don't want to mess with on my desktop I have a Windows XP client that I kick around. All of these are connected to a virtual network that VPC creates and manages so they can talk to each other. For the most part I only ever have 1 or sometimes 2 VMs running at once (in the case of running the domain controller) with XP running sometimes if I'm doing client development or don't want to use IE on my SharePoint server to view the site (sometimes it's a pain when connecting as IE on the server always complains about security, blah, blah, blah). On my laptop I have 2GB of RAM so I give 1GB to any SharePoint/VS 2005 setups and end up leaving about 512 for my host OS. It can get tight, but I've never had a problem. All of my desktops run at 4GB so I usually give the SharePoint dev 2GB (or more) as I'll be doing debugging on this and these are usually running SQL Server Developer Edition so chew up a lot of RAM.

Currently I use external Iomega Hi-Speed 80GB Desktop Hard Drives for my VHDs and keep about 30 of them stored, ranging from the base image files that I copy whenever I need a new server to my working environments (SharePoint, VS2005, etc.). The main thing is that you really need to keep the images separate from your physical disk that your host OS runs on for performance. I also keep all my development code on this external drive so wherever I am and whatever machine I'm using (desktop, laptop, etc.) I have all my code with me (which is backed up on a daily basis as external drives has been known to fail). This folder is shared on all Virtual PC setups as Z: so it's easy to access in any virtual server.

It's a lot of images to maintain and maybe I don't make best use of disk space but at less than $1 a GB who cares? Whatever works for you.


  • Safe to say it's just "I do it this way, you do it that way." I like my method to save me time on running up new VPCs and disk useage. Plenty of stuff we are both doing, like your shared Z: drive.

    A SMS server would definately make my solution tighter as you wouldn't have to manually update all the hotfixes. At any rate, thanks for the shout & for offering up a different perspective.

  • I just use VMWare Workstation and use the snapshot feature. Aloows me to jump at any snapshots - ALOT faster

  • I do much the same but with VMWare (even calling mine "Base" lol). I've worked with both VC and VMWare and, for me, VMWare is just easier (and I need that) :)

Comments have been disabled for this content.