I have a (very) powerful machine with an i7 and 12GB of ram. I want to be able to basically run a nothing for an OS in the background to host a VM which would serve as my main machine. This would hopefully allow me all the benefits associated with VM's (snapshots, no driver problems with guest OS, etc.) My problem with trying this setup is worrying that the VM system will not function nearly as well (or even close to as well) as a native system. Is there any VM system which would allow basically all of my system resources to be "stolen" by the VM and run on a basically bare OS. I've had great success with VMware workstation running XP clones etc. at work for testing applications and want the flexibility that the VM offers on my home rig running Win7. Thoughts?
Edited to add some discussion on types of hypervisor:
Type 1 Hypervisor: Often called a Bare-Metal Hypervisor. Here the Hypervisor is the direct owner of all resources, it handles the device IO interfaces directly. This type of Hypervisor needs to have drivers for all hardware on the system it is running on. Developing\Certifying all those hardware drivers is a lot of work.
Type 2 Hypervisor: A host OS is the direct owner of all resources and the Hypervisor runs as an application under that - it leverages the hardware abstraction layers of the Host OS. This is obviously a lot easier to build as someone else handles most of the hardware\driver certification.
Most Bare Metal Hypervisors today are designed for server environments. They do not provide any advanced user interface capability on they physical console of the host running the Hypervisor. ESX\ESXi\Xen\Hyper-V Server are good examples of these - all interaction with the VM guests is either via remote console over a network connection or limited to a text only local console. Desktop Virtualization with these Hypervisors uses a remote desktop protocol (VNC, ICA, RDP..) to present the desktop to the user.
The use case you describe needs a Type 1 Client Hypervisor. This is a bare metal Hypervisor that also provides direct interactive access to the user interface components (especially an accelerated GUI desktop) of the guest VM's from the physical console of the system the Hypervisor is running on. Citrix & VMware have both announced they are working on these - there is a good overview by Brian Madden here on why this is now being looked at seriously. Neocleus have a working product on the market apparently but I have no idea how well it performs, and there is also Virtual Computer.
You've captured some of the end user benefits (hardware independence, Snapshotting of entire machine state) but the money in this market is really trying to capture the extended benefits for IT departments - a good Type 1 Client Hypervisor can be used to create highly uniform, easily secured client environments on a large scale without sacrificing any performance at the client interface - this is potentially very appealing for businesses trying to bring desktop environment management under control. That is why the products that are currently available are targeted at Corporate environments but I'm hoping that the Citrix\VMware Type 1 Hypervisors will be able to be used effectively for stand alone clients when they become available.
Type 1 Hypervisors typically incur a Virtualization overhead that consumes between 5-10% of the underlying resources. That is very subjective though - some things scale very well in Virtualized scenarios and server solutions that outperform racks of discrete servers for some applications can be built. On a Client Hypervisor that's not really going to happen but I'm hoping that when we start to see this hitting the market that we will be looking at >95% of native performance across the board.
At the moment though the only mature Client Hypervisors are all Type 2 and they are now getting to be pretty good. As an example of how much performance may be lost (or not) with a good Type 2 Hypervisor - I'm running VMware Workstation on my Dell M1330 Laptop where the installed Host OS is Windows Vista 32bit.
It's raw Windows Experience score for Windows Vista Ultimate 32 bit is:
Processor : 5.1 Memory: 5.8 Graphics 4.1 Gaming Graphics: 4.7 Hard Disk: 5.4
Guest OS (Windows 7 Ultimate RTM)
Processor : 4.3 Memory: 4.5 Graphics 2.9 Gaming Graphics: 4.3 Hard Disk: 6.4
Windows 7 RTM installed natively on the same hardware:
Processor : 5.5 Memory: 5.5 Graphics 4.1 Gaming Graphics: 5.3 Hard Disk: 5.9
So there's a 20% loss of CPU, Memory & gaming graphics performance, 33% loss in 2D graphics and what appears to be an improvement in HDD performance (I think this is mostly because the Virtual HDD is located on a fast part of the underlying disk). You can easily measure the performance difference but to be honest it's hard to tell that this is running in a VM at times. That said, if I could get a Client Hypervisor that gave me 95% (or even 90%) of native performance I'd jump on it in a heartbeat.
ESX, and XenServer are excellent bare metal hypervisors, but I'm guessing you want to be able to view the desktop for your guest machine locally (Keyboard, Mouse, and Monitor attached to the host machine), and not remotely through RDP. You're probably better off just running Windows 7 natively on this hardware.
Vmware ESXi should do the trick. It runs it on OS. Very great, super fast.
You need something like VMWare ESX. I don't know of any free alternatives, but I'm sure others will chime in.
Both are free, at least for the basic package, but XenServer provides the most features for free. VMWare has a slightly better management interface but gets costly when you require more than the basic functionality.
I'm not sure how you would connect to the desktop of one of the VM's though. It's usually done via Remote Desktop, not on the console itself.
As others have said, there are bare-metal hypervisors which have minimal footprint, but are designed for servers and provide no way to access the guest UI locally, and a very bare-bones host UI. You have to access the guest via RDP from another machine. If that's what you want, it will work fine.
Your other alternative is to use a type 2 hypervisor, but to use a host operating system with as small a footprint as possible. I'd suggest using a very minimal Linux OS with a very simple X window manager (xfce4, or something even simpler like ratpoison). Turn off pretty much all background services, even stuff like the system logger, cron, etc. You should be able to get the host OS down to basically zero CPU consumption and less than 80 MiB RAM consumption.
My approach to setting up the host would be to start with a minimal Debian system. When the installer asks what collection of packages to install, don't select any. Then after the base system is running use apt-get to install the window manager and X. If you want to get really aggressive, you might try recompiling the kernel with only the necessary components installed, and all of them compiled in, not modules. That's unlikely to net returns worth the effort, though.
Also, if you're using a VM tool that can do it, install your virtual machine on a separate partition rather than storing it in files (check to make sure you an still do snapshotting, etc. with this config).
That still won't get your guest running at 100% of native speed, because there is some unavoidable overhead. But it'll be close enough that you'll probably never notice the difference. Also note that there will be some things dependent on direct access to the hardware that won't work. For example, Direct3D will likely not work, and definitely will not work as well as if Windows were running natively, so some games will suffer (assuming this is a machine you might game on).