Friday, December 21, 2012

Client Hyper-V, who's idea was this?

After running Windows 8 only virtually since August, I finally decided to let this brand new and shiny OS have a go at my laptop hardware directly. Purpose: To try out Client Hyper-V, Microsoft's latest go at virtualization on the desktop.

Virtualization is such a big thing to me, that I would happily ignore and work around all the Metro nonsense and other peculiarities of Windows 8, if Hyper-V would add something substancial towards my virtualization needs. And as some know, I have had my fights with most of the other options available.

Now, I am quite familiar with Hyper-V on servers, I have been running Hyper-V servers on and off the last 5 years, also in production. They never really brought a smile on my face, but there is no doubt that Microsoft's server virtualization product is solid.

So my expectations to Hyper-V on Windows 8 was huge. After failing to bring 64-bit VMs to Virtual PC, my hope was that the new desktop virtualization product from Microsoft would merge what was good about Virtual PC with the robustness and 64-bit capabilities of Hyper-V.

My disappointment was bigger than my expectations, when I realized that Microsoft had added nothing to Hyper-V that is desirable for a desktop virtualization product.

First and foremost, the display capabilities of the VMs are limited. There is no dynamic resolution, only a few fixed resolutions at 16-bit color to choose from. There is a full screen option for the VM console, but what is that good for unless you can get full screen resolution on your guest OS? On my desktop monitor I got 1680x1050 resolution, and 1280x1024 was the best result for my VM in full screen view:

As Hyper-V used to be a server only product, most references to this from Microsoft are referring to RDP as the solution. And if you are happy using RDP to your client, that will give you any resolution you want, but nothing much in performance, as RemoteFX was stripped away in this version of Hyper-V. I do expect to see a change in this, if Microsoft is serious about bringing Hyper-V to the desktop, but don't expect to see it anytime soon.

Secondly, there are no shared folders, you have to rely on normal networking shares or RDP for this, as you would to a physical host.

Thirdly, there is no shared clipboard. You can paste text into the VM's keyboard buffer, but that's it.

Fourth, the networking options are not exactly what you would expect in a desktop virtualization product. If you are using VLANs, you might be in trouble. Also, there is no NAT choice for networking, unless you provide it yourself, by using a router VM. That being said, I also have to admit that the networking model of Hyper-V is again very solid.

Fifth, there is no sound from your VMs. Again, using RDP you can get sound, as you can from any recent version Windows host with no sound card.

Sixth, there is no USB bridge between the host and the VMs. As this is another option of RDP, that is the MS solution.

If you plan on using a second virtualization product for those scenarios where Hyper-V does not fulfill your needs, be prepared to disable Hyper-V on boot, unless you're satisfied with using a second product that doesn't need CPU virtualization support.

Good stuff

OK, I could go on about the lack of desktop virtualization features, but let's mention the good stuff, because there are a lot of great things about this product, that you might find important enough to use it.

Hyper-V can easily use master disk images and differencing disks out of the box. That means you can fire up a new VM in very short time. And the Hyper-V way is probably the best way of doing this, that I have seen in any virtualization product. It just works perfectly without any problems.

If you fancy to do so, you can easily boot one of your Windows 7+ VMs natively on your host computer. Native boot to VHD has been supported since Windows 7, but it really shines with Windows 8 both on your host an in your VM. It's even possible to boot this way using differencing disks, but be prepared to do some command line work to make it happen.

Linux guests

Microsoft has been working for a long time getting Hyper-V integration and naughty phrases into the Linux kernel. However, don't expect much from graphics. Your Linux servers will work great, though.

Other OSs

Does not work that good. My favorite router, the m0n0wall on FreeBSD, didn't recognize the normal network adapters, and even had problems with the legacy ones. Also, Hyper-V does not support ACPI shutdown, so be prepared to either pull the plug or shut down interactively (which m0n0wall doesn't have a console option for).

Microsoft has been very good at hiding the limitations of Client Hyper-V in it's presentations. Check out this video about using Client Hyper-V for development, which is something I sometimes do. However, I not only use remote debugging on VMs, I  run the development environments themselves in VMs. Actually, that works out quite good, using RDP.


The limitations mentioned surely leaves quite a bit to be desired from the desktop virtualization alternative from Microsoft. I expect to see the product improve over time, but this is Microsoft, make that a loong time.

For my own purposes, this actually turns out to be a good virtualization solution. I am a system administrator, I do most of my virtualization on servers anyway, and I don't have that many uses of full screen VMs with 3D and sound. So I will stick with Windows 8 and it's peculiarities for a while on my laptop, in order to get some more stuff to tell you later.