Setting up Hyper-V with a UPS
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!
Cheers,
Ben
Comments
Anonymous
October 21, 2009
Indeed all the software that comes with UPS devices is more or less lousy. Go figure. Of course I am talking about simple workstation/server UPS devices. I wonder whether there is a list of UPS devices that are automatically recognized by Windows. For example my Windows 7 doesn't have a clue about my Socomec UPS.Anonymous
October 21, 2009
i've tried a few UPS's and the APC ones seem to be the only ones that work with vista, 2k8 and win7 enabling suspend (unless using hyper-v!) and power saving settings to be controlled natively by windows. i'd only buy apc in the future because of this. all my PC's running vista or newer have their settings rolled out by group policy now and there is no need to install APC software anyware!Anonymous
October 21, 2009
The comment has been removedAnonymous
October 21, 2009
What model of UPS are you using?Anonymous
October 21, 2009
Socomec NeTYS PE 800VA. They provide Uni Vision software which is $#$#%#"&#!. http://www.socomec.com/presentation-netys-pe.html The funny thing is that this isn't really a no-name UPS. On the good side it is passively cooled - no fans thus no noise.Anonymous
October 21, 2009
the eaton/powerware ups's are a fairly large well known brand too and I had no luck with them. i'm sure it can't be that hard for these other vendors to create an ACPI compliant UPS interface.Anonymous
October 22, 2009
Another Socomec user here...with the same issue, not to mention there's no way to turn off the alarm permanently. I really don't need to be waken up at night so I can manually turn it off... Their support was less then helpful in this area as well.Anonymous
October 24, 2009
For the record - my UPS is the APC Back-UPS XS 1500. Cheers, BenAnonymous
October 27, 2009
A correction on the saved state. It is my understanding that the machines will only resume if the option is set to do so on the virtual machine itself. Under Virtual Machine Settings --> Automatic Start Action there are 3 options Nothing Auto Start if was running when service stopped Always Start This setting must be set correctly to get the desired results.Anonymous
October 27, 2009
Hi, You need to aware with some issues with the built-in Windows support for USB connected UPS-s especially on servers. Some APC models and almost all of Eaton ones behave normally during shutdown, but the UPS does not restart when power is restored (You have to manually start the UPS).Anonymous
October 28, 2009
Tracy Sells - Correct, but "Auto Start if was running when service stopped" is the default setting for virtual machines. Toma Bussarov - Interesting, I will have to look into this. Cheers, BenAnonymous
November 18, 2009
Hey Ben, your article inspired me to get one of those APC UPS's. I waqs a bit disappointed that the added software only shuts down one system, rather than any number you want. Since you mentioned W2K8 now 'sees' the UPS, I used WMI in a VBScript to poll the UPS, and shut down any number of machines I want! http://www.servercare.nl/Lists/Posts/Post.aspx?ID=91Anonymous
November 25, 2009
It is very nice. But what about the core edition or the Hyper-V server edition and UPC connection?Anonymous
November 29, 2009
That's also what I would like to know: How can an UPS be handled with Hyper-V R2 Server edition (Core) ?Anonymous
December 05, 2009
Is there a way I can run a script from a Server 2008 Hyper-V session that shuts down processes within VM's running on it? I know with physical servers PSShutdown can shutdown a remote machine via IP. What would be the way to script it so that I can upon the host machine getting the power out signal from the UPS then invoke a batch file on the virtual machines which would shutdown various processes on the virtual machine and then shutdown the system altogether?Anonymous
December 13, 2009
Can Windows Server 2008 R2 detect a APC UPS connected over serial and have the same power control fuctions as USB? (or is that a special feature of USB?) ThanksAnonymous
May 24, 2010
To connect UPS to a MS Windows workstation via USB, be sure taht UPS supports HID protocol. In this case windows automatically recocnize the UPS and you can find it in windows control panel. Miha, also Socomec UPS support HID (nt only APC!) but depends on the UPS model.Anonymous
June 25, 2010
You say you've tested this - are you sure? I've configured my server in the same way, albeit using the low battery action to shutdown the server. Whilst this works, it shuts down the Hyper-V server immediately, without first shutting down the running virtual machines. If I shutdown the server manually, it all works as expected.Anonymous
June 30, 2010
Toby Groves - Yup, it is working fine here. I do not know why you are seeing the behavior that you are seeing. Cheers, BenAnonymous
November 02, 2010
Another Method for handling APC UPS units is provided by an open source project APCUPSD. They support Windows, Linux and Mac systems. Just Bing or Google for APCUPSD at the Source Forge site you will find source and binary code for USB 3.0 USB 2.0 and USB 1.1. The main reason for my using their software is they provide remote monitoring via PHP script and maintain logs. It has been very easy to do "forensics" on why a local or remote system went down. This has worked for my Linux and Windows systems.Anonymous
June 28, 2011
The comment has been removedAnonymous
July 12, 2012
This is unbelievable IMHO: social.technet.microsoft.com/.../16e31644-fadb-4d05-9da0-0c0ba4e1ae1eAnonymous
December 24, 2012
Just got an APC USB UPS... and (on Windows 2012 Server) I am also getting the "hard shutdown" behavior. There's power left, but the server shut down in a few seconds, not letting HyperV save states, etc...Anonymous
February 24, 2013
I too am seeing this hard shutdown issue in Windows 2012. The server shuts down before completely shutting down the VM'sAnonymous
January 28, 2015
The comment has been removedAnonymous
November 23, 2015
I know this is an old post, but I am desperate for some help with Windows Server 2012 R2. I have the Hyper-V role installed and have followed this article, but there is a problem. The host shuts down in a matter of seconds and doesn't allow enough time for guests to either save state or fully shutdown. I can initiate a restart/shutdown normally through the GUI and this doesn't happen. Can anyone provide guidance on how I can adapt this older approach to Server 2012 R2 Standard with Hyper-V? I only have a BackUPS 750G for this backup Hyper-V host and don't want to use Powerchute.