Month: February 2015

Basics of Virtualization

Introduction

Today with Cloud Computing, “Virtualization” has become a buzz word. Many hosting services tend to use this technology since it’s more cost effective. So during last few weeks, I too get involved with this term, so thought of having look at what it really means. In this case a book[1] and a video[2] I found was really helpful. But I need to say that technology is rapidly changing. So you may find there are new ways to do “Virtualization”.

What is Virtualization

You have to understand that virtualization is not cloud computing, but a component of Cloud Computing. As the book[1] says: “… the process of converting physical IT resources into virtual IT resources.” So first you need to have physical resources to do virtualization. Resouces in the definition can be;

  1. Servers
  2. Storage
  3. Networks etc.

To explain virtualization, there are few other terms you need to understand.

  • Host – The actual physical hardware use for virtualization
  • Host Operating System – The operating system which runs on-top-of Host hardware
  • Guest Operating System – The operating system which runs on-top-of virtualized layer
  • Hypervisor (Virtual Machine Monitor) – The software piece which enables virtualized software to access underlying hardware

Why Virtualization

There are several reasons why people are so interested about virtualization

  • Hardware Independence – Virtualized software is decoupled with underlying hardware, so that it can be moved from one-to-another just as moving a file
  • Server Consolidation – Instead of having multiple servers to run many servers, now all virtualized servers can run on the same server and share underlying hardware
  • Resource Replication – Virtual servers saves on virtual hard disks, which can apply simple file operations. So for en example, you can replicate the same server by copy the virtual hard disk

How to Virtualize

Types of virtualization depends on where the Hypervisor lies. So from the top-level, there are 2 kinds of virtualizations you can see (as mentioned in [1] & [2]):

  1. Hardware-based Virtualization
  2. Operating System-based Virtualization

So let’s dive more deep into these 2 areas.

Hardware-based Virtualization

This means, take the bare hardware and install hypervisor. So hypervisor will provide basic functionality. Then you can install operating systems on-top-of hypervisor. So in this case you don’t need any host operating system. Therefore you need to have a client machine which need to manage the hypervisor.  Those management software can do magical things such as moving operating systems between several hardware servers etc. This kind of virtualization is optimized for performance. The issue with this approach is compatibility with hardware devices. Because device drivers may not be available for hypervisors when compared to operating systems. So following diagram shows how hardware-based virtualization can be shown (taken from [1]).

Hardware Based Hypervisor
Hardware Based Hypervisor

 

 

Operating System-based Virtualization

This kind of virtualization you may have already experienced too (without knowing 🙂 ). In this case hypervisor  is used to abstract the host operating system. Simple use-case is using Virtual Box to run Windows on-top of Ubuntu, where Virtual Box act as the hypervisor. This approach will eliminates the  hardware compatibility issues but incurs more overhead as host operating system needs resources in addition to guests. So following diagram shows how operating system-based virtualization can be shown (taken from [1]).

Operating System-Based Virtualization
Operating System-Based Virtualization

 

As I mentioned in the introduction, today there are new concepts introduced to this field. One such interesting thing is Docker[3], which has become more popular recently. So before the conclusion of this post I thought of keeping a note on Docker too.

Docker

Docker from outside can be view as similar approach to Operating System-based virtualization. But the difference is that Docker has able to eliminate the overhead of the guest operating system. With Docker they have introduced the concept of “Containers” which can run on Linux platforms currently and with additional library on Windows too. In Docker world the hypervisor is Docker Engine which enables you to do all sorts of things to a Docker Container. You can play with Docker through the online try-it console[4].

Docker

 

Conclusion

Through this post, I tried to express my view on basic concepts on Virtualization in computer world. In here I mentioned why virtualization is important and benefits of it. After that I expressed how virtualization can be achieved and brief introduction to Docker too. Other than mentioned things various companies tries to make this virtualization more efficient and various technologies are upcoming. So this is just a glimpse of the virtualization world and if you are interested, you can refer the given resources and expand your knowledge!

 

References

[1] Cloud Computing: Concepts, Technology & Architecture by Thomas Erl

[2] Introduction to Virtualization – https://www.youtube.com/watch?v=zLJbP6vBk2M 

[3] Docker – https://www.docker.com/ 

[4] Docker Try It! – https://www.docker.com/tryit/