Virtual private server
|This article does not cite any references or sources. (November 2012)|
|Part of a series on|
|Internet hosting service|
|Application-specific web hosting|
|By content format|
A virtual private server (VPS) is one of many virtual machines running on a single computer. They are often used by Internet hosting services. Although a VPS runs in software on the same physical computer as other customers' virtual machines, it is in many respects functionally equivalent to a separate physical computer. A VPS is dedicated to the individual customer's needs, has the privacy of a separate physical computer, and can be configured to run server software.
The concept behind server virtualization is a specific example of the same concepts that led to the development of time-sharing and multiprogramming. Generally, client users tend to ask for computer resources in a "bursty" fashion, demanding fast-as-possible response to requests, but then entering long periods of no activity while they examine the results. During these idle periods, the computer's resources can be used to service requests from other clients. This model makes more efficient use of the computer's resources by reducing the time the system is idle, regardless of user patterns. It also allows the users to share resources, save files on a hard drive, or take turns using a printer.
Virtualization extends this basic concept to the computer as a whole. In the traditional model, the operating system shares access to the resources, but there is still a single machine being shared. In the virtual server model, the virtualization software instead provides the illusion of more than one computer, hard drive, printer, etc. Although the resources are still shared, as under the time-sharing model, virtualization provides a higher level of security as the individual virtual servers are isolated from each other. Each virtual server can run its own full-fledged operating system and can be independently rebooted. This is valuable as it allowed businesses to run their legacy applications on older versions of an operating system on the same server as newer applications.
Partitioning a single server so that it appears as multiple servers has long been common practice on mainframe computers and mid-range computers such as the IBM AS/400. It has become more prevalent with the development of virtualization software and technologies for microcomputers.
The physical server typically runs a hypervisor which is tasked with creating, releasing, 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.
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. In this environment, the hypervisor implements 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, Plan 9, 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.
Hybrid paravirtualization (a.k.a. partial paravirtualization) is full virtualization, but in which the guest uses paravirtualized drivers for key components such as networking and disk I/O. This results 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 paravirtualization.
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, such as 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. There are several challenges to consider when licensing proprietary software in multi-tenant virtual environments.
With unmanaged hosting, the customer is left to administer his own server.
Unmetered hosting is generally offered with no limit on the amount of data-transferred on a fixed bandwidth line. Usually, unmetered hosting is offered with 10 Mbit/s, 100 Mbit/s or 1000 Mbit/s (with some as high as 10Gbit/s). This means that the customer is theoretically able to use 3.33~ TB on 10 Mbit/s, 33~ TB on 100 Mbit/s and 333~ TB on a 1000 Mbit/s line per month (although in practice the values will be significantly less).
Cloud servers 
A VPS which is dynamic (that is, it can be changed at runtime) is often referred to as a cloud server. Key attributes for this are:
- Additional hardware resources can be added at runtime (CPU, RAM)
- Server can be moved to other hardware while the server is running (automatically according to load in some cases)
Also referred to as Virtual Dedicated Server
See also 
- Hybrid server
- Operating system-level virtualization
- Remote Desktop Protocol
- Unix shell
- Virtual machine
- Linuxconf Project. "Virtual private servers and security contexts". Retrieved 2013-03-22.