Virtualization and its levels


In computing, virtualization refers to the act of creating a virtual(rather than actual) version of something, this includes virtual computer hardware, virtual storage devices and virtual network resources.

A simple example of virtualization is when you create partitions in your hard disk. Here you are not actually breaking your hard disk into pieces but virtually you are creating that many partitions of it.

This video explains it all about the levels of Virtualization.

Levels of Virtualization


Virtualization at Instruction Set Architecture(ISA) level

  • Every machine has an instruction set .
  • This instruction set is an interface between software and hardware.
  • Using this instructions software can communicate with hardware.
  • So when virtualization is carried at this level, we create an emulator which receives all the instructions from the Virtual machines, like for example if a virtual machine wants to access the printer then that instruction will be passed to this emulator,
  • The emulator will then interpret what type of instruction it is and then map that instruction to the Host machine’s instruction and then that instruction will be carried out on Host machine and the results will be passed to the emulator and emulator will return it to the virtual machine.
  • This technique is simple to implement but as every instruction has to be interpreted before mapping it, too much time is consumed and performance becomes poor.

Virtualization at Hardware Abstraction Layer(HAL) level

  • As in Virtualization at ISA level, performance is reduced due to interpretation of every instruction so to overcome that we have virtualization at HAL level.
  • In this type we map the virtual resources with the physical resources.
  • We don’t interpret every instruction but we just check whether it is a privileged instruction or not.
  • If the instruction is not privileged we simply allow normal execution because already virtual and physical resources are mapped so accessing is simple.
  • But if the instruction is privileged, we pass the control to VMM(Virtual Machine Monitor) and it deals with it accordingly.
  • There may be many Virtual machines running simultaneously on the same Host system so if privileged instructions like memory management or scheduling tasks aren’t handled properly, system can crash.
  • Even after many advancements still there are certain exceptions which cannot be caught by this method which is a drawback of this type of virtualization.

Virtualization at Operating System(O.S.) level

  • In virtualization at HAL level each virtual machine is built from scratch i.e. by installing O.S., application suites, networking systems, etc.
  • In cloud sometimes we need to initialize 100 Virtual machines at a single time, If we use virtualization at Hardware abstraction layer(HAL) level this can take too much time.
  • So to overcome this in Virtualization at Operating system level we share operating system between Virtual machines along with the hardware.
  • So we keep the base O.S. same and install only the differences in each single Virtual machine.
  • For example if we want to install different versions of windows on virtual machines(VM), you keep base O.S. of windows same and only install the differences among each VM.
  • A drawback of this type is that you can install only those O.S. in VMs whose parent O.S.  family is same like for example you can’t install ubuntu on a VM whose base O.S. is windows.

Virtualization at Library Level or Programming language level

  • When developers develop certain applications, they save the user from all the coding details by providing them Application User Interface(API).
  • This has given a new opportunity for virtualization.
  • In this type, we use Library Interfaces to provide a different Virtual Environment(VE) for that application.
  • In short we provide user with an emulator with which user can run applications of different O.S.s.
  • Example of this is the WINE tool which was used mostly by mac users to play Counter Strike 1.6 game which was only available for windows in the start.

Virtualization at Application Layer level

  • In this kind of virtualization Virtual machines run as an application on the Host operating system.
  • We create a virtualization layer which is present above the Host Operating system and it encapsulates all the applications from the underlying O.S.
  • While all the Applications are loaded, Host O.S. provides them with a Runtime environment. But virtualization layer replaces a part of this Runtime environment and gives a Virtual Environment to the Virtualized applications.

OpenStack Cloud Architecture

  • OpenStack is a free and open source software platform for cloud computing. It is mostly deployed as infrastructure as a Service(IAaaS) where virtual servers and other resources are made available to customers.
  • OpenStack has a modular architecture where we have different modules or open source projects which are from different vendors but all this projects are connected to give us this infrastructure.

This video explains it all about the OpenStack Cloud Architecture

Conceptual Architecture


In the conceptual architecture we can see there are 9 different components or projects and how they conceptually interact with each other is shown here.

Let us first understand what these components provide us.

