Virtualization is a term used to refer to a number of ways in which we use to abstract computer resources to, effectively, run multiple operating systems on a single piece of hardware. In more simple terms, it allows you to run multiple virtual “computers” inside a real one. No matter the type of virtualization, the virtualization software runs on the real hardware or “host” computer and allows multiple virtual machines or “guests” to run using their own operating system or the same one as the host is using.
Virtualization allows users to allocate computer resources such as disks, processors, and memory among other things to guests, limiting their effect and resource usage on the host computer.
Virtualization software can be categorized in two ways. It can be categorized by the type of interaction the guest has with the host, and the way that the host runs the virtualization software.
Full Virtualization vs Paravirtualization
When a guest operating system can be run completely inside the virtualization software with no knowledge that it is being “virtualized”, you are using full virtualization. VMware, VirtualBox, and Parallels are among the popular companies that use full virtualization (though VMware can use both). Full virtualization allows the guest kernel to run unmodified which has some advantages because it doesn’t have to be written specifically for a type of virtualization software, but it uses slightly more resources than if it could share with the host operating system.
With paravirtualization, the guest operating system shares resources with the host which requires special accommodations to be made by the guests’ kernel. Since the two can share resources, this gives the guest a slight boost in performance, but limits the user to only being allowed to run guests that are written for that specific virtualization software. Popular types of software using paravirtualization include Xen, VMware, and KVM. Sometimes the host operating system is capable of running virtual machines using the two types at the same time.
Host-based vs Hypervisor
The virtualization software can run on top of a host operating system such as Windows, Linux, or Mac OS X or it can be installed on the bare hardware. Virtualization software that runs on top of another operating system is known as host-based virtualization. The virtualization software can also be run using its own operating system, known generically as a “hypervisor”.
Host-based virtualization has its advantages. It is run on top of an existing operating system which means that the host remains usable as a workstation or other type of server. This is the most popular form of virtualization with hobbyists and those just getting into virtualization as it requires no dedication of hardware. If you want to install a Linux virtual machine on top of your Windows desktop, you don’t have to install anything special on top of Windows except for the virtualization software itself. VMware Desktop, VMware Server, and Parallels Desktop are some of the more popular examples of host-based virtualization.
Its disadvantages, though, are in the fact that one has to maintain the underlying host operating system such as a Linux or Windows system which tend to be rebooted and/or shut down often due to system patching and stability issues.
A hypervisor is an operating system specialized to just run other virtual machines. The underlying hardware is dedicated to running the hypervisor which is a lightweight kernel designed specifically to deal with issues related to processor and memory scheduling issues specific to virtualized environment.
While it seems like an overwhelming amount of information to anyone new to computers or virtualization, I barely scratched the surface of information about virtualization. Much like anything else in working with computers, there are lots of ways that virtualization can be done, each with their advantages and disadvantages.