VMware ESX/ESXi: Hot add RAM and CPU
There is no end to the benefits that can be wrought from a virtual infrastructure. One of the huge improvements found in virtual vs. physical infrastructure is the ease with which additional computing resources can be added to virtual machines. In the physical world, adding resources such as RAM and processing power required a hardware order, downtime planning, installation and then hope that everything would continue to operate as it did before the upgrade, except with additional resources. With the ability for ESX/ESXi-based virtual machines to hot add additional RAM and processors, the addition of these resources can be accomplished with exactly zero downtime, as long as you've taken the appropriate steps and your guest machine is running an operating system that supports this feature.
Let's start by getting a look at the Microsoft-based guest operating systems that can support hot-add features found in ESX and ESXi 4.1. The chart below shows you a list of the Windows Server 2008-based operating systems that support particular hot-add features. I've pulled this information from VMware's support documentation. In a future post, I'll provide a significantly expanded list of operating systems that includes Linux systems, but it should be noted that hot adding RAM is pretty well supported in Linux – especially in newer versions of the kernel. In some Linux editions – i.e. SUSE Linux Enterprise Server 11 – both hot adding RAM and vCPUs is supported.
Personally, I don't find VMware's compatibility guide all that accurate, particularly when it comes to adding virtual CPUs to running virtual machines. For example, I've successfully been able to add CPUs to a running Windows Server 2008 R2 Enterprise and it was immediately recognized and usable without a reboot being necessary. That said, the system started out with 2 vCPUs so moving to 3 vCPUs wasn't a big deal. According to the VMware compatibility guide, hot plugging this additional CPU to W2K8 R2 Enterprise shouldn't have worked (or, at the very least is "Not Supported").
By default, virtual machines don't support Hot Add (add RAM) and Hot Plug (add vCPU). You need to enable this capability on a per-VM basis in order to use it. To do so, you must first shut down the virtual machine since you can't modify these settings while it's running. Then, open the virtual machine's properties, navigate to the Options tab and choose the Memory/CPU Hotplug option in the Advanced section. At the right-hand side of the window, note that there are two section – one for memory and one for CPU. Choose the options you like and then click OK. After this setting is changed, you can restart the VM.
Now, when you look at the VM details, notice that you're provided with the maximum hot-add memory for the VM. In this case, that's 64 GB.
When I look at the system properties for the VM, here's what I see: 4 GB of RAM and 2 processors.
While the VM is running, I'm going to increase this to 6 GB of RAM and 3 processors.
Without a reboot, here is what I now see in the system properties.
And he's a look at the Task Manager showing 3 CPUs and 6 GB of RAM
If you've successfully hot added RAM or CPU to a running virtual machine, respond to this posting (or, leave a response to my forum posting) with your operating system, edition (standard, enterprise, etc), service pack level/kernel version, and architecture (32/64-bit). If enough people respond, I'll compile all of the results into a usable format and republish it.
Follow me on Twitter: http://twitter.com/otherscottlowe