Virtualization solution - virtualization

I am looking into playing around with virtualization and I was wondering if there is any software that acts as the host OS but operates much like virtual box or parallels? What I mean by this is basically is there an "OS" that more or less acts as a window manager for other virtualized desktops?
Thanks!!

Yes, Citrix XenClient does exactly what you're looking for (and they've got a free version, XenClient Express)
Unfortunately due to the nature of virtualization on "bare metal" (without an OS) the Hypervisor (the OS bit that hosts the VMs) needs to be compatible with your exact hardware.
For more information, checkout the XenClient Hardware Compatibility List. The best value machine you can get is probably the Dell Optiplex 780.

Related

Are emulation and hardware-assisted virtualization synonyms?

What is the distinction between emulation and Full Virtualization, also called Hardware-assisted virtualizion (HVM)?
From this source, it is not clear what the relationship is.
Full Virtualization or Hardware-assisted virtualizion (HVM) uses
virtualization extensions from the host CPU to virtualize guests. HVM
requires Intel VT or AMD-V hardware extensions. The Xen Project
software uses Qemu to emulate PC hardware, including BIOS, IDE disk
controller, VGA graphic adapter, USB controller, network adapter etc.
Virtualization hardware extensions are used to boost performance of
the emulation. Fully virtualized guests do not require any kernel
support. This means that Windows operating systems can be used as a
Xen Project HVM guest. Fully virtualized guests are usually slower
than paravirtualized guests, because of the required emulation.
Source: Xen Project Wiki
In the following book these terms are considered synonymous.
At one extreme you have full virtualization, or emulation, in which
the virtual machine is a software simulation of hardware, real or
fictional — as long as there’s a driver, it doesn’t matter much.
Products in this category include VMware and QEMU.
Source: The book of Xen
Following are the excerpts from an article describing the actual difference between emulation and HWM. However, the only distinction I can see is, that virtualization enables to create more than one computing environment.
If emulation takes such a toll, why bother? Because we might want to
do one of the following:
Run an OS on a hardware platform for which it was not designed.
Run an application on a device other than the one it was developed for (e.g., run a Windows program on a Mac).
Read data that was written onto storage media by a device we no longer have or that no longer works.
Source: Russell Kay
Virtual machines offer the following advantages:
They're compatible with all Intel x86 computers.
They're isolated from one another, just as if they were physically separate.
Each is a complete, encapsulated computing environment.
They're essentially independent of the underlying hardware.
They're created using existing hardware.
Source: Russell Kay
There is another article, which only supports my hypothesis.
Emulation, in short, involves making one system imitate another. For
example, if a piece of software runs on system A and not on system B,
we make system B “emulate” the working of system A. The software then
runs on an emulation of system A.
In this same example, virtualization would involve taking system A and
splitting it into two servers, B and C.
So lets consider B=C and we have emulation, dont we?
Please note that virtualization is achieved by emulating the hardware components network adapters, USB, hard disk, CD drives etc in software. Thus emulation actually helps achieving virtualization.
Full virtualization is the technique of virtualization in which the guest OS runs unmodified, that is, the guest is not aware of whether it is running in a virtual machine environment or on a physical machine. Initially binary translation of the guest code was done in order to achieve full virtualization, but it wasn't good from performance perspective.
Para virtualization is a technique which requires modifications in the guest Operating System in order to gain better performance.
Hardware assisted virtualization is full virtualization technique as the guest Operating System runs unmodified. It is called hardware assisted because this type of virtualization utilizes virutalization specific extensions in host hardware like Intel-vtx, AMD-V etc. This technique not only offers full virtualization (guest OS does not require modification) but also has performance benefits and major vendors like Intel and AMD are providing extensions in hardware to support virtualization.

Newbie Hypervisor Questions

