People have asked me how you go about setting up a UPS (Uninterruptable Power Supply) with Hyper-V. This is much easier than it sounds. The first thing to understand is that when you shut down the physical computer, the virtual machines will be automatically put into a saved state. Virtual machines that were running when the server shuts down will be started automatically when the physical computer starts back up.
This all means that – for the most part – things “just work” when you connect a UPS and configure the management operating system like you would for a stand alone computer.
Depending on your environment – there are some configuration changes that you may want to make:
- Changing the automatic stop action
As I mentioned, Hyper-V will save state any running virtual machines when the physical computer shuts down. Depending on how much memory is assigned to the virtual machine, and the software installed inside the virtual machine, you may prefer to have the virtual machine shut down instead. I have gone with this option on my server at home:
- Changing the automatic start action
Only virtual machines that were running when the system was shut down will be started automatically. If you are paranoid, like me, you can go in and configure essential virtual machines to always start automatically – even if they were not running when the physical system was shut down:
You can also configure start up delays, to ensure that more important virtual machines are started first.
- Setting aside enough time for system shut down
This one is critical. It can take a while for Hyper-V to shutdown as we are trying to save state / shut down a bunch of virtual machines. For this reason you need to ensure that your system starts shutting down with enough battery life left in order to make it through the whole shut down process.
My personal UPS story:
You would not believe, but living in north Redmond the power quality around here is lousy. I often get strange power surges / flickers – and have to deal with half a dozen black-outs of one hour or more each year. Needless to say I have lost a bunch of hardware over the years as a result of this.
A while ago I went out and bought a nice beefy UPS to protect my Hyper-V server and all of my networking gear. To start with I just hooked up the power and confirmed that I could run for about 30 minutes before running out of power. I connected the USB monitoring cable, but did not setup any monitoring software, for a couple of reasons:
- I got an APC UPS. I love these guys for their hardware – I hate them for their software. For that matter, I do not know of any UPS provider where I would be happy to install their monitoring software on my servers.
- I am lazy.
Recently, when I was performing some hardware maintenance on in my Hyper-V server I decided to go and have a look in the device manager to see what Windows thought about my UPS. Much to my surprise I saw that Windows had detected the presence of a UPS battery with no intervention from me:
Once I noticed this I decided to have a look around – and I discovered that Windows had enabled standard power support – and was acting like my server was essentially a really big clunky laptop. I had a battery icon in the task bar that accurately reflected the amount of charge in my battery, and when I disconnected power from the UPS – Windows immediately knew about it.
Next I opened the power policy settings and configured my system to get a low battery alert when the battery was at 75% charged, and to shut down when the battery reached 50% charged:
I have since tested this – and everything works perfectly – all with no need for anything other than the “in-box” capabilities of Windows Server 2008 R2. Neat!