What are the differences between virtualization technologies and products?

I am currently investigating how to set up virtualization on my laptop but I am having trouble finding a good source of information about what different virtualization technology is good at and how it works.

There are a number of products on the market including:

  • Xen
  • KVM
  • VMWare
  • Virtual Box
  • OpenVZ
  • Hyper V

What are the main differences between these in terms of how they work and what they are used for?

As far as I can tell there are some major variables that differentiate the various products:

  • Cost
  • Operating System Support
  • Performance
  • Hardware support (i.e. graphics, usb)
  • Extra features (such as snapshots)

There is also other technology that seems to be commonly referred to in discussions about virtualization, but never explained how everything fits in.

  • QEMU

It would be good to get an explanation of virtualization principles how those relate to the available products out there.

  • Virtualization
  • Virtual Machine
  • Hypervisor
  • Paravirtualization
  • Hardware Virtualization

This question is worded pretty badly so I'll be changing it in time, I just wanted to be able to throw down ideas here while they are in my head. There really wasn't anything out there that explained the concepts and tied everything together so that readers can make an informed decision about what technology they use.


Solution 1:

The main difference between all those solutions is the same reason as why there are so many car companies - it is a big market and everyone thinks they can do it better.

As for your comparison points, everyone will give different answers. Typically, if you just want to mess around and know what you are doing, I would recommend Virtual Box. If you want to do more advanced things, I would recommend VMWare Workstation, if you do not know what you are doing, but just want to virtualise, I would recommend Microsoft Virtual PC.

Qemu is not virtualisation, it is emulation. this means it is slower, but it has its moments and its niche that other products do not fit in to.

As for your direct points:

Virtualization

The process of running a machine virtually, this is the general name of the topic.

Virtual Machine

A name for a single machine that runs virtually on a host.

Hypervisor

A hypervisor is a virtualisation technology which allows for the greatest performance by attempting to run as thin as possible on top of the bare metal hardware.

Paravirtualization

This term is very awkward and is subjective to different people. Typically, most modern virtualisation technology, even those that use a Hypervisor also use paravirtualisation for a few hardware components (e.g. networking controller.). My definition (which I am happy to be corrected on) is presenting virtual hardware which is different to the physical hardware it is actually connected to.

Hardware Virtualization

(typically) Support for virtualisation is built in to the processor directly which increases the performance. For example, in the early days of virtualisation, it was performed via emulation which has extra overhead. Hardware virtualisation is basically a bunch of "shortcuts" inside the processor that allow virtual machines to run a lot faster - in some cases, almost at the same speed as a native machine.

I hope this helps!