Code Name Services provided
Nova Compute
Cinder Block Storage
Swift Object Storage
Glance Image
Neutron Networking
Keystone Identity management
Horizon Dashboard
Ceilometer Metering and Monitoring(Telemetry)
Heat Orchestration


  • It provides compute services i.e It provides virtual servers upon demand.
  • It automates and manages pools of compute resources.


  • It provides Block Storage as a service for OpenStack.
  • It is designed to present storage resources to end users and these storage resources will then be used by Nova.
  • The short description of Cinder is that it virtualizes the management of block storage devices and provides end users with a self service API to request to consume those resources.


  • It provides Object Storage i.e the data is stored in the form of objects.
  • Unlike traditional filesystems here if you want to modify some object, you will have to pull that entirely out, make modifications and then push it back in.
  • You may feel that this is tedious but for data which doesn’t require much modification we can use this type of storage. For example, we can store images or videos which don’t require much modification and just by passing the objects you can load images.
  • Swift also provides replication and scalability which isn’t provided by Cinder.
  • Replication as in data is stored at different places so it can be recovered easily during system crash and scalability as in you can  scale up(increase) or scale down(decrease) your storage as per your need.


  • It provides Image Services for OpenStack.
  • The ISO images for virtual machines and metadata are stored here and they can be discovered, registered and retrieved by the users i.e you can find them and use ISO image for installing that O.S. on your virtual machine.
  • If you want to take backups of data stored on your server you can create, you can create server images i.e. copy all the data server contains and store it at multiple locations.


  • Neutron provides networking services.
  • It is a system to manage networks and IP addresses. It provides scalability and Neutron’s services can be used through an API.
  • Users can use this API to create networks for their different user groups or different applications.


  • Keystone is a central component for authentication and authorization.
  • Before using any of the other projects or services of OpenStack, Keystone authenticates you and authorizes you to check whether you are allowed to use that service.
  • Authentication is done using username & password credentials, token based systems,etc
  • It also provides a catalog which shows a list of all the services deployed on the cloud.


  • It provides a dashboard using which the user can access other services easily.
  • With this dashboard you can perform most of the operations like launching a VM, assigning IP addresses and setting access controls.


  • Often known as Telemetry provides metering and monitoring services.
  • It provides us data about how much physical and virtual resources are being used on the cloud.
  • Based on this data cloud providers can charge their users and also we can generate certain triggers(steps to be taken when data shows certain danger or critical condition)


  • It provides orchestration Service.
  • You need to create a template of your infrastructure and load it in heat and based on that template Heat will generate your infrastructure.
  • If you want to update your cloud by increasing some services or decreasing them, you can make changes in the template and load it in Heat and your new infrastructure will be generated.
  • Heat also provides auto scaling features i.e.  for example based on the data showed by Ceilometer if we come to know that CPU utilization is more than 70% for more than 5 minutes, we can define a trigger that will add more front end servers automatically.

Now take a look back at the conceptual architecture, you will see all the projects connected to each other and as now you know what each one of them does you will find it easy to understand.

Logical Architecture


  • No need to get afraid by looking at the figure, these are all the projects that we discussed just now but just in depth.
  • I am going to explain this just superficially as explaining everything in depth will take hours.
  • First of all we have internet using which user can access the horizon or the dashboard.
  • Horzon provides GUI for all other services.
  • For communication between various projects or between user and projects, each project will provide one or more Http/RESTful Interfaces.
  • REST stands for representational state transfer and it is a way of providing interoperability between computer systems on the internet.
  • REST is used over SOAP because REST uses less bandwidth and hence it is suitable for internet usage.
  • For communication between different components of the same project a message queue is used.
  • At the bottom of the Logical Architecture we have keystone or Authentication and Authorization centre which authenticates i.e. checks if the user is a valid user or not and authorizes i.e. checks if the user is allowed to access that specific service or not.




We all know that cloud technology is growing at a rapid pace and nowadays small organizations don’t want to buy and manage their own servers. So they are switching to clouds where the cloud owner will provide the user or organization with certain services.

They can be Database as a service, Security as a service, identity management as a service, etc. But in this article we will discuss about the basic and most important ones which are included in the SPI model- Software, Platform, Infrastructure as a service.

If you learn well by watching videos, here is a short video to make you understand better about this topic!


Let us take a simple example to understand cloud computing services better.

If we want to plan a wedding, we will require a wedding hall or a wedding ground. We will need to decorate it and plus we will need good food.

Suppose we are provided with 3 different packages.

First package– only the wedding hall


If we choose this package, we will have to do decoration and catering ourselves.

Second package– wedding hall + decoration


If we choose this package, we will only need to take care of the catering service.

Third package– wedding hall + decoration + caterers


If we choose this package,  all we need to do is sign a big fat cheque.

Now if we relate this to cloud services,

Iaas(Infrastructure as a service)– only hardware is provided

Paas(Platform as a service)– hardware + operating system(s) are provided

Saas(Software as a service)– hardware+operating system(s)+ applications are provided


This is a hierarchy of cloud services.

If you choose Iaas, you will need system administrators to guide you which operating system to use  based on infrastructure and your company’s needs and you will also need developers to write applications to run on those Operating systems.So this is chosen by big organizations who can afford them.

If you choose Paas, you will be provided with infrastructure and operating system so you will not be able to install your own operating system. All you need is developers to develop applications that can be deployed on that O.S. So this is chosen generally by developers.

If you choose Saas, you get infrastructure + O.S. + applications so you just need to customize the application in the initial phase and then you are good to go. This is generally chosen by end users.