Types of Virtual Machines
Types of virtual machines in cloud computing are given below :
1. System virtual machines
These kinds of VMs are completely virtualized to replace a real machine. The way they virtualize depends on a hypervisor — such as VMware ESXi, which can operate on an operating system or bare hardware.
The hardware resources of the host can be shared and managed by more than one virtual machine. This makes it possible to create more than one environment on the host system. Even though these environments are on the same physical host, they are kept separate. This lets several single-tasking operating systems share resources concurrently.
Different VMs on a single computer operating system can share memories by applying memory over commitment systems. This way, users can share memory pages with identical content among multiple virtual machines on the same host, which is helpful, especially for read-only pages.
The key advantages of system VMs are:
- System virtual machines have the capability, either via emulators or by using just-in-time compilation, of providing a simulated hardware environment. This environment is distinct from the instruction set architecture of the host (ISA).
- The virtual machine software users choose comes packed with application provisioning that allows users to create packages, high availability, maintenance, and disaster recovery. This makes the tools for virtual machines more straightforward to use, making it possible for many operating systems to operate effectively on a single host.
- The presence of a virtual partition allows for multiple OS environments to co-exist on the same primary drive. This partition allows for sharing files generated from the host or the guest operating environment. Other processes, such as software installations, wireless connections, and remote replications, such as printing, can be performed efficiently in the host’s or guest’s environment.
- It allows developers to perform tasks without changing operating systems. All the generated data is stored on the host’s hard drive.
Disadvantages of system virtual machines are:
- When virtual machines indirectly access the host’s hard drive, they become less efficient than actual machines.
- Depending on the system, the performance of several virtual machines running on the same host can be different. The speed of execution and the protection against malware can also vary, leading to unstable behavior. Users can mitigate this problem using virtual machine software that provides temporal isolation.
- The guest operating system may not necessarily be compatible with the malware protections provided by the host resources. Therefore, it may require additional separate software leading to increased costs.
2. Process virtual machines
These virtual machines are sometimes called application virtual machines or Managed Runtime Environments (MREs). They run as standard applications inside the host’s operating system, supporting a single process. It is triggered to launch when the process starts and destroyed when it exits. It offers a platform-independent programming environment to the process, allowing it to execute similarly on any platform.
Process virtual machines are implemented using interpreters and they provide high-level abstractions. They are often used with Java programming language, which uses Java virtual machines to execute programs. There can be two more examples of process VMs — i.e., the Parrot virtual machine and the .NET Framework that runs on the Common Language Runtime VM. Additionally, they operate as an abstraction layer for any computer language being used.
A process virtual machine may, under some circumstances, take on the role of an abstraction layer between its users and the underlying communication mechanisms of a computer cluster. In place of a single process, such a virtual machine (VM) for a process consists of one method for each real computer that is part of the cluster.
Special case process VMs enable programmers to concentrate on the algorithm instead of the communication process provided by the virtual machine OS and the interconnect.
These VMs are based on an existing language, so they don’t come with a specific programming language. Their systems provide bindings for several programming languages, such as Fortran and C. In contrast to other process VMs, they can enter all OS services and aren’t limited by the system model. Therefore, it cannot be categorized strictly as virtual machines.
There are several advantages of using virtual machines:
- Isolation and security: Each virtual machine runs in its own isolated environment, which means that a problem or security issue with one virtual machine does not affect the other virtual machines on the same physical host.
- Flexibility: Virtual machines can be easily created, cloned, moved, and deleted, allowing for easy scaling and reconfiguration of a network.
- Cost-effective: Virtual machines allow multiple operating systems and applications to run on the same physical hardware, making more efficient use of resources and reducing the need for additional hardware.
- Compatibility: Virtual machines can be used to run older or incompatible software on newer hardware, making it possible to maintain legacy systems and applications.
- Disaster recovery: Virtual machines can be backed up and restored easily, making it easy to recover from hardware failure or other disasters.
- Testing and development: Virtual machines can be used to test software and configurations before deployment on a production system.
- Easy maintenance: Virtual machines can be patched, updated and rebooted without affecting the other virtual machines or the host.
- Portable: Virtual machines can be easily moved between different physical hosts or even cloud environments, allowing for better flexibility and scalability.
Disadvantages of virtual machines:
- Overhead: Virtual machines require additional resources to manage and run, which can impact performance and increase costs.
- Compatibility: Some applications may not be compatible with virtual machines, which can limit their usefulness in certain environments.
- Learning curve: Using virtual machines requires specialized knowledge and skills, which can be a barrier for some users.