virtual machine (VM)
A virtual machine (VM) is an operating system (OS) or application environment that is installed on software, which imitates dedicated hardware. The end user has the same experience on a virtual machine as they would have on dedicated hardware.
Specialized software, called a hypervisor, emulates the PC client or server's CPU, memory, hard disk, network
Virtual machines do not require specialized, hypervisor-specific hardware. Virtualization does, however, require more bandwidth, storage
VM Management
The use of virtual machines also comes with several important management considerations, many of which can be addressed through general systems administration best practices and tools that are designed to manage VMs. There are some risks to consolidation, including overtaxing resources or potentially experiencing outages on multiple VMs due to one physical hardware outage. While these cost savings increase as more virtual machines share the same hardware platform, it does add risk. It is possible to place hundreds of virtual machines on the same hardware, but if the hardware platform fails, it could take out dozens or hundreds of virtual machines.
VM Uses
VMs have multiple uses, but in general they are deployed when the need for different operating systems and processing power are needed for different applications running simultaneously. For example, if an enterprise wants to test multiple web servers and small databases at the same time. Similarly, if an enterprise wants to use the same server to run graphics-intensive gaming software and customer service database.
VM vs. Dual Boot
Before the arrival of virtualization, an operator wanting to run two operating systems, say, Windows and Linux, had to run two full operating systems and toggle between them. While only one could be used at a time, it used the full power of the hardware. In some instances, particularly when the computer is not that powerful and the tasks are very demanding, some operators still prefer to use dual boot. Similarly, 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 on different operating systems often, VM is far more practical.
VM vs. emulators
An emulator is software that allows one application to take on the characteristics of another. For example, emulation software can be used to make a PC operate as a game console.
VM vs. containers
Containers are similar to VMs, except that they only virtualize the operating system, rather than the rest of the underlying hardware. Containers contain 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.Containers are used to create cloud-native, distributed applications, and to package legacy applications for increased portability and deployment simplicity. One of the leading container developers as of mid-2019 was Docker, which first arrived in the market in 2013 as a Linux-based container platform.
VM Vendors
Several vendors 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), Oracle and Microsoft. Numerous open-source VM vendors have also staked their claims, such as ProxMox. VMware has a mature product portfolio, with many years of use in the IT industry. Microsoft has come on very strong in recent years, introducing its Azure line of VM solutions. They include 11 different series that range from its A Series -- designed for development and test servers, low traffic web servers, small to medium databases, servers for proof-of-concepts, and code repositories -- to its N Series -- designed with graphics processing unit (GPU) capabilities for compute and graphics-intensive workloads, such as high-end remote visualization, deep learning and predictive analytics.
Cloud computing layers additional technologies, such as self-service provisioning and chargeback, onto virtualization. For example, in a virtualized data center, the IT staff will spin up new virtual machines based on user demand or a new project. In a cloud environment, a user can provision virtual machines from a self-service catalog and specify resources without interacting with the underlying physical equipment.