Virtualization Technology - The Basis of Cloud Computing
Virtualization refers to running multiple virtual computers, or virtual machines, inside a single physical computer. While the basic idea of virtualization is old (dating back to mainframe computers in the 1960s), it has become mainstream only in the last 10-15 years. Today, most new servers are virtualized.
Virtualization is the basis of modern cloud computing.
Virtualization drivers in recent years have included:
More powerful hardware, allowing each machine to run multiple applications simultaneously
Pressure to lower IT costs and simplify IT administration
Need to manage large-scale installations and clusters, such as server farms
Improved security, reliability, scalability, and device independence
Ability to mix multiple operating systems on same hardware.
A hypervisor is an operating system instance, or a software package, that creates and manages virtual machines. The hypervisor typically runs on real hardware and allows multiple virtual machines to run on the same hardware. Virtual machines are also called guests.
Modern hypervisors in the PC world include VMware ESX, VMware Player, Xen, Citrix XenServer, Microsoft Hyper-V, VirtualBox, and QEMU. VMWare Player, VirtualBox, and QEMU are application-layer hypervisors (essentially like normal programs), though they rely on some specialized operating system support for virtualization. Linux KVM and FreeBSD's bhyve are kernel modules that effectively convert a normal operating system into a hypervisor. In fact, it is often possible to log into a hypervisor (e.g., using SSH keys and use it like a normal operating system.
For more information, see virtualization software.
A virtual machine is a virtual operating system instance run under a hypervisor. A virtual machine may run in a cloud service or may be running on a user's desktop or some server hardware.
Generally, a virtual machine looks like just a normal computer and operating system to anyone logging into it over a network. A virtual machine will usually have virtual disks, virtual network interfaces, and often a virtual display.
A typical server will run up to several dozen virtual machines. Some servers may run hundreds or even thousands of virtual machines.
Guest Operating System and Remote Access
A virtual machine can run almost any guest operating system, including Linux and Windows. Linux virtual machines are typically accessed over the network using SSH. Windows virtual machines are often accessed remotely using Windows remote desktop. Many virtualization systems also give access to the host's virtual console display.
Virtual Machine Device Access
A virtual machine uses virtual devices to interact with the host operating system. The host operating system may emulate actual hardware to allow the guest operating system (i.e., the operating system running on the virtual machine) to access storage, network, and other resources.
Many hypervisors and guest operating systems support paravirtualized device drivers. This means that the guest operating system driver does not actually access emulated hardware; instead, it recognizes it is running on a particular hypervisor, and uses a hypervisor-specific communication mechanism to access the hypervisor's device drivers. The hypervisor may control and map access to its device drivers to enforce security and direct the virtual machine to its own virtual storage.
A container is a special kind of virtual machine that has no guest operating system. Instead, it is a group of processes isolated from other processes on the same host using special namespaces. In Linux, these are called
cgroups or control groups.
A virtual network is a network defined inside a computer using a virtual switch that one or more virtual machines or containers may connect to using virtual network interfaces.
From an IP address configuration perspective, a virtual network looks just like any other network segment. A virtual switch is used to pass packets between virtual machines and containers. Sometimes, network address translation is also performed.
Virtual Networks Spanning Multiple Computers
A virtual network may also extend to multiple servers. In this case, it's virtual switch is also connected to a physical network interface. Often the physical network interface is configured to use VLAN tagging to enable multiple virtual networks to share the same physical cable.
Several virtualization software packages are available for Linux and Windows:
Various Linux distributions, such as Red Hat Enterprise Linux, contain virtualization features built-in.
Cloud services also provide virtualization. See the cloud service providers page.