Virtualization

Virtualization refers to the abstraction of computer resources. It covers a broad range of techniques, and there is no one agreed definition. VMWare – one of the leaders in the field – describe it, from their perspective, as:

"Virtualization is the representation of a set of 'virtual' Resources which matches their users' needs by abstracting away from the details of the underlying Resources upon which they depend. For example, an analyst with a number of analytic applications to run can be presented with a set of virtual Resources under his management each of which is a Container (with different characteristics) within which he can choose to run his applications. He doesn't need to be confused by details of the real resources e.g. physical machines, operating systems, databases, application servers etc,."

The diagram below illustrates some of the primary uses of virtualization:

virtualization examples

Example 1 shows a virtual Resource which maps directly to an underlying real Resource. However, the mapping could translate the services offered by the underlying resources into services relevant to the user. The mapping might simply rename services, but might also hide complexity and/or create services from mashups of the underlying services. An example is the Transitive software that allows old Mac PowerPC binaries to run on new Intel x86 Macs. The use of a mapping also frees the virtual resource from the physical locality of the real resource which (so long as the system maintains the mapping) can be located anywhere and even move without (potentially) the user of the physical resource being aware of any change. For example, if a physical server fails then a virtual resource can be re-started on another server.

Example 2 shows a number of virtual resources which map onto a single underlying resource. This can be used to give users the impression that they have control over the virtual resource whereas they are sharing the use with a number of other users. This is a very common use of virtualization today. Server consolidation involves running a set of previously separate applications on a single server. Each is encapsulated in a Virtual Machine so that, as in the first example, applications intended for different platforms (e.g. Linux & Windows) can all run on the same server. The Virutal Machine software also ensures that the applications cannot interfere with each other.

Example 3 shows a virtual resource which maps onto a number of underlying resources. In this case the system might load balance across the underlying resources giving the user a cluster abstraction, or the virtualization might just be used to hide complexity from the user.Examples are web services that accept requests at a single URL, but balance the requests across a cluster to give scalability. Note, that the underlying resources might themselves be virtual resources, so that layers of virtualization might be in use.

Examples of Virtualization Technologies:

    'Hosted resource' Virtualization Technologies

    • Amazon Elastic Compute Cloud (EC2)
    • Sun Grid Compute Utility

    Operating System Virtualization Technologies

    • VMware
    • Xen
    • Vserver
    • Virtual PC

    Storage/Data Virtualization Technologies

    • JEE 5/J2EE Data sources
    • Tangosol's Coherence
    • Veritas Volume Replicator
    • ADO.NET
    • Oracle Replication
    • MySQL dump/restore

    API's, tools and libraries

    • libvirt - this is a library and API backed by both RedHat and IBM. Their intention is for this library API to change as little as possible over time, making it easier for developers to integrate with.