Introduction to Virtualization

Virtualization in the context of VM2 refers to running several virtual systems on a single real system. To software running within it, a virtual system appears almost identical to a real machine - but it can be shut down, created or moved independent of the real system that hosts it.

All virtualization technologies protect the real host system from processes running within virtual systems, and protect virtual systems from each other. This means that it is safe to give root access to a virtual system to someone that you wouldn't trust with access to a real system that is shared between many people. In a virtual hosting business, different customers can be given full access to their own virtual systems, which gives them more flexibility to set them up the way they want without interfering with each other.

The level of isolation between virtual systems varies depending on the system type - some like Xen allocate a fixed amount of disk space and memory to each system, and have powerful controls over CPU used. Others like VServers and Zones share disk space and memory between all virtual systems and the hosts. The difference comes from the level at which virtualization happens - with Xen, each instance runs its own kernel and uses a single file on the host's filesystem as a disk image. With Zones and VServers, all virtual instances share the same kernel and effectively the same filesystem space.

One area where virtual systems do not behave the same as real machines is networking. In the case of Solaris Zones and Linux VServers, a virtualized system cannot configure its own network interfaces. Instead, this must be done by the machine that hosts it, typically by creating one or more virtual interfaces (like eth0:1) which then appear to the virtual system as a real interface (like eth0). Xen systems on the other hand can create their own interfaces, which is useful in a web hosting environment where one virtual system may need several IP addresses for SSL websites.