What is Virtualization?
A virtual machine is an isolated runtime environment which consists from a guest operating system and applications. Virtualization enables a single computing system to look like many computers where multiple virtual machines can run on a single physical machine. The size and power of individual virtual machines is variable and configurable. Each virtual machine can run any operating system supported by the underlying hardware. Users can thus run two or more different guest operating systems simultaneously, in separate private virtual machines. The software layer that provides virtualization is called virtual machine monitor. Virtual machine monitors come in two flavors. Native virtual machine monitor runs directly on raw hardware while hosted virtual machine monitor runs on top of an existing operating system such as Linux. The following diagram depicts the high level view of virtualization
Benefits of Virtualization
Instead of using a dedicated physical machine for each application, virtualization enables hardware resources to be shared and pooled across multiple applications. This results in higher efficiency and faster deployment in addition to lower costs. Virtualization provides the ability to package up whole applications along with their configuration which in turn makes applications highly portable and easier to move from development to production. Virtualization allows multiple operating system environments to co-exist on the same computer in strong isolation from each other and helps in the execution of legacy applications. Furthermore, virtualization can provide an instruction set architecture that is somewhat different from that of the real machine. There are many advantages that we can achieve by using virtual machines. In summary, virtualization helps in application provisioning, maintenance, high availability and disaster recovery.
The primary action in setting up a virtual server is selecting and installing the virtualization layer. There are several providers of virtualization technology out there however we will mention only two providers namely VMware and Microsoft. VMware is the industry leader in providing virtualization technology. According to VMware, VMware vSphere is the industry most complete and robust virtualization platform, transforming datacenters into a simplified cloud infrastructure and enabling the next generation of flexible, reliable IT services. On the other hand, Microsoft Hyper-V is a hypervisor based technology that is a key feature of Windows Server 2008 R2. According to Microsoft, It provides a scalable, reliable, and highly available virtualization platform. It is part of Microsoft's ongoing effort to provide its customers and partners with the operating system platform for virtualization.
Virtualization and Clustering
Database or Middleware clustering is also a type of virtualization through which many computers look like a single resource. This allows huge databases and middleware tiers to be built using powerful, low cost, high volume components like blades or rack servers. Redundancy of clusters enables high performance and scalability through parallel operations and enables inherent high availability, as clusters can survive one or more node failures. Benefits of virtualization can be extended to a physical cluster using virtual machine managers. A virtual machine manager creates a distributed virtualization layer to extend the benefits of VM Monitors from one to multiple resources. This decouples the VM (service) from the physical location and transforms a distributed physical infrastructure into a flexible and elastic virtual infrastructure
Virtualization in the cloud
Cloud computing provides software, platform and infrastructure as a service. Infrastructure as a service (IaaS) is the most general form of cloud services. It refers to the access of virtual machines, storage services, databases or queue services which are required to build an application environment from scratch. Providers offer hosting services (such as Amazon’s EC2, GoGrid Cloud Hosting and Rackspace Cloud Server) which allows clients to rent CPU and storage for a specific period of time. Technically speaking, the client gets a virtual machine (VM) which is hosted on one of the provider’s servers. The virtual machines are able to host almost all kinds of Linux and windows operating systems. This allows for installing and operating almost every kind of software in the cloud. The advantage of hosting services is the ability to increase and decrease the number of virtual machines on demand. Providers usually help spreading the load across servers with basic load balancing mechanisms so the programmer still needs to take care of sessions, data persistence, consistency, caches etc.
Virtualization and database management systems
There are two ways to deploy database systems in the cloud. One way is to install a full clustered transactional database system using virtual machines. This method provides a traditional database management system and makes the solution lightly coupled to the cloud provider because it relies on less non standardized APIs. This is an advantage but the downside is that traditional database management systems are hard to scale and not designed to run on virtual machines for example the query optimizer and storage management assume that they have exclusive access to the hardware and with rare chance of failure. Another disadvantage is that traditional database systems are not designed to constantly adapt to the load. This not only increases the cost, but frequently requires manual interaction in order to be able to react to the load. The other approach is to use a specially designed cloud storage or database service instead of a full transactional database. The architecture of this service is based on a key value store designed for scalability and fault tolerance. The service can either be self deployed using open source systems or offered by the cloud provider which increases the outsourcing level. The downside of the second approach is that these services are often simpler than full transactional database systems. It does not offer ACID properties nor does it support full SQL support. If the application requires more then it has to be built on top without much support however this approach is becoming more popular because of its simplicity and scalability
Virtualization in the future
The basic concept of virtualization is likely to be around for quite a while however it is not clear whether virtualization software will always be a separate product. Giant companies like IBM, EMC, Microsoft, AMD, Intel and others are incorporating virtualization features into their product line. For example, AMD and Intel have both included virtualization support in their chips. The trend is moving toward making virtualization the default method of server operation rather than just for a specific niche.