Skip to content
atlas

Virtual machine

Also known as: VM

A whole computer made in software, with its own operating system, running side by side with others on one physical machine.

Draft - this entry has not been reviewed yet.

Formal

A software copy of a complete computer - processor, memory, disk and network card - created by a hypervisor; it runs its own full operating system, kept apart from the other virtual machines on the same hardware.

In plain English

Like flats in one building - each has its own front door, kitchen and bathroom, even though they share the same foundations.

In practice

The IT operations manager at a water utility runs the payroll system, the file server and a test environment as three virtual machines on one large server, each with its own Windows or Linux.

Why it matters

It is the basic building block of most cloud services; strong separation between machines is what lets strangers safely share the same hardware.

Technical deep dive

A VM is defined by a virtual hardware specification (vCPU count, memory size, virtual devices), firmware (legacy BIOS or UEFI, increasingly with Secure Boot and a virtual TPM) and one or more disk images in formats such as VMDK, VHDX, qcow2 or raw, which can be packaged for exchange with the DMTF's Open Virtualization Format (OVF). Virtual devices are either fully emulated (an Intel e1000 network card, an IDE controller), which works with unmodified guests but is slow, or paravirtualised (virtio-net and virtio-blk under KVM, VMXNET3 and PVSCSI under VMware), where the guest runs drivers that know they are virtualised. Each vCPU is a schedulable entity on the host, so CPU can be overcommitted; memory can be overcommitted too, through ballooning, host swapping or page sharing, though VMware disabled transparent page sharing between VMs by default in 2014 because of side-channel concerns.

Lifecycle operations are where VMs differ most from physical servers. Snapshots record a delta disk (and optionally memory state) from a point in time; they are not backups, because they depend on the base disk and degrade performance when kept for long. Cloning from a template duplicates identity material such as SSH host keys and machine identifiers unless the image is generalised (sysprep on Windows, cloud-init or machine-id regeneration on Linux). Live migration, described by Clark et al. in 2005 and sold as vMotion, iteratively pre-copies memory pages while the VM runs and pauses it only briefly to transfer the last dirty pages and CPU state.

Isolation between VMs is only as strong as the hypervisor and the CPU's side-channel mitigations, but it is structurally stronger than between containers, which share one host kernel. VM artefacts are sensitive in themselves: a disk image or memory snapshot of a domain controller lets an attacker extract the Active Directory database and keys offline, so access to storage and the hypervisor console must be treated as tier-0. VM sprawl leaves forgotten, unpatched machines on the network. Confidential computing (AMD SEV-SNP, Intel TDX) encrypts VM memory with keys the hypervisor cannot read, reducing trust in the host operator.

Two naming overlaps cause confusion. A system VM, emulating a whole machine, is not a process VM such as the JVM or the .NET CLR, which runs one program in a language runtime. And in cloud terminology an "instance" is simply a VM of a predefined instance type, sometimes on dedicated or bare-metal hosts, and nested virtualisation lets a VM itself host further VMs.

What to learn first

Everything this builds on, foundations first.

  1. Operating system
  2. →Hypervisor
  3. →Virtual machine

Relationships

Don't confuse with
Container

Sources & further reading

Standards & official texts

  • NIST SP 800-125 - Guide to Security for Full Virtualization Technologies · NIST

Where this data comes from

This entry was drafted by an AI from the sources above and has not yet been checked by a person. Treat it as a starting point, and check anything important against the sources.

See the review queueSuggest a correction on GitHubThis term as JSON

Mentioned in

Check yourself

Loading…

Atlas is in beta.