Kevin Remde's IT Pro Weblog
Hyper-V in Windows Server 2012, Hyper-V Server 2012, and Windows 8 allows the addition, removal, or configuration changes of some key aspects of a virtual machine; even while it’s running. Others, however, are still not able to be changed. And often, the ability to make changes may also be determined by the capabilities of the operating system running in the impacted virtual machine.
For Part 2 of our “20+ Days of Server Virtualization” series, we wanted to give you an overview of what is allowed, and what’s not, with regard to making “hot add” or removal (or configuration) of a virtual machine’s settings. To do this, I’m going to use a picture of the Virtual Machine Settings dialog, and walk right down the list…
Item: Hardware: SCSI Controllers, Network Adapters, and Fibre Channel Adapters
Reason: Modern operating systems still don’t know how to adapt to when a new SCSI Controller or NIC suddenly shows up. So, like a physical machine, plugging those in virtually doesn’t make much sense.
Hot-Add or Change: Nope
Reason: These are configurations that really don’t impact a machine until it’s being started anyway. So being in an OFF state is no big deal here.
Hot-Add or Change: It depends! Have you enabled Dynamic Memory?
Reason: In Windows Server 2008 R2 SP1 Hyper-V we introduced a capability called Dynamic Memory. Originally, Dynamic Memory was the configuration of a minimum and a maximum memory that would be used by a Virtual Machine, and the virtualization host would adjust memory on machines based on resource usage (memory demand) and relative priority settings. Dynamic Memory is a huge boost to virtual machine consolidation ratios (meaning: more VMs on each host), and is really useful in scenarios like Virtual Desktop Infrastructure (VDI).
With Hyper-V in Server 2012 we added the configuration of “Startup RAM” along with the minimum and maximums. When Dynamic Memory is not enabled, your Startup RAM is just the amount of memory that the machine has, and it can’t be adjusted while the machine is running. However, if Dynamic Memory is enabled, you now can set and even adjust the minimum and maximum RAM settings on the fly; as the machine is running.
Hot-Add or Change: No
Reason: I don’t know. It’s just not something you can do. But…
Item: Processor Configuration
Hot-Add or Change: Yes! You can configure and change the Virtual Machine reserve percentage, limit percentage, and relative weight.
Reason: The aspects of some of the performance parameters are completely driven through software, and will impact the performance of a virtual machine relative to the other virtual machines on a host. So making changes to these is perfectly acceptable.
Item: IDE Controller
Reason: There are only two IDE Controllers in Hyper-V virtual machines, in keeping with the very common physical PC motherboard configuration. And there can be only those two. So adding and removing them doesn’t make much sense now, does it?
Item: IDE Disks
Reason: I suspect it has something to do with how we implement IDE as a more direct path to hardware than we do for other emulated items like SCSI controllers.
Sidenote: If you’re wondering why a virtual machine in Hyper-V cannot boot off of SCSI disks (and why you should not care), check out Ben Armstrong’s blog post: “Why Hyper-V cannot boot off of SCSI disks (and why you should not care)”
Item: SCSI Controller
Reason: A virtual machine may have as many as 4 virtual SCSI controllers, but adding or removing them is a hardware change that the guest operating system wouldn’t support.
Item: SCSI Disks
Hot-Add or Change: Yes!
Reason: The virtualization of the SCSI Controller and the kind of emulation we do through (hardware access through the VMBus) allows the addition of or removal of disks as the machine is running.
Item: Network Adapter
Reason: The sudden addition or removal of a NIC isn’t supported in the guest VM operating system, so there’s no real reason to virtualize that kind of a change to a running machine in Hyper-V. However…
Item: Network Adapter Configuration
Hot-Add or Change: Yes!
Reason: Making the change of, for example, the virtual switch to which a virtual NIC is connected to is very much the same as unplugging your RJ-45 cable from one device and plugging into another. And changes such as enabling and configuring bandwidth management, hardware acceleration, or other advanced features are implemented through software, shaping network traffic or performance; which is outside of the physical machine itself. The guest OS and the virtualized machine doesn’t know or care about such things.
Item: Virtual COM Ports
Reason: You’re making an emulated connection to some local (or even network connected) hardware that can be seen by the virtual machine as something being plugged-in or unplugged. As long as the guest operating system can adjust to it, you can make this change on-the-fly.
Item: Virtual Diskette (Floppy)
Hot-Add or Change: Yes
Reason: While you only have one (and ever only one) virtualized diskette drive available in a Hyper-V virtual machine (and it’s more than any of us have seen of actual diskette drives in the past 10 years!), you do have the ability to virtual insert or remove these .VFD files (1.44MB! How did we ever manage!) into your virtual diskette drive. (Which is, as you must imagine, is 3.5 inches.)
So far we’ve only discussed the “Hardware” aspects in the settings of a Hyper-V virtual machine. Under “Management”, you have the ability to make some additional changes to a running VM.
On a running machine, you can modify the machine’s name, the Integration Services enabled, and the Automatic Start and Stop actions. You can not, however, make a change to the Smart Paging File location.
And the configuration of the Snapshot file location isn’t determined by whether or not the machine is running, but instead by whether or not there are any existing snapshots. If there are, then you can’t change this location. If not, then go ahead and change it!
With every version of Hyper-V comes more and more flexibility in terms of what can be configured and changed while a virtual machine is running. All changes mentioned above can also be driven (or not – again depending upon the state of the machine) programmatically using tools like PowerShell and products like System Center 2012 SP1 Virtual Machine Manager (VMM). Much of what is able to be modified on a running system is impacted by practicality, by limitations of the implementation of virtualized hardware, and by the capabilities of the modern operating system and its ability to adjust to those sometimes drastic changes “on-the-fly”.
I hope you’ve found this summary useful, and that you’re taking advantage of all of the “20+ Days of Server Virtualization” posts in our series.
But Hyper-V could (should) allow me to change all settings - I'll happily accept the fact that not everything will take effect immediately (but only after a restart of the VM). Right now, if I want to change the Startup RAM I have to restart the affected VM. If the UI allowed me to change it, I could just change it now and it'll apply as soon as possible. Which would be much more convenient!
Agreed. It would be nice. We can hope that the next version will include something like that. (GREAT IDEA!)
Thanks for sharing.
I am a Hyper-V fan, but Windows enterprise alliws hot add ram and cpu. Other hypervisors allow you to do this, why is Microsoft's hypervisor not able to?