Virtual machines
A whole computer, carved out of a bigger physical one.
12 technologies on this page ↓How it works
A hypervisor splits one physical server into several isolated machines. Each VM gets its own virtual CPUs, memory and disk, plus a full operating system that you install, patch and secure. To your software it looks exactly like a real server.
Renting a furnished apartment in a big building. The walls are yours to paint, the plumbing is shared, and everything inside your door is your responsibility.
Reach for it when
- Lifting an existing app off an office server without rewriting it
- Software that needs a specific OS, kernel module or licensed agent
- Long-running workloads where you want full control over tuning
Think twice when
- Spiky traffic: you pay for the machine while it sits idle
- Small teams that don’t want to own OS patching and hardening
A real example
A company moves its ten-year-old Windows ERP system to the cloud by copying it onto an 8-vCPU VM. Nothing in the app changes; the server just lives in a cloud data center now.
More on virtual machines
Narrower ideas that build on this one.
Technologies
Specific products, and what each does differently.
Amazon EC2AWSAWS’s virtual machines: pick an instance type, boot an image, and you have a server in minutes.
KubeVirtOpen sourceAdds virtual machines to Kubernetes as ordinary resources, so VMs and containers share one cluster, one API and one set of tools. Amazon EC2 | Managed service on AWS | Amazon Web Services | Proprietary | 2026-10-05 |
| Commercial product | HashiCorp, an IBM company | Business Source License 1.1 since Vagrant 2.4.0 (October 2023; source-available, not OSI open source); MIT before | 2026-10-05 | |
KubeVirt | Open source | Cloud Native Computing Foundation | Apache 2.0 | 2026-10-06 |
Also used for virtual machines
Products of other kinds that are often used this way, grouped by what they are.
libvirtOpen sourceA stable API, daemon and `virsh` command line for managing virtual machines, storage and networks, with drivers for QEMU/KVM, Xen, LXC, Cloud Hypervisor, VMware ESX, Hyper-V and more.
Xen Project hypervisorOpen sourceThe open-source type-1 hypervisor from Cambridge that ran the first Amazon EC2 instances: a small microkernel-style core that boots first, with drivers and management in a privileged VM called dom0.| KVM (Kernel-based Virtual Machine) | Hypervisors | Open source | Linux kernel community | GPL 2.0 | 2026-10-11 |
libvirt | Hypervisors | Open source | libvirt project (started at Red Hat) | LGPL 2.1 or later (library); some tools GPL 2.0 or later | 2026-10-11 |
| Hypervisors | Commercial product | Microsoft | Proprietary | 2026-10-11 | |
| Hypervisors | Open source | Oracle | GPLv3 for the base package and Guest Additions (GPLv2 before 7.0); the optional Extension Pack is proprietary: free under the PUEL for personal and educational use, a paid Enterprise license otherwise | 2026-10-11 | |
| Hypervisors | Open source | Proxmox Server Solutions GmbH | AGPLv3 | 2026-10-11 | |
| Hypervisors | Open source | QEMU project (started by Fabrice Bellard) | GPL 2.0 | 2026-10-11 | |
| Hypervisors | Commercial product | Broadcom (VMware) | Proprietary | 2026-10-11 | |
Xen Project hypervisor | Hypervisors | Open source | Xen Project (Linux Foundation), started at the University of Cambridge | GPL-2.0 (version 2 only) | 2026-10-11 |
| Infrastructure as code | Commercial product | HashiCorp, an IBM company | Business Source License 1.1 since 1.10.0 (source-available, not OSI open source); MPL 2.0 before the August 2023 change | 2026-10-05 |
What each provider calls it
- AWS
- EC2
- Google Cloud
- Compute Engine
- Azure
- Virtual Machines
- Open source & others
- KVM, Proxmox, OpenStack; Vagrant for local dev VMs; Packer to build images; KubeVirt for VMs managed by Kubernetes
In code · bash
# Launch one Ubuntu VM with 2 vCPU / 4 GB
aws ec2 run-instances \
--image-id ami-0abcdef1234567890 \
--instance-type t3.medium \
--key-name my-key \
--subnet-id subnet-0a1b2c3dOften confused with
Where it came from1967–2023
Virtual machines began as a way to share one very expensive computer. At IBM’s Cambridge Scientific Center, working alongside MIT, engineers built CP-40 on a specially modified System/360 Model 40. It went into production in January 1967, giving each user a virtual machine that could run its own operating system as if it had the hardware to itself. The design became CP-67 and then IBM’s VM/370 (1972). In 1974 Gerald Popek and Robert Goldberg wrote down the rules: a guest must behave as on real hardware, the monitor must stay in control, and the guest must run at nearly full speed, with most instructions running directly on the CPU.
The PC’s x86 chips broke those rules: some sensitive instructions didn’t trap to the monitor. VMware, founded in 1998 by Stanford’s Mendel Rosenblum, Diane Greene and others, got around this in VMware Workstation (1999) by rewriting problem kernel instructions on the fly. Cambridge University’s Xen (2003) took a different route, modifying the guest OS to call the hypervisor directly. In 2005 Intel and AMD added hardware support (VT-x and AMD-V), and KVM used it to turn Linux itself into a hypervisor.
Virtualization on ordinary x86 servers let one physical machine host many isolated ones, which is the basis of every public cloud: EC2 ran on Xen from 2006, and from 2017 its new instances moved to the Nitro system, whose hypervisor is based on KVM.
Why it’s built this way
- Run guest code directly; trap only the sensitive parts
- Emulating every instruction would be far too slow. Letting the CPU run ordinary instructions natively and stepping in only for privileged ones is what makes a VM nearly as fast as bare metal.
- Binary translation when the hardware won’t help
- Since x86 couldn’t trap every sensitive instruction, VMware scanned kernel code and rewrote the problem instructions before they ran, while still running user code directly.
- Paravirtualization: let the guest know it’s virtual
- Xen changed the guest kernel to make explicit calls to the hypervisor instead of touching hardware, which avoided costly emulation.
- Hardware support in the CPU
- VT-x and AMD-V gave x86 a proper mode for guests, so a hypervisor no longer needed rewriting tricks. KVM, which turned Linux into a hypervisor, depends on them.
Timeline
- 1967
IBM’s CP-40 goes into production, running virtual machines on one System/360
- 1999
VMware Workstation virtualizes the x86 PC
- 2003
Xen released from the University of Cambridge
- 2005
Intel VT-x and AMD-V add hardware virtualization to x86
- 2007
KVM merged into Linux 2.6.20
- 2017
New EC2 instances move from Xen to the KVM-based Nitro hypervisor
- 2023
Broadcom completes its purchase of VMware
- Melinda Varian: VM and the VM Community, Past, Present, and Future (1997)
- Popek and Goldberg: Formal requirements for virtualizable third generation architectures (CACM, 1974)
- Bugnion et al.: Bringing virtualization to the x86 architecture with the original VMware Workstation (ACM TOCS, 2012)
- Barham et al.: Xen and the Art of Virtualization (SOSP 2003)
- Kernel Newbies: Linux 2.6.20 adds KVM (Feb 2007)
- James Hamilton: Xen-on-Nitro, AWS Nitro for legacy instances (2021)
- Amazon EC2 FAQs: the Nitro Hypervisor is based on core KVM technology
- Broadcom: Broadcom completes acquisition of VMware (Nov 2023)
Sources10
- Amazon EC2 docs: General purpose instance specifications (t3.medium)
- Amazon EC2 On-Demand pricing (billed while running)
- Compute Engine docs: Virtual machine instances
- Azure docs: Virtual machines in Azure
- KVM project
- Proxmox Virtual Environment overview
- OpenStack Nova docs
- Vagrant docs: Introduction
- Packer docs: Introduction to Packer
- KubeVirt docs: Architecture