Virtualization

From Wikipedia, the free encyclopedia

VMware Workstation  running Ubuntu, on Windows, an example of full virtualization
VMware Workstation running Ubuntu, on Windows, an example of full virtualization

In computing, virtualization is a broad term that refers to the abstraction of computer resources. Virtualization hides the physical characteristics of computing resources from their users, be they applications, or end users.[1] This includes making a single physical resource (such as a server, an operating system, an application, or storage device) appear to function as multiple virtual resources; it can also include making multiple physical resources (such as storage devices or servers) appear as a single virtual resource.[2]

The term has been widely used since the 1960s, and has been applied to many different aspects and scopes of computing—from entire networks to individual capabilities or components. The common theme of all virtualization technologies is the hiding of technical detail, through encapsulation. Virtualization creates an external interface that hides an underlying implementation (e.g., by multiplexing access, by combining resources at different physical locations, or by simplifying a control system). Recent development of new virtualization platforms and technologies has refocused attention on this mature concept.

Virtualization is used in many different contexts, which can be grouped into two main types: platform virtualization, involving the simulation of whole computers, and resource virtualization, involving the simulation of combined, fragmented, or simplified resources.

Contents

[edit] Processing virtualization

The original sense of the term virtualization, dating from the 1960s, is in the creation of a virtual machine[citation needed] using a combination of hardware and software. For convenience, we will call this platform virtualization.[original research?] The term virtual machine apparently dates from the experimental IBM M44/44X system. The creation and management of virtual machines has also been referred to as creating pseudo machines, in the early CP-40 days, and server virtualization more recently. The terms virtualization and virtual machine have both also acquired additional meanings through the years.

Platform virtualization is performed on a given hardware platform by host software (a control program), which creates a simulated computer environment, a virtual machine, for its guest software. The guest software, which is often itself a complete operating system, runs just as if it were installed on a stand-alone hardware platform. Typically, many such virtual machines are simulated on a single physical machine, their number limited only by the host’s hardware resources. Typically there is no requirement for a guest OS to be the same as the host one. The guest system often requires access to specific peripheral devices to function, so the simulation must support the guest's interfaces to those devices. Trivial examples of such devices are hard disk drive or network interface card.

There are several approaches to platform virtualization, listed below based on how complete a hardware simulation is implemented. (The following terms are not universally-recognized as such, but the underlying concepts are all found in the literature.[citation needed])

Emulation or simulation
The virtual machine simulates[clarify] http://en.wikipedia.org/wiki/Emulator#Emulate_or_Simulate.3F the complete hardware, allowing an unmodified "guest" OS for a completely different CPU to be run. This approach has long been used to enable the creation of software for new processors before they were physically available. Examples include Bochs, PearPC, PowerPC version of Virtual PC, QEMU without acceleration, and the Hercules emulator. Emulation is implemented using a variety of techniques, from state machines to the use of dynamic recompilation on a full virtualization platform. http://en.wikipedia.org/wiki/List_of_emulators
Native virtualization and full virtualization
The virtual machine simulates enough hardware to allow an unmodified "guest" OS (one designed for the same CPU) to be run in isolation. This approach was pioneered in 1966 with IBM CP-40 and CP-67, predecessors of VM family. Examples outside mainframe field include Parallels Workstation, Parallels Desktop for Mac, VirtualBox, Virtual Iron, Virtual PC, Virtual Server, VMware Workstation, VMware Server (formerly GSX Server), QEMU, Adeos, Mac-on-Linux, Win4BSD, Win4Lin Pro, and Egenera vBlade technology.
Hardware enabled virtualization
The hardware provides architectural support that facilitates building a virtual machine monitor and allows guest OSes to be run in isolation [3]. In 2005 and 2006, Intel and AMD provided additional hardware to support virtualization. Examples include Linux KVM, VMware Workstation, VMware Fusion, Microsoft Virtual PC, Xen, Parallels Desktop for Mac, and Parallels Workstation.
Partial virtualization (and including "address space virtualization")
The virtual machine simulates multiple instances of much (but not all) of an underlying hardware environment, particularly address spaces. Such an environment supports resource sharing and process isolation, but does not allow separate "guest" operating system instances. Although not generally viewed as a virtual machine category per se, this was an important approach historically, and was used in such systems as CTSS, the experimental IBM M44/44X, and arguably systems like MVS and the Commodore_64 (a couple of 'task switch' programs). (Many more recent systems, such as Microsoft Windows and Linux, as well as the remaining categories below, also use this basic approach.)
Paravirtualization
The virtual machine does not necessarily simulate hardware, but instead (or in addition) offers a special API that can only be used by modifying[clarify] the "guest" OS. This system call to the hypervisor is called a "hypercall" in TRANGO and Xen; it is implemented via a DIAG ("diagnose") hardware instruction in IBM's CMS under VM[clarify] (which was the origin of the term hypervisor). Examples include VMware ESX Server, IBM's LPARs[4],Win4Lin 9x, Sun's Logical Domains, z/VM,[citation needed] and TRANGO.
Operating system-level virtualization
Virtualizing a physical server at the operating system level, enabling multiple isolated and secure virtualized servers to run on a single physical server. The "guest" OS environments share the same OS as the host system – i.e. the same OS kernel is used to implement the "guest" environments. Applications running in a given "guest" environment view it as a stand-alone system. Examples are Linux-VServer, Virtuozzo (for Windows or Linux), OpenVZ, Solaris Containers, and FreeBSD Jails.
VMware ThinApp uses Application Virtualization technology
VMware ThinApp uses Application Virtualization technology
Application Virtualization
Using a software virtualization layer to encapsulate a desktop or server application from the local operating system. The application still executes locally using local resources, but without being installed in the traditional sense[5]. Application resources and components such as files and settings are typically stored a single package that is interpreted by the virtualization layer, and presented to the application as if they were installed on the local operating system where the application expects them. This is in contrast with running the application as conventional local software (i.e. software that has been 'installed' on the system so that its files and configuration settings actually reside locally). Since the virtual environment acts as a layer between the application and the operating system, it is able to intercept and address application conflicts and application-OS conflicts. Examples include the Sun Java Virtual Machine, Microsoft Application Virtualization, VMware ThinApp, Altiris, and Trigence. (This approach to virtualization is clearly different from the preceding ones; only an arbitrary line separates it from such virtual machine environments as Smalltalk, FORTH, Tcl, P-code, or any interpreted language.)
Cross-platform virtualization
Running an application compiled for a specific CPU and operating system on a platform with a different CPU and operating system, without modification to source code or binaries. Examples include Apple Rosetta, IBM PowerVM Lx86 and Transitive QuickTransit.