If I install a bare-metal hypervisor (say, ESXi), would it allow me to run Windows 7 concurrently with Linux?
Would it allow me to run multiple instances of Windows 7?
When I'm sitting at the PC that's running Win7 and Linux on a hypervisor, which OS do I see when I look at the screen? (I'm suspecting that the only way to access either OS is to do a remote login.)
Assuming the answer to #2 is yes, how do you manage multiple installs of Win7 on the same hard drive?
Thanks in advance!
If you simply want to run Linux and Windows in parallel you may of course do this on e.g. ESXi. Still, the OSes would run with virtualized (or emulated) hardware available to them, i.e. you would not be able to easily access all the hardware directly and the hypervisor itself not only introduces an overhead but this overhead is not deterministic.
If you want to run an RTOS (like Real-Time Linux) or any other RTOS, then you need a "real-time hypervisor".
You can google for such hypervisors - there are a few out there.
(I dont want to recommend one here as we are a vendor of such a solution our selves)
Regards
GFL

When they say OS requires modification, what do they mean in Virtualization?

I'm reading an article about Xen, a virtual machine monitor. They say that an operating system requires some modification in order to be able to act as a guest OS on top of Xen. Now, for an OS like Linux, I can understand what a "modification" might mean but in the case of an OS like say, Windows XP, what does it mean? I mean, XP is closed source proprietary OS right?
It means exactly the same thing. It's just harder because the source is not widely available. Note that the modifications are no longer required when Xen is used in conjunction with hardware virtualization.
Xen was originally a university project. As a researcher (or as a government agency tasked with infrastructure security), you can get the Windows sourcecode from Microsoft. You're just not allowed to distribute your own version of Windows.
This is exactly what they did: they had the sourcecode of Windows XP and then they ported XP to Xen, just to show that if Microsoft were ever to officially support Xen, it would be doable.
On the other hand, although para-virtualization cannot provide an end-to-end virtualization solution, it can improve performance.

Determine if my PC supports HW Virtualization

How, in general, does one determine if a PC supports hardware virtualization? I use VirtualPC to set up parallel test environments and I'd enjoy a bit of a speed boost.
Download this: http://www.cpuid.com/cpuz.php
Also check, http://en.wikipedia.org/wiki/X86_virtualization
Edit: Additional, I know it's for XEN but the instructions are the same for all VMs that want hardware support. http://wiki.xensource.com/xenwiki/HVM_Compatible_Processors
I can't try it from work, but I'm sure it can identify whether you've got the Intel VT or AMD-V instructions. Intel will have a "vmx" instruction and AMD will have a "svm".
On linux you can check /proc/cpuinfo, "egrep '(vmx|svm)' /proc/cpuinfo"
The first thing is to run VPC, open Options, and see if the HW virtualization option is available.
If it isn't you may still have it. Many machines have HW virtualization disabled in the BIOS. If you believe this is the case you'll need to confirm with your processor mfg that MW virtualization is supported, then find out from your BIOS mfg how to enable that feature.
#Nick what processor do you have?
Try cpu-z or SecurAble on windows or on linux, cat /proc/cpuinfo and look for the flags: vmx (Intel) or svm (AMD)
All of those will tell you if the hardware supports it, but as others said it must be enabled in the BIOS. (But checking first will avoid an unnecessary reboot...)
Try just turning the option on in VirtualPC. If it doesn't do anything (or the option isn't available), then your PC doesn't.
Try just turning the option on in VirtualPC. If it doesn't do anything (or the option isn't available), then your PC doesn't.
Some PC's require a BIOS setting to be turned on in order for this option to be enabled. I couldn't find that BIOS setting on my machine, but then again there are a lot of options to comb through. Presumably this is a CPU or motherboard chipset feature, so there must be a list of CPU's that support it.
You can take a look in the BIOS of the machine. It indicates if the machine supports hardware virtualization.
You can run programs like virtual pc even if you machine does not support HW virtualization, but if the machine supports it the program take advantage of this extensions.
Your processor does NOT support hardware-assisted virtualization, but as others have said you can still run virtualization tools.
http://www.intel.com/products/processor_number/chart/pentium_d.htm
http://en.wikipedia.org/wiki/X86_virtualization
first place I'd check

Virtual Machine Benchmarks

I am using VMware Server 1.0.7 on Windows XP SP3 at the moment to test software in virtual machines.
I have also tried Microsoft Virtual PC (do not remeber the version, could be 2004 or 2007) and VMware was way faster at the time.
I have heard of Parallels and VirtualBox but I did not have the time to try them out. Anybody has some benchmarks how fast is each of them (or some other)?
I searched for benchmarks on the web, but found nothing useful.
I am looking primarily for free software, but if it is really better than free ones I would pay for it.
Also, if you are using (or know of) a good virtualization software but have no benchmarks for it, please let me know.
From my experience of Parallels and VMware (on the PC and more extensively on the Mac) the difference between any 2 competing versions of the software is usually quite small and often 'reversed' in the next releases.
I never found Parallels to be much faster (or slower) than VMware - it often would be a case of the state of the VM I was running, the host machine itself and the app(s) I was running within the VM. If VMWare brought out a new release which did something faster, you could be sure that Parallels would improve their performance in that area in the next release, too.
In the end I settled on VMWare Fusion and the key reason for this was just that it played nicely with VMware Workstation on the PC. I have trouble taking Parallels VMs from the Mac to the PC and back again, and this worked fine on VMware. Finally, though this is less of a concern, I was unhappy that sometimes it felt as if Parallels would release a version without proper regression testing - you'd get the up-to-date version and find that networking was suddenly unexplicably broken until they released another patch a few days later. I doubt this is still the case but VMware always felt a little more 'in control' and professional to me.
I'd go for a solution that you can get running in a stable fashion on your PC, that is compatible with your other requirements (such as your co-workers' platforms and your overall budget). You can waste your lifetime trying to measure which one is faster at any given task!
One other thing - it's worth checking the documentation that comes with the software, and any forums etc, before making judgements about performance. For instance, in my experience throwing huge amounts of ram at your VM (at the expense of free ram in the host system) does NOT automatically make it faster; better to split the ram up evenly, and certainly keep an eye on any recommended figure. In VMware, that recommended figure is a good guide.
You'll get best performance if your hardware supports hardware virtualization, such as AMD's AMD-V or Intel's VT, and you enable this feature on the computer and in your virtualization software.
For Microsoft solutions, you need at least Virtual PC 2007 or Virtual Server 2005 R2 SP1, or Hyper-V on Windows Server 2008 (I don't expect you'll rebuild your system just to run Hyper-V, but I thought I'd mention it).
Subjectively I haven't noticed any difference between Virtual PC and VMware Workstation performance; I'm using VMware now as it supports USB virtualization, which Virtual PC doesn't.
You also generally need to install appropriate custom, virtualization-aware, drivers in the guest OS, as the standard drivers are expecting to talk to real hardware. In Virtual PC and Server these are called Additions, in VMware they are VMware Tools.
Anandtech has some great info on virtualization. Although they are not any benchmarks, it provides a great insight on why it is so difficult to do proper virtualization benchmarks. I cannot suggest you a specific product, because it depends very much on your requirements.