...And I will say that again -- Linux in a production environment does not belong in VM in the first place.
How do you add memory to a large Java application (requiring >12GB memory), which can't be load-balanced without having significant downtime. To take a server down, pull it out the rack, add 8 DIMMs, get the server back in the rack, and boot it will take at least 15 minutes, but more likely about 30.
Sure, if we had HA clusters everywhere, we could do this without virtualisation, but at the cost of running (roughly) twice the hardware.
We live-migrate the production VM to the spare (Xen) hypervisor, take the hypervisor that getting a memory upgrade down, add DIMMs, boot the box, and live-migrate the VM back, then dynamically increase the memory available to the VM. The last bit that is required is a restart of the application (granted, a minute or two).
Since we were having some failures of the application, and wanted to reduce the proportion of users affected, we at one stage migrated from having 4 production (clustered - where clustering wasn't improving availability) instances to 8 (standalone) instances (where only one application instance can be accommodated on a single OS image). Virtualisation allowed us to do that with less impact than it would have been without virtualisation. We have since added more instances without the cost and delay of procuring/installing/zoning more hardware.