As of 2006, recent tools and technologies for virtualization are providing new alternatives for application virtualization and application streaming.

[edit] Resource virtualization

The basic concept of platform virtualization, described above, was later extended to the virtualization of specific system resources, such as storage volumes, name spaces, and network resources.

  • Resource aggregation, spanning, or concatenation combines individual components into larger resources or resource pools. For example:
    • Virtual memory, usually providing a different virtual address space for each application, which allows uniform, contiguous addressing of physically separate and non-contiguous memory and disk areas
    • RAID and volume managers combine many disks into one large logical disk.
    • Storage Virtualization refers to the process of completely abstracting logical storage from physical storage, and is commonly used in SANs. The physical storage resources are aggregated into storage pools, from which the logical storage is created. Multiple independent storage devices, which may be scattered over a network, appear to the user as a single, location-independent, monolithic storage device, which can be managed centrally.
    • Channel bonding and network equipment use multiple links combined to work as though they offered a single, higher-bandwidth link.
    • Network virtualization technologies create a virtualized network addressing space within or across network subnets. This includes virtual private network (VPN), virtual LAN (VLAN), and network address translation (NAT).
    • I/O virtualization, the ability to run any I/O device on any server at any time and migrate that I/O device from server to server as needed, such as IBM Virtual I/O Server (VIOS).
  • Partitioning is the splitting of a single resource (usually large), such as disk space or network bandwidth, into a number of smaller, more easily utilized resources of the same type. This is sometimes also called "zoning," especially in storage networks.
  • Encapsulation[citation needed] is the hiding of resource complexity by the creation of a simplified interface. For example, CPUs often incorporate cache memory or pipelines to improve performance, but these elements are not reflected in their virtualized external interface. Similar virtualized interfaces hiding complex implementations are found in disk drives, modems, routers, and many other "smart" devices.

[edit] Virtualization examples

The following examples illustrate applications of virtualization.

Server consolidation 
Virtual machines are used to consolidate many physical servers into fewer servers, which in turn host virtual machines. Each physical server is reflected as a virtual machine "guest" residing on a virtual machine host system. This is also known as Physical-to-Virtual or 'P2V' transformation.
Disaster recovery 
Virtual machines can be used as "hot standby" environments for physical production servers. This changes the classical "backup-and-restore" philosophy, by providing backup images that can "boot" into live virtual machines, capable of taking over workload for a production server experiencing an outage.
Testing and training 
Hardware virtualization can give root access to a virtual machine. This can be very useful such as in kernel development and operating system courses.[6]
Portable applications 
Certain application configuration mechanisms such as the registry on the Microsoft Windows platform lead to well-known issues involving the creation of portable applications. For example, many applications cannot be run from a removable drive without installing them on the system's main disk drive. This is a particular issue with USB drives. Virtualization can be used to encapsulate the application with a redirection layer that stores temporary files, Windows Registry entries, and other state information in the application's installation directory – and not within the system's permanent file system. See portable applications for further details. It is unclear whether such implementations are currently available.
Portable workspaces 
Recent technologies have used virtualization to create portable workspaces on devices like iPods and USB memory sticks. These products include:
  • Application Level – VMware ThinApp – which is a driver-less solution for running portable applications directly from removable storage without system changes or needing Admin rights
  • OS-level – MojoPac, Ceedo, Aargo and U3 ,prayaya v3– which allows end users to install some applications onto a storage device for use on another PC.
  • Machine-level – moka5 and LivePC – which delivers an operating system with a full software suite, including isolation and security protections.
Hardware virtualization technologies

[edit] References

  1. ^ Turban, E (2008). Electronic Commerce A Managerial Perspective P27. Prentice-Hall.; Virtualization in education. IBM.
  2. ^ Mann, Andi, The Pros and Cons of Virtualization, Business Trends Quarterly, <http://www.btquarterly.com/?mc=pros-cons-virtualization&page=virt-viewresearch>. Retrieved on 21 April 2008 ; Mann, Andi, Virtualization 101, Enterprise Management Associates (EMA), <http://www.emausa.com/ema_lead.php?ls=virtwpws0806&bs=virtwp0806>. Retrieved on 29 October 2007 
  3. ^ Uhlig, R. et al.; "Intel virtualization technology," Computer , vol.38, no.5, pp. 48-56, May 2005
  4. ^ Borden, T.L. et al.; Multiple Operating Systems on One Processor Complex. IBM Systems Journal, vol.28, no.1, pp. 104-123, 1989
  5. ^ Introducing Microsoft SoftGrid Application Virtualization. Microsoft.
  6. ^ Examining VMware Dr. Dobb’s Journal August 2000 By Jason Nieh and Ozgur Can Leonard

[edit] See also

[edit] External links