Many of today’s cutting-edge technologies such as cloud computing, edge computing and microservices owe their start to the concept of the virtual machine—separating operating systems and software instances from a physical computer.
What is a virtual machine?
At its base level, a virtual machine (VM) is software that runs programs or applications without being tied to a physical machine. In a VM instance, one or more guest machines can run on a physical host computer.
Each VM has its own operating system, and functions separately from other VMs, even if they are located on the same physical host. VMs generally run on computer servers, but they can also be run on desktop systems, or even embedded platforms. Multiple VMs can share resources from the physical host, including CPU cycles, network bandwidth and memory.
VMs have their origins in the early days of computing in the 1960s when time sharing for mainframe users was a means of separating software from a physical host system. Virtual machine was defined in the early 1970s as “an efficient, isolated duplicate of a real computer machine.”
VMs as we know them today have gained steam over the past 15 years as companies adopted server virtualization in order to utilize the compute power of their physical servers more efficiently, reducing the need for physical servers and so saving space in the data center. Because apps with different OS requirements could run on a single physical host, different server hardware was not required for each one.
In general, there are two types of VMs: Process VMs, which separate a single process, and system VMs, which offer a full separation of the operating system and applications from the physical computer. Examples of process VMs include the Java Virtual Machine, the .NET Framework and the Parrot virtual machine.
System VMs rely on hypervisors, as a go-between giving software access to the hardware resources. Big names in the hypervisor space include VMware (ESX/ESXi), Intel/Linux Foundation (Xen), Oracle (MV Server for SPARC and Oracle VM Server for x86) and Microsoft (Hyper-V).
Desktop computer systems can also utilize virtual machines. The biggest example here would be a Mac user running a virtual Windows 10 instance on their physical Mac hardware.
Advantages of virtual machines
Because the software is separate from the physical host computer, users can run multiple OS instances on a single piece of hardware, saving a company time, management costs and the physical space. Another advantage is that VMs can support legacy apps, reducing or eliminating the need and cost of migrating an older app to an updated or different operating system.
In addition, developers use VMs in order to test apps in a safe, sandboxed environment. This can also help isolate malware that might infect a given VM instance. Since software inside a VM cannot tamper with the host computer, malicious software cannot spread as much damage.
Virtual machine downsides
Virtual machines do have a few disadvantages. Running multiple VMs on one physical host can result in unstable performance, especially if infrastructure requirements for a particular application are not met. This also makes them less efficient in many cases when compared to a physical computer. Most IT operations utilize a balance between physical and virtual systems.
Other forms of virtualization
The success of VMs in server virtualization led to applying virtualization to other areas including storage, networking, and desktops. Chances are if there’s a type of hardware that’s being used in the data center, the concept of virtualizing it is being explored (see application delivery controllers as one case).
In network virtualization companies have explored network-as-a-service options and network functions virtualization (NFV), which uses commodity servers to replace specialized network appliances to enable more flexible and scalable services. This differs a bit from software-defined networking, which separates the network control plane from the forwarding plane to enable more automated provisioning and policy-based management of network resources. A third technology, virtual network functions, are software-based services that can run in an NFV environment, including processes such as routing, firewalling, load balancing, WAN acceleration, and encryption.
VMs and containers
The growth of VMs has led to further development of technologies such as containers, which take the concept another step and is gaining appeal among web application developers. In a container setting, a single application along with its dependencies, can be virtualized. With much less overhead than a VM, a container only includes binaries, libraries, and applications.
While some think the development of containers may kill the virtual machine, there are enough capabilities and benefits of VMs that keep the technology moving forward. For example, VMs remain useful when running multiple applications together, or when running legacy applications on older operating systems.
In addition, some feel that containers are less secure than VM hypervisors because containers have only one OS that applications share, while VMs can isolate the application and the OS.
Gary Chen, the research manager of IDC’s Software-Defined Compute division, said the VM software market remains a foundational technology, even as customers explore cloud architectures and containers. “The virtual machine software market has been remarkably resilient and will continue to grow positively over the next five years, despite being highly mature and approaching saturation,” Chen writes in IDC’s Worldwide Virtual Machine Software Forecast, 2019-2022.
VMS, 5G and edge computing
VMs are seen as a part of new technologies such as 5G and edge computing. For example, virtual desktop infrastructure (VDI) vendors such as Microsoft, VMware and Citrix are looking at ways to extend their VDI systems to employees who now work at home as a result of the COVID-19 pandemic. “With VDI, you need extremely low latency because you are sending your keystrokes and mouse movements to basically a remote desktop,” says Mahadev Satyanarayanan, a professor of computer science at Carnegie Mellon University. In 2009, Satyanarayanan wrote about how virtual machine-based cloudlets could be used to provide better processing capabilities to mobile devices on the edge of the Internet, which led to the development of edge computing.
Like many other technologies in use today, these would not have been developed had it not been for the original virtual-machine concepts introduced decades ago.