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 and a video 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 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;
- 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
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  & ):
- Hardware-based Virtualization
- Operating System-based Virtualization
So let’s dive more deep into these 2 areas.
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 ).
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 ).
As I mentioned in the introduction, today there are new concepts introduced to this field. One such interesting thing is Docker, which has become more popular recently. So before the conclusion of this post I thought of keeping a note on Docker too.
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.
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!
 Cloud Computing: Concepts, Technology & Architecture by Thomas Erl
 Introduction to Virtualization – https://www.youtube.com/watch?v=zLJbP6vBk2M
 Docker – https://www.docker.com/
 Docker Try It! – https://www.docker.com/tryit/