After having a rather rough start to a school year (read: ass whooped) it’s time to unleash some hatred that has been building for several years. I’ll try to give a fair shake, but be warned, there are years of bottled up emotions here.
Early on, Hyper-V was being touted as a serious competitor to ESX. I was skeptical at the time given how well ESX worked and how long it had to mature, but I wanted to give Hyper-V a fair shake. There were a number of comparisons at the time that gave it an “ok” grade but none of the ones I found really ripped it a new one. They all agreed on two points: It loads virtual machines, and is free.
However, these two points do not an enterprise virtualization platform make. “Don’t worry, Hyper-V 2.0 in 2008 R2 will fix these woes!” they said. So, evaluate 2008 R2 I did. We had a number of VMs that we needed to run. At the time, ESX had no free option, so we decided to run Hyper-V. My experience was basically the same as all the other reviewers: It loads virtual machines and is free. The difference was, I hated it. I hated the stupid interface. I hated the buggy GUI. I hated the stupid limited OS requirements for networking (teaming?! standby nics? wru?!). I really hated just about everything about it. I was told by fantatical Hyper-V evangelists that I was just lacking SCVMM, and that everything is taken care of with it. So, I held of judgement and said, “meh” then switched the host to ESXi when it was free.
Years passed and our VDI pilot initiative came up. I did a POC with ESXi and Hyper-V. In the Hyper-V POC I demonstrated that VMs do in fact load, but for the most part the user buy-in was done using VMware. When it came to implement our pilot, Hyper-V won out due to cost savings. (It’s free and don’t need no fancy features, remember?!). I immediately hated it. It became clear quite quickly that the consultant designing our VDI solution had extremely limited experience with Hyper-V, let alone Citrix on top of Hyper-V, and led to some really awkward conversations like, “Lets go to technet and read what it says.” Ok, thanks. I’d like my $300/hr back please. In fact, you pay me.
After we got the ball rolling with SCVMM 2008 R2 and Hyper-V 2008 R2, we had a functioning Citrix XenDesktop environment. The promised land! Everything would be awesome! Except…there were these little nagging things with SCVMM that just didn’t work the way a sane person would think they should. So again I consulted ‘teh interwebs’ and was told (again) that it was “fixed in (the next version) 2012″. Luckily, System Center 2012 was due out in a week! I immediately jumped to SCVMM 2012 and was relieved…things were better! However, they still sucked. There are all sorts of stupid little behaviors with SCVMM and Hyper-V. Granted, a lot of them may be mitigated through deep tuning, I’d like to think that some things should “just work” in basic scenarios out of the box. Let me list a few of my gripes here.
- The UI. Apart from being terrible, its slow to load and takes up GOBS of memory. Thanks for making me swap to hard disk with 8GB of RAM to load a grid view. Loading a minimal VM list the VMM console takes my machine ~500MB of memory just to open.
- Job execution speed. All too often I discovered that “Just do it in Hyper-V” or “Failover cluster manager” was the answer to the speed at which jobs would execute and return results to VMM. Basic tasks like editing a machine’s memory can take a minute just to open the GUI, make the change and close it.
- Online editing. Are you joking? IDE drives? Network adapters can’t change their VLANs while powered on?
- Hot adding memory/processors. Wait, what? You’re telling me you can do this with datacenter on VMware but not on Microsoft’s flagship virtualization platform that is bringing them to the cloud era? Yup.
- Memory Limits. 64 GB max in a VM. Ok, maybe this seemed like a lot in 2008/2009, but honestly, it’s tiny. Tying platform releases to other major OS releases really doesn’t allow the product to evolve in order to keep up with changing business needs.
- Maximum number of commands. Highlight 20 VMs and execute a command like power off? Nope! Watch as your server becomes unresponsive to WINRM commands. Yes, you can tweak WinRM and make this “feel” a bit better, but honestly wth?
- Stupid little GUI bugs. Left click VM 1. Shift left click VM5. Right click, VM2 unselects, can’t open properties. Ok, wth. Clear selection by left clicking VM6? VM1 and VM6 are selected! What?!
- More stupid GUI bugs. Click VM 1 on host 1. Click host 2. Click VM2 on Host 2. Power off action. Read GUI “Are you sure you want to power off VM2?”. Accept, watch in horror as VM1 and VM2 power off.
- The job log. Use it for 10 min with a large number of jobs for the window. If you haven’t suicided I’ll buy you a beer.
- Powershell cmdlets. Do you like to hit the pipe? I do. I pipe a lot. In fact, it’s almost as if Microsoft designed powershell around piping objects to other objects for efficiency. Try it. I dare you. get-vm YourFilter | Get-VirtualHardDisk | Remove-VirtualHardDisk. (This is most fun if you have SCSI disks. Warning: Get-VirtualHardDisk won’t be acting on your get-vm filtered output. This command will screw your production servers if they have scsi disks by removing them)
- -Whatif. Whatif SCVMM cmdlet’s didn’t suck? Oh wait, many don’t support -whatif. Oops.
- Memory priority. Set it in Hyper-V. Can’t set in SCVMM. What?
- VM’s getting “locked” by stupid jobs like refresh VM, failing your commands. Isn’t this why we invented queues?
- The get-job cmdlet. Honestly, die.
- Checkpoints disks aren’t removed unless you power the VM off
- Memory swap files (*.bin) cannot be relocated away from configuration file
- Memory swap files cannot be disabled by any means
- Configuration files are XML, but you can’t just copy them from machine to machine. You must Export (to…XML…) then import the machine.
- The concept of the VMM library. F-A-I-L. UNC? Nope. Let’s require an agent.
- Mounting ISOs copies ISO to VM directory regardless of preference.
- ^- Doesn’t always get cleaned up after unmounting
- In Hyper-V its a snapshot, in SCVMM it is checkpoint.
- Some things require Hyper-V manager when you have SCVMM
- Some things require Failover cluster manager when you have SCVMM
- Hyper-V Clusters are a sin unto themselves.
- Cluster shared volumes (And yes, 2012, I know there are improvements but take a moment to consider all the caveats) are a sin
- The fact that apparently no one else on earth actually uses it in production. Just try getting decent support from Microsoft partners or using modern versions of software
- The fact that everything is apparently fixed in the next version. How many versions have I heard this?!
- PXE Boot only on legacy NIC
- Legacy NICs – 100mbitwth
- Synthetic NICs
- Oops they’re just called Network Adapters in SCVMM, not Synthetic
- No VLAN setting in templates
I’ll probably add to this list, and make clean up this list a bit more if I can be bothered to think about Hyper-V and SCVMM anymore. To be honest, I’m glad we’re moving our 16 hosts to ESXi (even standard – hell, free would be better if we had vCenter support for it!).