
Virtualization is a broad term that refers to the abstraction of computer resources. It is the creation of a virtual (rather than actual) version of something, such as an operating system, a server, a storage device or network resources.
Operating System Virtualization:
It is the use of software to allow a piece of hardware to run multiple operating system images at the same time. The technology got its start on mainframes decades ago, allowing administrators to avoid wasting expensive processing power.
There are three areas of IT where virtualization is making head roads
Network Virtualization:
It is a method of combining the available resources in a network by splitting up the available bandwidth into channels, each of which is independent from the others, and each of which can be assigned (or reassigned) to a particular server or device in real time. The idea is that virtualization disguises the true complexity of the network by separating it into manageable parts, much like your partitioned hard drive makes it easier to manage your files.
Storage Virtualization:
It is the pooling of physical storage from multiple network storage devices into what appears to be a single storage device that is managed from a central console. Storage virtualization is commonly used in storage area networks (SANs).
Server Virtualization:
It is the masking of server resources including the number and identity of individual physical servers, processors, and operating systems from server users. The intention is to spare the user from having to understand and manage complicated details of server resources while increasing resource sharing and utilization and maintaining the capacity to expand later.
The usual goal of virtualization is to centralize administrative tasks while improving scalability and work loads.
Virtual Machine:
A virtual machine (VM) is an environment, usually a program or operating system, which does not physically exist but is created within another environment. In this context, a VM is called a "guest" while the environment it runs within is called a "host." Virtual machines are often created to execute an instruction set different than that of the host environment. One host environment can often run multiple VMs at once. Because VMs are separated from the physical resources they use, the host environment is often able to dynamically assign those resources among them.
A user interacting with a virtualized server can view the server as a physical machine, in the sense that the user would see access to machines resources like hard disks, RAM, processors and Ethernet connections. In fact, all of these machine resources are virtual. For instance, instead of accessing a real hard disk, the user is accessing a construct of the host environment. This construct then accesses the real disk to record the data.
Benefits Of Virtualization:
- Lower number of physical servers - you can reduce hardware maintenance costs because of a lower number of physical servers
- By implementing a server consolidation strategy, you can increase the space utilization efficiency in your data center by extension, the power and cooling costs for those datacenters
- You can develop a standard virtual server build that can be easily duplicated which will speed up server deployment
- By having each application within its own "virtual server" you can prevent one application from impacting another application when upgrades or changes are made
- You can deploy multiple operating system technologies on a single hardware platform (i.e. Windows Server 2003, Linux, Windows 2000, etc)
- Ability to perform Hardware and Software maintenance on secondary systems, thereby minimizing downtime on production systems
- Ability to easily create backups of existing systems can help support business continuity and aid in disaster recovery
- Faster deployment of new logical servers and safer/faster migration of applications/infrastructure maximizes change control flexibility and minimizes disruption to production systems
- Ability to isolate applications in separate virtual environments can simplify support and reduce the likelihood of "application collisions" or incompatibilities created when several applications are hosted on one system
Disadvantages of Virtualization:
- Virtualization overhead can impact performance of key workloads and virtualization generally makes workloads less predictable especially when larger/faster hardware is not deployed for the virtualization deployment
- Consolidation of servers as well as storage virtualization may create a larger, single point of failure - making it easier to lose significant volumes of data
- Resources still need to be managed. If mis-managed the results are more far reaching and resource bottlenecks escalate at a more rapid pace
- Deploying and managing virtualized environments requires less common skills that are in high demand
QEMU:
QEMU is an application that you can use in a number of settings. You can use it for guest operating system virtualization or as a full machine emulator running operating systems targeted to the host CPU or other CPU architectures.
QEMU is an open source emulator for complete PC systems. In addition to emulating a processor, QEMU permits emulation of all necessary subsystems, such as networking and video hardware. It also permits emulation of advanced concepts, such as symmetric multiprocessing systems (up to 255 CPUs) and other processor architectures, such as ARM or Power PC.
QEMU architecture:
Basic QEMU operation: QEMU supports two operating modes:
User-mode emulation:
User-mode emulation allows a process built for one CPU to be executed on another performing dynamic translation of the instructions for the host CPU and converting Linux system calls appropriately.
System-mode emulation:
System-mode emulation allows emulation of a full system, including processor and assorted peripherals.
When x86 code is being emulated on an x86 host system, near native performance can be achieved using what is called the QEMU accelerator. This permits execution of the emulated code directly on the host CPU (on Linux through a kernel module).
Dynamic Translator:
Dynamic Translator makes QEMU interesting from a technical perspective since it is its fast and portable. The dynamic translator allows runtime conversion of instructions for a target (guest) CPU to the host CPU to provide emulation. This can be done in a brute force way (mapping instructions from one CPU to another), but it's not always that simple, and in some cases it can require multiple instructions or changes in behavior based on the architectures being translated.
QEMU achieves dynamic translation by first converting target instructions into micro operations. These micro operations are bits of C code that are compiled into objects. The core translator is then built. It maps the target instructions to micro operations for dynamic translation. This is not only efficient, but also portable.
QEMU's dynamic translator also caches blocks of translated code to minimize the translator's overhead. When a block of target code is first encountered, the block is translated and stored as a translated block. QEMU caches the most recently used translated blocks in a 16 MB block. QEMU can even support self-modifying code by invalidating translated blocks in the cache.
Supported peripherals:
Using QEMU as a PC system emulator provides a wide variety of peripherals. Standard peripherals that you expect include a hardware Video Graphics Array (VGA) emulator, PS/2 mouse and keyboard, integrated development environment (IDE) hard disk and CD-ROM interface. In addition, QEMU includes emulation for an NE2000 Peripheral Controller Interconnect (PCI) network adapter, serial ports, numerous sound cards, and a PCI Universal Host Controller Interface (UHCI), Universal Serial Bus (USB) controller (with a virtual USB hub). Processor symmetric multiprocessing (SMP) support is also provided with support for up to 255 CPUs.
In addition to emulating a standard PC or ISA PC (without a PCI bus), QEMU can also emulate other non-PC hardware such as the ARM Versatile baseboard (using the 926E) and the Malta million instructions per second (MIPS) board. Work is in progress for a variety of other platforms, including the Power Macintosh G3 (Blue & White) and Sun-4u.

Features of QEMU:
- Supports emulating IA-32(x86) Pcs, PCs, MIPS R4000, Sun's SPARC sun4m, Sun's sunSPARC4u, ARM development boards (Integrator/CP and Versatile/PB), SH4 SHIX board, PowerPC (PReP and Power Macintosh), and ETRAX CRIS architectures
- Increased speed—some applications can run in close to real time
- Implements Copy-On-Write disk image formats. You can declare a multi-gigabyte virtual drive, the disk image will only be as large as what is actually used
- Also implements overlay images. You can keep a snapshot of the guest system, and write changes to a separate image file. If the guest system breaks, it's simple to roll back to the snapshot
- Support for running Linux binaries for other architectures
- Can save and restore the state of the machine (programs running, etc)
- Virtual network card emulation
- SMP support
- Guest OS does not need to be modified/patched
- Performance is improved when the KQEMU kernel module is used
- Command line tools allow a full control of QEMU without having to run X11
- Remote control of emulated machine via integrated VNC server
- USB tablet support: this provides "grabless" mouse control. Activated with "usb - usbdevice tablet"
- QEMU does not need administrative rights to run
.
