The practice of partitioning a single server so that it appears as multiple servers has long been common practice in mainframe computers, but has seen a resurgence lately with the development of virtualization software and technologies for other architectures.
The physical server typically runs a hypervisor which is tasked with creating, destroying, and managing the resources of "guest" operating systems, or virtual machines. These guest operating systems are allocated a share of resources of the physical server, typically in a manner in which the guest is not aware of any other physical resources save for those allocated to it by the hypervisor.
The Guest system may be fully virtualized, paravirtualized, or a hybrid of the two.
In a fully virtualized environment, the guest is presented with an emulated or virtualized set of hardware and is unaware that this hardware is not strictly physical. The hypervisor in this case must translate, map, and convert requests from the guest system into the appropriate resource requests on the host, resulting in significant overhead. Almost all systems can be virtualized using this method, as it requires no modification of the operating system, however a CPU supporting virtualization is required for most hypervisors that perform full virtualization.
In a paravirtualized environment, the guest is aware of the hypervisor and interfaces directly with the host system's resources, with the hypervisor implementing real-time access control and resource allocation. This results in near-native performance since the guest sees the same hardware as the host and can thus communicate with it natively. UNIX-like systems, such as Linux, some variants of BSD, Plan9, and OpenSolaris are currently known to support this method of virtualization. However, installing operating systems as paravirtualized guests tends to require more knowledge about the operating system in order to have it use special hypervisor-aware kernels and devices.
Some examples of paravirtualization-capable hypervisors are Xen, Virtuozzo, Vserver, and OpenVZ (which is the open source and development version of Parallels Virtuozzo Containers).
Hybrid or partial paravirtualization, is full virtualization, but in which the guest uses paravirtualized drivers for key components such as Networking and Disk I/O, resulting in greatly increased I/O performance. As such, it is a common solution for operating systems which cannot be modified (for various reasons) to support paravirtualiztion.
One example of a hybrid hypervisor is Kernel-based Virtual Machine.
Virtual private servers bridge the gap between shared web hosting services and dedicated hosting services, giving independence from other customers of the VPS service in software terms but at less cost than a physical dedicated server. As a VPS runs its own copy of its operating system, customers have superuser-level access to that operating system instance, and can install almost any software that runs on the OS. Certain software does not run well in a virtualized environment, including firewalls, anti-virus clients, and indeed virtualizers themselves; some VPS providers place further restrictions, but they are generally lax compared to those in shared hosting environments. Due to the number of virtualization clients typically running on a single machine, a VPS generally has limited processor time, RAM, and disk space.
A growing number of companies offer virtual private server hosting, or virtual dedicated server hosting as an extension for web hosting services. Some web hosting companies call a Virtual Private Server a Virtual Dedicated Server/Dynamic Dedicated Server or the other way around. There are several challenges to consider when licensing proprietary software in multi-tenant virtual environments.