Different kinds of virtualizations

According to wikipedia.org ,

Virtualization is a broad term that refers to abstraction of computer resources

It’s primarily used by organizations to conserve physical space (apart from other reasons). Consider an organization that has a lot of PCs. For a system administrator, it’s a task to move around managing all those systems. Enter virtualization. What we can now do, is, instead of having many low-performance systems, we can install a single powerful, high-performance system. All the earlier systems can be virtualized in this single system. To the end user, there should be no difference. But to an administrator, it’s a lot of work saved, and by some reports, your power bill goes down as well.

There are many kinds of virtualization technologies, the 3 most prominent are,

  • para virtualization
  • full virtualization
  • OS virtualization

This is what fits exactly with the explanation above. We can run multiple OS’s in our host system. As far as the guest systems are concerned, they are running on their own individual hardware. The host takes care of all the calls that the guests make into the hardware and translates them accordingly. An example of this is KVM.

There exists a performance drop in full-virtualization due to the overhead needed by the host-OS to translate the calls made by the guest OS’s into the hardware. One way around this limitation is to let the guest OS be aware that it’s virtualized. The result, is that when needed to access the low-level hardware, the guest OS makes a different kind of request (than usual) into the host system. The host understands this better and as a result we get better performance than in a full-virtualized system. A limitation with this system, the obvious, is that we’ll need to modify the guest OS to make it virtualization-aware. And to my knowledge, these modified guests cannot run on regular hardware. They must stay in a virtual environment. An example of this is Xen.

I made this term up. It seems that there is no “name” associated with it, yet. It’s very similar to para-virtualization in many respects. The difference is that we don’t virtualize the hardware here, but rather the OS. It’s a concept I’m not too comfortable with, but it works by sharing a single kernel between the host system and the guests. The result is that the guest systems perform at native speeds. The caveat is we’re limited to Linux systems. You can’t virtualize anything else. An example is OpenVZ.