Update: 26th June 2008. Hyper-V RTM is now available. This post refers to pre-release software for Hyper-V, formerly known as Windows Server virtualization. However, there is no difference in the guidance provided in this post.
I had many questions emailed to me about Windows Server virtualization since we went live with our Technology Preview release a couple of days ago. One of the common ones was how to take a Windows Server 2003 VM build under Virtual Server into WSv.
Currently, there is no direct import capability, so it’s largely a manual exercise. A Virtual Server VM consists of a configuration file (.vmc) and one or more data files such as Virtual Hard Disks (VHDs) and other media such as .ISO and .VFD. For the purposes of migration, it’s the VHDs which are the most important ones as these obviously hold the important data.
If your VM is using a shared SCSI bus as part of a test/dev cluster, stop now. You will have to break your cluster, migrate one node and move to an alternate form of shared storage such as iSCSI for migration. That’s a blog post for another day and I won’t be covering that in this post.
Before anything else, make sure you take a backup of your data. Remember WSv is a preview and not for production use. If you move your VM to WSv, there is no upgrade path to later releases, so please keep a copy of the original VM.
The first real consideration is the Virtual Machine additions which will likely be installed in your VM. If they are, it’s may be easier to remove them before bringing the VM into WSv. If you know you have the latest version of the VM additions from VS 2005 R2 SP1, you can uninstall the additions when the VM is booted under WSv, but earlier versions of the additions may fail to uninstall when booted under WSv. If you’re unsure of which version you have installed, it’s best to uninstall while you have a working VM under Virtual Server. Once the additions are uninstalled, make sure the VM is shut down, not saved. Saved states are not compatible between Virtual Server and WSv.
Now copy all the VHDs configured in your VM across to your server running WSv. Let’s assume for the time being that this is the simplest case where there is a single VHD for the VM. Simply walk through the new virtual machine wizard and attached the existing VHD. Easy, yes?
If you have more VHDs to add, at the end of the wizard, choose to not start the VM. Instead, open the settings for the newly created VM and add each VHD in turn to the configuration. If you need more than four VHDs (or three plus a CD/DVD), attach a SCSI controller and attach the remaining VHDs to the SCSI controller instead.
You may now have some questions. The one I’m particularly thinking you’ll ask is what if my VM under Virtual Server was booting from an emulated SCSI controller, not from IDE. The answer is relatively long winded and I’ll explain another day, but if that is the case, attach the boot VHD to the IDE controller 0 at location 0. It should still boot. The less obvious one question was what if my boot VHD was on SCSI and is > 127GB in size? Again, the answer is for another day. Just use IDE and trust me!
If the VM is not yet running, start it, connect to it and login. You will probably be presented with the new hardware wizard. Cancel it by pressing escape for now. As an interesting experiment, especially if you ended up adding drives to a SCSI controller, you’ll notice that they won’t show up yet in Disk Management or Explorer. That’s because you don’t yet have the drivers installed for the “synthetic” SCSI controller. They will be installed with the Integration Components.
Insert the Integration Components CD from the Action menu option in the Virtual Machine Connection application. It should auto-play, but if not, run setup.exe from the supportx86 directory. Follow the prompts and reboot as requested. On completion, your VM should be good to go.
One other point for Windows Server 2003 VMs, I would strongly recommend you upgrade to SP2 if you haven’t already to gain the maximum benefits of running under Windows Server virtualization. Otherwise, go have fun!