Fully Virtualised Environments in HyperV. Theory meets reality head on!
Chris McKinley | August 13, 2010You may be aware of a constant debate that goes on between myself, Dave and a few others in education about running virtual environments and whether they should/could be 100% virtual of if you would need some physical domain controllers put into the mix. If you’re not familiar with the debate have a quick read of this http://sharepointineducation.com/?p=2056
So as you see, I’ve always maintained that you can have a completely virtual environment and in theory it’s all fine.
Well theory came crashing into reality this week. There was a planned power outage at school; the only flaw in the plan was that no one told us. We made it to the server room just in time to watch the UPS run out and experience the eeary sensation of a silent server room. One of the things to die was a fully virtual environment we have been playing with. The two node hyper v cluster is part of the same domain as the virtual machines that run on them. They both go off because of power and you have no domain. The theory being that you can just log in locally and start the DC, then boot 2nd node then reboot node 1. What I hadn’t taken into account was that the cluster would not load and the DC was not available to boot from the cluster manager.
Lessons were learnt. Here they are.
If running a fully virtual environment the failover cluster and associated cluster shared volume will not start as there is no domain – this is a problem.
We fixed it by removing the cluster volume and just assigning it a drive letter on node 1 of the hyper cluster, the VHD for the domain controller could then be copied onto the local C: of node 1 and fired up via hyper-v manager. The 2nd node could then be fired up and now having a domain to join was fine and the cluster volume was all good. The 2nd DC was then moved to the C: of node 2. Node 1 could then be restarted and all was good from then on.
So if you go fully virtual don’t put all your domain controllers in the cluster, keep them local, one on each node as they can be started independently of shared storage or cluster.
Although I still wouldn’t be brave stupid enough to do this in production









