Hardware virtualization
In computing, virtualization is "a technique for hiding the physical characteristics of computing resources from the way in which other systems, applications, or end users interact with those resources. This includes making a single physical resource (such as a server, an operating system, an application, or storage device) appear to function as multiple logical resources; or it can include making multiple physical resources (such as storage devices or servers) appear as a single logical resource."[1] This new Virtual view of the resources is not restricted by the implementation, geographic location or the physical configuration of underlying resources. Commonly virtualized resources include computing power and data storage.
Types of virtualization
Virtualization is a broad term that refers to the abstraction of resources in many different aspects of computing. As a perceived "buzzword", virtualization has been claimed by IT marketers to refer to everything from virtual machines to systems management software, so as to become nearly meaningless. Some common applications of virtualization are listed below; this list reflects the extreme diversity that the term has come to encapsulate.
Software virtualization
- A virtual machine is an environment which appears to a "guest" operating system as hardware, but is simulated in a contained software environment by the host system. The simulation must be robust enough for hardware drivers in the guest system to work. The creation and management of virtual machines is often referred to as Server Virtualization. There are several approaches, including:
- Emulation (or "full virtualization with dynamic recompilation") — the virtual machine simulates the complete hardware, allowing an unmodified OS for a completely different CPU to be run. (e.g. Bochs, PearPC, PPC version of Virtual PC, Qemu without acceleration)
- Native virtualization and "full virtualization" — the virtual machine only partially simulates enough hardware to allow an unmodified OS to be run in isolation, but the guest OS must be designed for the same type of CPU. (e.g. VMware Workstation, VMware Server (formerly GSX Server), Parallels Desktop, Adeos, Mac-on-Linux, Win4BSD, Win4Lin Pro)
- Paravirtualization — the virtual machine does not simulate hardware but instead offers a special API that requires OS modifications. This system call to the hypervisor is called a "hypercall" in Xen and Parallels Workstation, and a "DIAGNOSE code" in IBM's VM (e.g. VMware ESX Server, Win4Lin 9x).
- Operating system-level virtualization — virtualizing a physical server at the operating system level, enabling multiple isolated and secure virtualized servers on a single physical server. The guest OS environments are the same OS as the host system, since the same OS kernel is used to implement the guest environments. Examples are Linux-VServer, Virtuozzo, OpenVZ, Solaris Containers and FreeBSD Jails.
- Application Virtualization involves the running of a desktop or server application locally, using local resources, without being installed (compare with Software installation and Terminal Services). A virtualized application runs in a small virtual environment that contains the registry entries, files, and other components that it needs to execute. This virtual environment acts as a layer between the application and the operating system, and eliminates application conflicts and application-OS conflicts. Examples are the Sun Java Virtual Machine, Softricity, Thinstall, Altiris, and Trigence.
Further development
In year 2006, virtualization has a new level of playing field in Application Virtualization and Application Streaming.
Resource virtualization
- Aggregation, spanning, or concatenation all combine multiple resources into larger resources or resource pools. For example, RAID and volume managers combine many disks into one large logical disk; Channel bonding and network equipment use multiple links combined to work as though they offered a single, higher-bandwidth link. At a meta-level, computer clusters such as those created by PolyServe also do all of this.
- Partitioning is the splitting of a single, usually large resource (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.
- Similar to Grid computing is the combining of multiple PCs into one Virtual Server such as from Virtual Iron.
Use cases of virtualization
Server consolidation
- Using virtualization technology (specifically the virtual machine) to consolidate many physical servers into fewer servers hosting virtual machines. The physical server is therefore 'transformed' into 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 allowing for backup images to "boot" into live virtual machines that can take over workload for the production server that is 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.[2]
Portability for applications
In order to make portable applications for USB drives, software developers must make their software applications leave the computer they run on completely "clean". This means that the application cannot use the registry or store its files anywhere on the machine other than its current directory.
This presents a huge obstacle to some software applications. Applications like Adobe Photoshop or Microsoft Word use the registry intensely and store cookies all over the file system. Changing these software applications to run out of the current directory is very difficult.
Thus, virtualization obtains a new application here. If an application is virtualized for portability, it is "injected" with DLL's that redirect all its calls to the external file system. The application itself will call to make a registry entry or write a file, but the virtualization software will intercept the call and direct it to a file in the current working directory.
This leaves the application unchanged yet portable. This opens up many opportunities for portable software, for software can be made portable without changes to its source code.
Allowing a user to store all of his or her applications on one drive is not yet possible, but hopefully it will become possible in the future. Virtualization has not yet become the industry standard but most likely will once portable software becomes more popular and users want all of their applications portable.
LivePCs
Virtualization has typically been deployed in the commercial server market and personal hobbyist space. Recent developments have attempted to extend the virtualization concept to the consumer market. Some of the newest entries have used virtualization to allow users to bring a workspace with them on a portable storage device like an iPod or USB memory stick. The consumer targeted applications have taken two distinct approaches, OS-level (MojoPac, Ceedo, and U3) and machine-level virtualization (moka5). OS-level virtualization allows end users to install some applications onto a storage device so they can be used on another PC. This does not provide the isolation and security that machine-level virtualization affords. LivePCs are the consumer focused instantiation of machine-level virtualization. LivePCs allow an operating system with a full software suite to be delivered to end users with a single click.
References
- ^ Virtualization: Exposing the Intangible Enterprise, 2006, Enterprise Management Associates
- ^ Examining VMware Dr. Dobb’s Journal August 2000 By Jason Nieh and Ozgur Can Leonard
See also
- Virtualization Development
- Virtual machine monitor
- Comparison of virtual machines
- Operating system-level virtualization
- Comparison of Application Virtual Machines
- Emulation
- Hypervisor
- Physical-to-Virtual
- Virtual Tape Library
- IBM SAN Volume Controller
- X86 virtualization — hardware-assisted virtualization.
- Utility Computing
External links
- Virtualization for Mission-Critical Applications
- What is virtualization? - ZDNet Whiteboard webcast about virtualization.
- An introduction to Virtualization A very good article examining the history of virtualization and its current status.
- Virtualization Faceted Wiki
- Weblog post on the how virtualization can be used to implement Mandatory Access Control.
- The Effect of Virtualization on OS Interference in PDF format.
- Windows Virtualization from Microsoft
- Virtualization Overview from VMware
- Xen—the Art of Virtualization from co-author Tim Harris Microsoft Research Cambridge (UK)