Thursday, December 17, 2009

Microsoft Virtualilzation Headaches

As a SharePoint consultant, I am constantly moving from client to client and the best way to develop and test the code, designs and configurations for each client while maintaining complete separation is to virtualize. Since I work for a Microsoft partner, we try to use Microsoft tools and technologies as much as possible, which can be quite frustrating, as you will find out below.

I recently started working for a large client with a global presence whose IT policies are well-established, difficult to change and not always up-to-date. In that vein, enter the corporate VPN: it's a web-based signin with a host checker that doesn't support any x64 OS.

This prompted me, running Win 7 x64, to try to get a co-worker's Hyper-V Win2k3 x86 MOSS VM and run it in Windows Virtual PC. Seems like a logical thing to do, right? I mean, a Microsoft VHD should work, and be able to be imported by other Microsoft tools, right? Wrong. After spending quite a bit of time trying to attach the VHD in Windows Virtual PC and boot directly into it, I concluded that this was not possible.

Apparently, you can only run VMs using the same architecture as the host in Windows Virtual PC. And you can only boot into a VM that was created on your machine using that method.

To solve my problem, I wiped my machine and installed Windows Server 2008 R2 to take advantage of Hyper-V. While I was at it, I grabbed an image of Windows Server 2003 x86 and built a nice development machine to use for this client.

My problem was solved, but I think in the future, I'll use the open-source VirtualBox by Sun if I'm not able to use Hyper-V. A colleague grabbed one of my Hyper-V VMs the other day and was signed into it from his Windows 7 host using VirtualBox within minutes.

Another annoyance is the resizing of VHD files. My client VM mentioned above was created as a dynamic 30GB disk. The space was quickly filled and my performance was soon shot. Compounding the issue was the fact that I had half a dozen snapshots. While Hyper-V does let you merge snapshots, the process is painful, to say the least.

Resizing the .vhd file can be done using some third-party tools (beware if you have snapshots or a dynamic disk) like VHD Resizer, but that doesn't address the problem of resizing the system partition within the VM itself. Resizing the boot partition isn't supported in Windows Server 2003, so I ended up using another open-source tool, Gparted. Boot into the VM using this tool and it's a breeze to resize the system partition.

I really wish Microsoft would make their virtualization technologies a little more robust in the future.