Problems in current Scenario
Full of under-utilized servers.
Complicate in management.
Greater wattage per unit area.
Cooling at capacity.
What is Virtualization
Virtualization--the abstraction of computer resources.
Defenition: Virtualization is a framework or methodology of dividing the resources of a computer into multiple execution environments, by applying one or more concepts or technologies such as hardware and software partitioning, time- sharing, partial or complete machine simulation, emulation, and quality of service.
Virtualization hides the physical characteristics of computing resources from their users, be they applications, or end users.
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.
Normal Computer System
Virtualization -One Server for Multiple Applications/OS
Hypervisoris a software program that manages multiple operating systems (or multiple instances of the same operating system) on a single computer system.
The hypervisor manages the system's processor, memory, and other resources to allocate what each operating system requires.
Hypervisors are designed for a particular processor architecture and may also be called Virtualization managers.
Consolidate the workloads of several under-utilized servers to fewer machines, perhaps a single machine.
Provides secure, isolated sandboxes for running untrusted applications.
Provides emulation of hardware, or hardware configuration that you do not have (such as multiple processors).
Virtualization can also be used to simulate networks of independent computers.
Virtual machines can be used to run multiple operating systems simultaneously. Some such systems may be hard or impossible to run on newer real hardware.
Allow for powerful debugging and performance monitoring. Operating systems can be debugged without losing productivity.
Virtual machines can isolate what they run, so they provide fault and error containment.
Virtual machines are great tools for research and academic experiments. They encapsulate the entire state of a running system. The state also provides an abstraction of the workload being run.
Virtualization can enable existing operating systems to run on shared memory multiprocessors.
Virtual machines can be used to create arbitrary test scenarios, and can lead to effective quality assurance.
And plenty of other reasons……
Virtualization technique used to provide a complete simulation of the underlying hardware, in the Virtual machine.
One machine is accessed and manipulated by more than one users or OS’s.
All software (including all OS’s) capable of execution on the raw hardware can be run in the virtual machine.
Full Virtualization has proven highly successful in cases when
Sharing a computer system among multiple users,
Isolating users from each other (and from the control program), and
Emulating new hardware to achieve improved reliability, security and productivity.
Best example of full Virtualization was that provided by the control program of IBM's CP/CMS operating system. Each CP/CMS user was provided a simulated, stand-alone computer.
Each such virtual machine had the complete capabilities of the underlying machine, and (for its user) the virtual machine was indistinguishable from a private system.
Full Virtualization -Requirements
Equivalence: a program running under the VMM should exhibit a behavior essentially identical to that demonstrated when running on an equivalent machine directly.
Resource control (safety): the VMM must be in complete control of the virtualized resources.
Efficiency: a majority of the machine instructions must be executed without VMM intervention.
Full Virtualization -Challenges
Interception and Simulation of privileged operations --I/O instructions
The effects of every operation performed within a given virtual machine must be kept within that virtual machine –virtual operations cannot be allowed to alter the state of any other virtual machine, the control program, or the hardware.
Some machine instructions can be executed directly by the hardware, E.g., memory locations and arithmetic registers.
Other instructions that would "pierce the virtual machine" cannot be allowed to execute directly; they must instead be trapped and simulated. Such instructions either access or affect state information that is outside the virtual machine.
Some hardware is not easy to be used for full Virtualization, e.g., x86
Challenges of x86 Hardware Virtualization
The x86 architecture offers four levels of privilege known as Ring 0, 1, 2 and 3 to operating systems and applications to manage access to the computer hardware.
Virtualizing the x86 architecture requires placing a Virtualization layer under the OS (which expects to be in the most privileged Ring 0) to create and manage the virtual machines that deliver shared resources.
Solutions are :
> Binary translation (Eg: VMWare)
> OS assisted Virtualization or Paravirtualization.
> Hardware-assisted Virtualization
Kernel code of non-virtualizableinstructions are translated to replace with new sequences of instructions that have the intended effect on the virtual hardware.
Each virtual machine monitor provides each Virtual Machine with all the services of the physical system, including a virtual BIOS, virtual devices and virtualized memory management.
This combination of binary translation and direct execution provides Full Virtualization as the guest OS is fully abstracted from the underlying hardware by the Virtualization layer.
The guest OS is not aware it is being virtualized and requires no modification.
The hypervisor translates all operating system instructions on the fly and caches the results for future use, while user level instructions run unmodified at native speed.
Microsoft Virtual Server
Binary Translation 17
Paravirtualization (OS Assisted)
Paravirtualization –via a modified OS kernel as guest OS
Paravirtualization involves modifying the OS kernel to replace non-virtualizableinstructions with hypercalls that communicate directly with the Virtualization layer hypervisor.
The hypervisor also provides hypercall interfaces for other critical kernel operations such as memory management, interrupt handling and time keeping.
Paravirtualization is different from full Virtualization, where the unmodified OS does not know it is virtualized and sensitive OS calls are trapped using binary translation.
It is very difficult to build the more sophisticated binary translation support necessary for full Virtualization, modifying the guest OS to enable paravirtualization is relatively easy.
Paravirtualization cannot support unmodified OS
Xen --modified Linux kernel and a version of Windows XP
of user and OS
Hypercalls to the
Hardware vendors are rapidly embracing Virtualization and developing new features to simplify Virtualization techniques.
First generation enhancements target privileged instructions with a new CPU execution mode feature that allows the VMM to run in a new root mode below ring 0.
Privileged and sensitive calls are set to automatically trap to the hypervisor, removing the need for either binary translation or paraVirtualization.
Due to high hypervisor to guest transition overhead and a rigid programming model, binary translation approach currently outperforms hardware assist implementations.
of user and OS
OS requests traps
to VMM without
OS-level Virtualization –Server Virtualization method.
kernel of an OS allows for multiple isolated user- space instances, instead of just one.
Each OS instance(or Container) looks and feels like a real server to each user.
This method virtualizes servers on the operating system (kernel) layer. This creates isolated containers on a single physical server and OS instance to utilize hardware, software, data center and management efforts with maximum efficiency.
Virtual hosting environments commonly use operating system–level Virtualization, where it is useful for securely allocating finite hardware resources amongst a large number of mutually- distrusting users.
Software technology that encapsulates application software from the underlying operating system.
A fully virtualized application is not actually installed in the traditional sense, although it is still executed as if it is installed (runtime Virtualization).
Full application Virtualization requires a Virtualization layer. Application Virtualization layers replace part of the runtime environment normally provided by the operating system. The layer intercepts all file and Registry operations of virtualized applications and transparently redirects them to a virtualized location.
Allows applications to run in environments that do not suit the native application (Eg: Wine).
Uses fewer resources than a separate virtual machine.
Improve portability, manageability and compatibility of applications.
Improved security, by isolating applications from the operating system.
Reduces system integration and administration costs in an Organization.
Memory Virtualization decouples random access memory (RAM) resources from individual systems in the data center, and then aggregates those resources into a virtualized memory pool available to any computer in the cluster.
The memory pool is accessed by the operating system or applications running on top of the operating system.
The distributed memory pool can then be utilized as a high-speed cache, a messaging layer, or a large, shared memory resource for a CPU or a GPU application.
•Improves memory utilization via the sharing of scarce resources.
•Increases efficiency and decreases run time for data intensive and I/O bound applications
•Allows applications on multiple servers to share data without replication, decreasing total memory needs
•Lowers latency and provides faster access than other solutions.
Device and I/O Virtualization
I/O Virtualization environments are created by abstracting the upper layer protocols from the physical connections.
One physical adapter card appear as multiple virtual network interface cards (vNICs) and virtual host bus adapters.
In the physical view, virtual I/O replaces a server’s multiple I/O cables with a single cable that provides a shared transport for all network and storage connections.
Simplify management, lower costs and improve performance of servers in enterprise environments.
•Management agility: By abstracting upper layer protocols from physical connections, I/O Virtualization provides greater flexibility, greater utilization and faster provisioning when compared to traditional architectures.
•Reduced cost:Virtual I/O lowers costs and enables simplified server management by using fewer cards, cables, and switch ports, while still achieving full network I/O performance.
•Reduced cabling:In a virtualized I/O environment, only one cable is needed to connect servers to both storage and network traffic. This can reduce data center cabling.
•Increased density:I/O Virtualization increases the practical density of I/O by allowing more connections to exist within a given space.
> Developed by Xen Project Team in 2003.
> Runs on Linux, BSD, Solaris.
> Developed by OVA(Open Virtualization Alliance) and released in 2012.
> Supports many of Linux, BSD, Solaris, Windows, ReactOS, and AROS Research Operating System.
> Open-Source, developed by QEMU Team.
> Runs on Linux, Windows, and some UNIX Platforms.
> Developed by Oracle Corporation in 2007.
> Runs on Linux, Mac OS X, Windows(from XP), Solaris, and OpenSolaris
> Developed by VMWare.inc in 1997
>Runs on Windows, Linux, Mac OS X
To Sum up…
Virtualization provides the agility required to speed up IT operations, and reduces cost by increasing infrastructure utilization.
By minimizing user involvement, Virtualization speeds up the process, reduces labor costs and reduces the possibility of human errors.
Binary translation is the most established technology for full Virtualization.
Paravirtualization delivers performance benefits with maintenance costs.
Hardware assist is the future of Virtualization, but it still has a long way to go.