OpenStack is among the fastest growing Cloud Operating system. However the word is hugely confused and lots of people don’t get the real idea behind it.
In this article we try to dissect the technology behind OpenStack, and how it came to existence. But before we dive deep into OpenStack, we need to understand in depth about some aspects about the technology behind OpenStack called Virtualization.
What is Virtualization?
Virtualization is a technology which allows us to create virtual instances of real world counterpart. For example, a real physical machine would be created into virtual machines. Virtual machines are just a virtual implementation of your real machines.
An analogy can be drawn to the emulators. Virtual machines act more of the same kind, just instead of emulating games, they emulate an entire machine.
The technology that acts behind virtualization and enables creation of virtual instances is called hypervisor. Now all virtual machines run on a physical machine.
The virtual machines in itself can be of any machine type with any given configuration, however, it must be less than that of the machine on which it is spawning. What hypervisor does is that it bridges the gap between your physical machine kernel and the virtual machine kernel.
It captures the system calls, converts the opcode of the machine level language, processes it, and then transforms it to the opcode which would be later understood by the virtual machine.
The machine on which a virtual machine is “spawned” or created is called Host machine. The virtual machine which is spawned or created by the hypervisor on the host machine is called Guest machine.
Likewise, the operating system that runs on the host machine is called host operating system, and the operating system that runs on the guest machine is called guest operating system.
The host machine and host operating systems are always significantly powerful than the guest machine and guest operating systems. This is because the actual hardware which provides the processing power resides within host machine only.
The hypervisor is also installed on the host machine where it does most of its operation, using the power of host operating system itself. The virtual machine uses the hypervisor to gain access to some of the hardware of the actual host machine.
It’s the role of the hypervisor to supply the virtual machine with the required virtual hardware. The virtual machines that are spawned by hypervisor have generally no idea that they are virtual.
The required hardware is supplied when spawning the virtual machine. Once spawned, in a real network, the virtual machine would be treated as a single node.
Types of Hypervisors
Hypervisors are divided into two types mostly:
Type 1: Native or bare metal hypervisor:
These hypervisors run directly on host’s hardware and have tight integration with the host kernel. They manage guest operating systems directly and the virtual machines spawned appear as a process. They are also called bare metal hypervisor. Examples include Citrix,XenServer and VMW are ESX/ESXi.
Type 2: Hosted hypervisors:
These hypervis0ors run as typically installed program in host operating systems. They spawn a virtual machine and abstract them from the host operating system. An analogy can be drawn to gaming emulators. Examples include QEMU, VirtualBox and VMWare Workstation.
There is also a third hybrid type of hypervisor like Kernel based Virtual machine (KVM) which although run as a typical program, but on running, gets tightly integrated with the kernel and subsequently the hardware of the host machine.
KVM is perhaps the most famous open source hypervisor, and for OpenStack, KVM is used extensively. All these hypervisors operate by creating something called images.
These images are replica copy of an installed operating system or customized operating system with special kernel requirements. Later on, when the user uses the image, it modifies the image accordingly to the data stored by the customer.
This storage space is again managed by the hypervisor, which sees that the customer’s data is preserved and is present in exactly the same state as it was before the user left it.
Virtualization was necessary in order to enable efficient usage of hardware. Especially for cloud data centre operators, virtualization was a boon. Using different types of hypervisors, cloud vendors quickly used virtualization to spawn virtual machines, virtual switches, virtual routers and other such virtual instances of hardware.
They further integrated them closely to create any kind of network or machine as required by the customers. Using virtualization, a data centre operator could establish several machines instead of just one.
And since cloud is all about renting your computing power, the revenue model increased substantially by renting out several virtual machines instead of just a single physical machine.
It increased reusability too, as the virtual machine which is not being used could be rented to other customers. So virtualization was dominating and changing the rules of the data centre.
Instead of buying an entire hardware for substantial cost, business users were borrowing virtualized instances of the hardware, reducing the cost of their IT infrastructure.
So virtualization was making all leaps and bounds, however, data centre operators faced a big problem which halted their progress significantly and even reduced their revenue to the point of facing losses.
The big problem that data centre operators couldn’t visualize was management! As virtualization evolved and provided virtualized instances of almost any hardware possible, the difficulty in the process of managing those multitudes of virtual hardware emerged.
Imagine as a head of your business, you would want 10 different machines at different places at different time zones. You would want each of them with separate hardware and software requirements, and also, would like to track the amount of data that is flowing in and out of it.
As a data centre operator, you respect the customer demands and create those 10 virtual machines. However, imagine along with creating those virtual machines, you keep getting fresh demands for more virtual machines, each with even more complex requirements.
How would you manage so many virtual machines, each with its own complex set of requirements and settings? In addition to that, you would need to accurately bill each of the virtual machines that are rented out. Suppose the customer has different billing demands.
For one machine which is being used as a server, the billing would on the amount of data that is being received by the machine. For another machine, which is acting as a client, the billing would be done on the amount of time the virtual client machine is turned on.
And these requirements are for just one person. As a data centre operator, one has to possibly operate thousands and thousands of virtual hardware, each with their own network, hardware and software demands.
A proper management interface was critically required to put the organization into the clutter that was becoming virtualized data centre. Instead of using command lines and scripting extensively, a well-built “cloud operating system” was required in order to provide proper maintenance to the data centre. And that’s where OpenStack comes in picture.
What is OpenStack?
As mentioned in the beginning, OpenStack is essentially cloud operating system. By operating system, we mean a free and open source software platform for cloud computing. It began in 2010 as a joint project of Rackspace Hosting and of NASA.
Initially, it was started to address this particular problem of the data centre, which was how to manage lots of virtual machines. From there, it quickly grew to a fully-fledged community with technological commitment and support from some of the most famous brands in Information Technology such as Oracle, VMWare, Yahoo Inc. etc.
OpenStack is currently backed by OpenStack foundation, a non-profit corporate entity established in 2012. The ever thriving OpenStack community has managed to release a better version of their software OpenStack every six months in a time-based release cycle with clear developmental milestones in each of their releases.
Each release added mores , making it from a simple data centre management software to being a sophisticated cloud software platform.
It provided an interface to manage almost every aspect of a virtual machine, from creating virtual machines on demand on click of a button to gathering data from the network, OpenStack has branched out extensively.
Each year biannually, the community gathers for planning out new features and support in OpenStack Design Summit where design plans of the extensive OpenStack community are reviewed and assembled.
OpenStack lets users assemble and deploy virtual machines efficiently. It gives something called, “graphical user interface” to access almost every function required by the end user.
Returning to our previous example, you would want 10 machines, each with their own set of requirements. With earlier command line interface, it would have had been very cumbersome to manage everything on your own.
With OpenStack, all you would need to do is click a few buttons and configure your virtual machine accordingly. So suppose if you want a proper well-built extensive network, you can manage and see your computer network in real-time graphs and statistics.
If you want advanced features like data analytics and HADOOP cluster support, you can even facilitate that easily in your virtual machine. Other standard features such as storage, CPU, memory and core usage can also be very easily configured in the graphical user interface presented by OpenStack.
Also provided with OpenStack is real time billing support, using which you can track statistics of every virtual machine spawned using the software. It includes real-time stats such as memory usage, disk usage, core usage etc.
Also, since OpenStack is written mostly in Python language, it benefits from scripting as well. So the automation of managing thousands of virtual machines is also taken care of. You can write a script to say, schedule automation of virtual machine on when it should be turned on and when it would be turned off.
In automating such a way, you can create a very well built and comprehensive cloud computing platform. And since OpenStack is completely free, anyone can use the source code to develop and add their own features, completely tailor made to suit their organizational or personal needs. HP has done it by releasing their own versions of cloud called HP Helion.
OpenStack, under cloud terminology, would fall in the category of Infrastructure as a Service (IaaS), that means its primary used to help build infrastructure on which virtual machines would be deployed.
It essentially eases the spawning of virtual machines. It’s on these virtual machines or “platforms” that customers would rent depending on their requirements.
Basic Components of OpenStack
OpenStack has branched out to have many different components, as being open source, several components could be added and integrated with the software.
However, at the heart of the software, lies only three basic openstack components:
OpenStack storage component consists of Cinder and Swift. The component’s primary purpose is to store the data of the virtual machines spawned and operating.
Otherwise called Nova Compute, this component is responsible for managing every aspect of managing and creating a virtual machine. This includes getting the required hardware allocated, interacting with the hypervisors and acting as a central node in interacting with every other component required to spawn virtual machines.
Also called as Glance, it provides image lookup and retrieval services. What essentially it does is that it provides support to store and manage different virtual machines replica or images. So based on requirements, any kind of image can be retrieved for the customer.
OpenStack, from its humble beginning as an open source software for cloud administration, has quickly grown into being a big community of cloud enthusiasts who have made OpenStack branch out into different areas of Cloud.
At the heart of OpenStack lies virtualization and hypervisors, which makes sure that OpenStack as a management platform can utilize the power of virtual machines.
Typically deployed as an operating system for infrastructure as a service (IaaS), it gives an easier option to manage thousands of virtualized instances.
The future of OpenStack looks bright, now with big data and other such latest cloud technology aspects integrated seamlessly with it. And with ever increasing community, Open Stack is poised to grow at a significant rate.
Here are some articles that will help you to get more detail about the Open Stack vs Virtualization so just go through the link.