I noticed when using virsh that VMs are referred to as "domains". Why are they called domains instead of Virtual Machines?

$ virsh

virsh # help
 Domain Monitoring (help keyword 'monitor'):
    domblkerror                    Show errors on block devices
    domblkinfo                     domain block device size information
    domblklist                     list all domain blocks
    domblkstat                     get device block stats for a domain
    domcontrol                     domain control interface state
    domif-getlink                  get link state of a virtual interface
    domifaddr                      Get network interfaces' addresses for a running domain
    domiflist                      list all domain virtual interfaces
    domifstat                      get network interface stats for a domain
    dominfo                        domain information
    dommemstat                     get memory statistics for a domain
    domstate                       domain state
    domstats                       get statistics about one or multiple domains
    domtime                        domain time
    list                           list domains

virsh # list --all
 Id    Name                           State
 -     centos_vagrant_test_test_vm    shut off
 -     collectd01                     shut off
 -     grafana01                      shut off
 -     influxdb01                     shut off
 -     JobDBWin7_Stable               shut off
 -     OpenWRT_Red                    shut off
  • Not an answer, but "virtual machine" itself is ambiguous as well. – Ignacio Vazquez-Abrams Dec 2 '17 at 0:02
  • 1
    qemu doesn't call them domain. libvirt does. virsh is the CLI to libvirt, a management interface to a number of hypervisors including qemu/kvm, xen or virtualbox. – Stéphane Chazelas Jan 9 at 19:59

They're not kvm exclusive terminology (xen also refers to machines as domains). A hypervisor is a rough equivalent to domain zero, or dom0, which is the first system initialized on the kernel and has special privileges. Other domains started later are called domU and are the equivalent to a guest system or virtual machine.

The reason is probably that both are very similar as they are executed on the kernel that handles them.

  • When I run list --all (which is listed in help under DOMAINS, see above) I get a list of all of my virtual machines. – leeand00 Dec 2 '17 at 1:31
  • Yes, because the dom0 is where you're running that command from. It won't be considered a VM... – Zip Dec 2 '17 at 2:05

According to Xen wiki (https://wiki.xen.org/wiki/Domain),

A domain is one of the virtual machines that run on the system. Domain0 is the first domain started by the Xen hypervisor at boot, and will be running a Linux OS.

The Xen project has greatly influenced the developers of virtualization tools. This name certainly comes from there.

  • 4
    libvirt (which the OP confuses with qemu/kvm) was initially for xen. Support for qemu was added later, which is why libvirt's naming convention follows xen's – Stéphane Chazelas Jan 9 at 21:13

I don't think they're called that in KVM or QEMU.

The QEMU manual does mention "domains" in the context of Unix domain sockets, DNS domains and Xen domains, but that terminology isn't related to QEMU itself. The manual seems to call the program itself a "system emulator", and refers to the virtual machines as just "guests" on multiple occasions.

The KVM website then mentions "running virtual machines". Virtual machines and guests are also mentioned in the original announcement. I can't see any mention of domains.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.