views:

2472

answers:

6

We have a physical machine that runs VMware and hosts a VM we use for SharePoint deployment testing. That machine is old and dying, and my employer's network czars are heavily pushing hosted VMs as a replacement for outdated physical servers. I was curious about whether it's possible to run VMware inside VMware, and if so, whether there are severe performance implications. We don't require extreme performance from this setup, since it's just used for SharePoint testing and the associated SQL Server is on a different box. My guess is that we can't just use the primary hosted VM for our testing because we'll want to roll back occasionally and otherwise have more control over it, and getting buy-in for that from the network folks is unlikely. Does anyone have any experience with this?

edit: I know this nesting certainly isn't the preferred option, but (1) we want the flexibility of being able to use VMware snapshots at will and (2) the network folks will not allow us to arbitrarily roll back to a previous point in time because of the potential for removing mandated security updates. My guess is that a local desktop machine running VMware Workstation might just be the way to go. The hosted option seems attractive if it will work though since it's less machine maintenance for me to deal with.

+1  A: 

"whether it's possible to run VMware inside VMware" What?

I can run Windows with Sharepoint in a VMWare machine that's hosted somewhere.

Or, I can run Windows with Sharepoint in a WMWare machine that's actually a VMWare machine that's hosted somewhere.

Why on earth would I add a level of nesting? Why not just go with Windows with Sharepoint hosted somewhere?

You can have any number of VMWares running on a single host. Lots of different versions doing lots of different things.

Nesting them doesn't make sense.

S.Lott
One issue is that we cannot arbitrarily create new VMs on the main hardware. These are hosted VMs and there is paperwork and $$$ required to get one set up, so we can't just create these as easily as on a desktop workstation.
Chris Farmer
@Chris Farmer: Nesting them still doesn't make sense. Pay the $$$'s.
S.Lott
In Red Tape Land, nesting can absolutely make sense.
csj
I hope you never have to write an emulator in Java. It sounds like the VM in the VM would make your head a splode. :)
bzlm
@bzlm: My answer has nothing to do with writing an emulator in Java. That's obvious and easy. My answer is why bother running a VM under another VM? What's the point?
S.Lott
A: 

I can see two solutions for this (three if you count a VM inside a VM which is just crazy).

  1. New hardware, which should be robust enough to handle several VM's used specifically for testing (sharpoint, etc.). In this situation your team could be given more rights without affecting non-testing VM's.

  2. Sharepoint test VM's are moved to the main VM pool and those who need access are given the ability to checkout/deploy/rollback testing resources. This could be direct through VMWare tools or through an internal project that works through a VMWare API.

This should be a joint decision between Network/Dev/Testing.

chills42
I agree it sounds crazy on the surface to VM in a VM, but is it really? I've been unable to find any performance numbers of any kind. I do agree that your #1 is probably the best choice.
Chris Farmer
+3  A: 

I've never run VMware in VMware, but I've run VirtualPC inside VirtualBox without problems, so there's no fundamental reason it shouldn't work I suppose...

It sounds to me more like you have a problem with the inflexibility of your "network czars" than any technical one. If you're a developer or QA you need a testing environment where you can fool around with outdated (and potentially insecure) versions of the OS and applications, without putting the rest of the company network at risk.

bobince
Yeah, that's the key point. We need to screw around without putting the network at risk.
Chris Farmer
+3  A: 

I ran into this same problem. I work at a large company where our entire infrastructure is virtual, so if you need a server you get a VMware VM. So I had a couple of Windows 2003 Server Standard Edition based Guest VM's that had 6GB of memory and 200 GB of disk space, but I wanted to run linux and a LAMP stack on them. So I tried to install VMware Workstation on one and I got an error message saying it couldn't be installed within a VM. I also tried Microsoft Virtual PC and got a similar error message. I installed Sun's VirtualBox and that installed fine, but I couldn't get the networking to work w/in the guest Ubuntu OS. My next step is to try QEMU although performance might become an issue.

methym
+17  A: 

The technical limitation with running VMware inside VMware is that VMware, Virtual PC, etc takes advantage of the Virtualization features present in modern CPUs.

If you have two or more hypervisors are both trying to control Ring 0 then there will be problems, this is something that I've encountered while trying to run both VMware and Virtual PC simultaneously on my desktop - one will error out/crash.

If your hypervisor can interact with the 'parent' hypervisor, then you'll be OK. Alternatively if the child hypervisor doesn't try to use the CPU virtualization features, or entirely emulates the CPU (such as QEMU) then you should also be OK.

Basically old-style hypervisors on old CPUs use Full virtualization (slow) which would be capable of nesting with a heavy, heavy performance hit. modern Hypervisors/CPUs use hardware assisted virtualization (near native performance) and you'd be hard pressed to find a hypervisor that is designed or capable of nested virtual machines.

Finally, I'd really advise against running dev/test VMs on the same physical server that is running production VMs. There's just too much to go wrong and security implications - you need to manage the dev/test environment and it sounds like you shouldn't have access to production environment. Likewise you probably don't want the operations team messing about with your test environment.

UPDATE: ESXi 4 now supports virtualizing itself. See this article for more information

sascha
+1 to give you the populist badge, enjoy :) and of course I like your answer
Shay Erlichmen
+4  A: 

Whatever you do, don't cross the streams!

John Booty