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
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.
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!
Is it really that hard to make UPS windows compliant instead of distributing crap software?
What model of UPS are you using?
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.
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.
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.
For the record – my UPS is the APC Back-UPS XS 1500.
Cheers,
Ben
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.
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).
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,
Ben
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=91
It is very nice. But what about the core edition or the Hyper-V server edition and UPC connection?
That’s also what I would like to know: How can an UPS be handled with Hyper-V R2 Server edition (Core) ?
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?
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?)
Thanks
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.
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.
Toby Groves –
Yup, it is working fine here. I do not know why you are seeing the behavior that you are seeing.
Cheers,
Ben
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.
I'm seeing the same behavior as Toby using a Dell PowerEdge 2900 server with a CyberPower LCD UPS. The UPS stays up and has plenty of power left, but the server shuts down way too soon when initiated by the critical battery action, resulting in a dirty shutdown for the VMs I'm running on the box with Hyper-V.
Anyone else seeing this or have a potential solution? I saw references to this behavior in 2008 and it was supposed to have been fixed in 2008 R2.
This is unbelievable IMHO: social.technet.microsoft.com/…/16e31644-fadb-4d05-9da0-0c0ba4e1ae1e
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…
I too am seeing this hard shutdown issue in Windows 2012. The server shuts down before completely shutting down the VM's
I know this is an old thread, but I want to add my 2 cents on here:
The APC software is pretty crappy in how you have to set up multiple components. I run the core stuff on Hyper-V and the management app stuff on the Windows Server Essentials 2012 R2 VM.
What I like about it is that it gives you voltage information for power events so you can see if your power is up to snuff. Often we get low-voltage conditions that cause power problems with clients in town, and I can see that with the software, whereas I can't with just Windows. So I find value in having access to that information and I don't think I'd give that up. Although I could use a USB cable for the UPS data and have Windows handle shut downs, I have a bit more faith that the software is more correctly judging the time needed to shutdown, so I opted to use a serial cable so that Windows power management doesn't interfere with the software telling it when it's time to shut down.
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.