The word “Virtualization and Virtual Machine” can put you in deep imaginations but don’t worry. This blog post will talk about virtual machine and virtualization concepts in deep. At the end of it, you will know everything you need to know. But, before starting, I want to put forward for whom this article is?
1. If you are a student who is curious to know more out of your syllabus.
2. If you are going to commence your journey to Cloud Computing.
3. If you are interested in networking concepts and Cybersecurity.
4. If you are looking for your assignment reports, just kidding😅.
Virtual machines are gaining a lot of popularity with the evolution of virtualization technology. Virtualization!!! Hey… What is this? Don’t worry let me first explain what is Virtualization?
1. What is Virtualization?
1.1 Why We Use Virtualization?
In general, the term virtual means something which is not real and is just an imagination of our brain. However, in the computing world, virtual is something which is not physically present but actually exists in reality.
Now, to understand better, let us go back in the time and talk about the infrastructure and architecture that existed prior to virtualization. You will find that it was a bit cumbersome, expensive and wasted a lot of resources. For instance, in the conventional approach, we had a server and on top of that, we used to run our operating system.
The problem was that it was either underutilized or overutilized. The traditional approach had few draws back such as:
- An individual application used to run on the individual system.
- Applications were OS or hardware bounded
- And, a lot of wastage of resources as I said earlier.
So, can the resources such as memory or CPU be utilized better? This was the million-dollar question. Well, the answer was yes. It can be well utilized by the concept of virtualization. An approach where we can run multiple operating systems on a single server. So, by using this technique, we can solve the problems related to resource management easily.
“The term Virtualization can be defined as a process of running or creating a virtual instance or a resource such as a server, storage device, network or even an operating system where the framework divides a computer system into one or more executing environment or in a layer abstracted from. ”
Virtualization and Cloud Computing are synonymously used but my friends, don’t get confused as these two are completely different terms.
Virtualization is basically a subset within cloud computing. The biggest difference is that in virtualization, you separate OS within the underline hardware. In the cloud, our motive is to separate applications over the network.
1.2 Benefits of Virtualization
Now, this concept works so seamlessly that you will feel it is a dedicated machine, where the operating system, libraries, and other programs are unique to you or the guest. Virtualization is used for segmentation of a large system into a smaller part which eventually improves the server capabilities. Moreover, it also creates a sense of privacy by acting as an isolated machine.
Talking about more advantages, this offers a lower no-cost deployment, full resource utilization, operational cost savings, and power savings. However, deploying virtualization technology needs some attention and skilled technical experts.
1.3 Example of Virtualization
Implementing virtualization can be as simple as partitioning your hard drive or complex as creating applications on serves. Now, creating a virtual machine is an implementation of virtualization we will see how in the later of this post.
What are the Types of Virtualizations?
This term has become so common that it can be associated with a lot of computing technology. Virtualization can be categorized into different layers and each layer of virtualization has its own set of advantages and complexities. The types are as follows.
- Operating System
- Application Server
- Application & Administrative
Let us discuss them one by one in detail.
What is Operating System-Level Virtualization?
In the day to life, we are using these virtualizations but it is just a matter of fact that we are not aware of it. One of the most widely used virtualizations is operating-system-level virtualization or say hardware virtualization. What happens in this is that we have some hardware or a particular infrastructure and top of that, we run the multiple operating systems.
For instance, running a Linux on VMWare( a software to support virtualization) on a Windows operating system. This technology involves separating the physical hardware such as RAM or software by emulating hardware using the software. Now, when a different OS is running on top of the primary OS by means of virtualization, this is called a virtual machine which we will talk later in details.
One practical approach is that suppose you have some work that can only be performed on a Linux or macOS but, you don’t have that. Then what will you do go and buy a separate machine to run them? No, this is not the optimum solution. You can use virtual machines by the help of virtualization to perform your work cool right!✌.
What is Application Server-level Virtualization?
Then, we have something called as server-level virtualization which is mostly used for load-balancing that means, suppose you have a plethora of applications and servers. Then, what you will do?
Obviously, you will split those applications on different servers depending upon the need and vice-versa. This kind of virtualization thus prevents servers from overloading and also assist us in the case of underperformance of our servers.
What is Application Virtualization?
This virtualization is a bit different as compared to the previous one we discussed. One generally, confuses in these two types. In application virtualization, we feel as if we are running our application on a remote device but this is not the case. It is actually running on a server which is based somewhere else and we get a feel as if it is working on our system.
What is Administrative Virtualization?
This virtualization is basically used by the data centers. Suppose, we have numerous groups that work together and we need to exchange share or give permissions to someone for a particular resource. Here, we virtualize different atmosphere for a different person or group to deal with and accordingly we provide access to the respective people.
What is Storage Virtualization?
This kind of virtualization is very handy for faster computation. One key term that is used here is “Storage Virtualization Monitors”. This is basically a management tool that keeps an eye on the storage chunks which are designed to provide better and efficient computation by storing an appropriate amount of a resource.
Network virtualization is very basic stuff. This could be understood as managing your IP’s over a complex and crowded network. It gives network access to the concerned person. So, I hope now you are familiar with what is virtualization and types of virtualization. Let us move further and discuss virtual machine.
What is a Virtual Machine?
Now, before talking further, this blog post will cover the theoretical stuff about virtual machine and in the next article, we will see how to set up a virtual machine. So, let’s get started.
A virtual machine is a data file or virtual existing operating system environment on top of a physical computer. It can be moved and copied to another computer any time. Didn’t get it?😲
Fundamental Idea of Virtual machine
Well, the fundamental idea behind a virtual machine is to implement the abstraction of the hardware (such as CPU, memory, GPU, disk drives, network interfaces cards, etc.) of a single computer into a myriad of platforms. This creates an illusion as if we are using a separate computer with its own resources.
Now, how this all works under the hood. Well due to virtualization as we discussed above. The operating system or the environment feels real for the user but in actual it is consuming the resources of the host system. Virtualization requires careful approach because the virtual machines use the same resources to run, it may lead to slow performance if not designed properly.
System Model/Architecture of a Virtual Machine
The above diagram illustrates two system models “A”, “B”, the first one represent a non-virtual machine and the other one demonstrates a virtual machine system-level architecture.
Types of Virtual Machines
Virtual machines are implemented by software emulation or hardware virtualization techniques. Therefore, depending on their use and level of correspondence to any physical computer, virtual machines can be categorized in the following way.
1. System Virtual Machines
A system virtual machine basically provides a platform that supports the sharing of the host computer’s physical resources among multiple virtual machines. Each run with its own copy of its operating system due to the virtualization technique. This feature is provided by a software layer known as a “Hypervisor”(which we will talk in details in our upcoming articles).
2. Process Virtual Machine
This provides a platform-independent programming environment. Basically, it masks the information of the underlying hardware of the host operating system and allows program execution to take place in the same way on any given platform.
Advantages & Disadvantages of Virtual Machines
Some of the advantages of a virtual machine include:
- As said, it allows multiple operating system environments on a single physical computer without any intervention
- Virtual machines are widely available and are easy to manage and maintain.
- Offers application provisioning and disaster recovery options.
Some of the cons of virtual machines include:
- They are not as efficient as a physical computer because the hardware resources are distributed in an indirect way which drastically hampers the performance.
- Multiple VMs running on a single physical machine can deliver unstable performance and even damage to the motherboards.
Difference Between VM’s and Similar Terms
1. VM vs. Dual Boot
Before virtualization, if an operator wanted to run two operating systems, for instance, Windows and Linux, then, How he ran them? He had to run two full operating systems and switch between them which is, of course, a tiresome job.
Moreover, the hardware lacked its full potential uses. In some cases, when the computer is not that powerful and the tasks are very demanding, the operator’s can prefer to use a dual boot. If the operator is working within one operating system for long periods of time, the power available during a dual boot can be preferable. However, when the operator needs to switch between applications frequently this is a bad option and VM is a far more practical option.
2. VM vs. emulators
An emulator is nothing but a software that allows one application to take on the characteristics or properties of another. For instance, emulation software can be used to make a PC operate as a game console or can imitate a whole software on a whole.
3. VM vs. containers
There is not a huge difference between a VM and Containers. A container only virtualizes the operating system, rather than the rest of the underlying hardware. It contains the code, system tools, runtime, system libraries and settings needed for multiple applications.
That’s why containers are often used when multiple applications using the same operating system are needed. One of the most use full application is that containers are used to create cloud-native, distributed applications, and to package legacy applications.
There are several vendors which offer virtual machine software, but two main vendors dominate in the marketplace.
VMware (acquired by EMC in 2004, which was acquired by Dell in 2015) and the other one is Oracle and Microsoft. We will see how to set up a virtual machine using VMware in the next article. Additionally, there are open source vendors also such as “ProxMox”. But, VMware has a mature product portfolio and is very common, with many years of use in the IT industry.
That is all for this article, stay tuned as this is the first article on Cloud, I will post such articles in the future. Do comment down below your opinion and what I missed.