Linux Virtualization Management Daemon
libvirtd - libvirt management daemon
libvirtd [options]
libvirtd
is the server side daemon component of the libvirt virtualization management library. It performs the management of virtual machines, networks, and storage pools on the host system.
The daemon listens for requests on a local Unix domain socket and optionally on a TCP socket. Client applications use the libvirt library to talk to the daemon.
-h, --help
-v, --verbose
-d, --daemon
-l, --listen
-t, --timeout <secs>
-f, --config <file>
-V, --version
-p, --pid-file <file>
The daemon can be configured using the configuration file. The default configuration file is:
$XDG_CONFIG_HOME/libvirt/libvirtd.conf
libvirtd follows the XDG Base Directory Specification, a standard that defines where applications should store configuration, runtime, and data files. This ensures consistent behavior across Linux distributions and desktop environments.
$XDG_CONFIG_HOME
specifies the base directory for user-specific configuration files. If not set, it defaults to $HOME/.config
.
What this means for libvirtd:
$HOME/.config/libvirt/
$XDG_RUNTIME_DIR
is a directory for user-specific runtime files like sockets, PID files, and temporary data. It's typically /run/user/<uid>
and is cleaned up when you log out.
What this means for libvirtd:
/run/user/<uid>/libvirt/
Here's a basic /etc/libvirt/libvirt.conf
configuration file with explanations:
#
# libvirt.conf - Main libvirt configuration file
# This file controls how libvirt tools connect to hypervisors
#
# URI Aliases - Create shortcuts for frequently used connections
# These let you use 'virsh -c hail' instead of typing the full URI
uri_aliases = [
"hail=qemu+ssh://[email protected]/system",
"sleet=qemu+ssh://[email protected]/system",
"local=qemu:///system",
"session=qemu:///session"
]
# Default URI - Used when no connection is specified
# 'qemu:///system' = local system VMs (requires root)
# 'qemu:///session' = user session VMs (no root needed)
uri_default = "qemu:///system"
# Authentication - How to handle remote connections
auth_unix_ro = "polkit" # Read-only access via polkit
auth_unix_rw = "polkit" # Read-write access via polkit
auth_tcp = "sasl" # TCP connections use SASL
auth_tls = "sasl" # TLS connections use SASL
# Key files for TLS connections
key_file = "/etc/pki/libvirt/private/serverkey.pem"
cert_file = "/etc/pki/libvirt/servercert.pem"
ca_file = "/etc/pki/libvirt/cacert.pem"
These create shortcuts for complex connection strings. Instead of typing:
virsh -c qemu+ssh://[email protected]/system list
You can simply use:
virsh -c hail list
qemu:///system
- Local system VMs (requires root privileges)qemu:///session
- User session VMs (no root needed)qemu+ssh://
- Remote VMs via SSHqemu+tls://
- Remote VMs via TLS encryption$XDG_CONFIG_HOME/libvirt/libvirtd.conf
$XDG_RUNTIME_DIR/libvirt/libvirt-sock
$HOME/.pki/libvirt/cacert.pem
$HOME/.pki/libvirt/servercert.pem
$HOME/.pki/libvirt/serverkey.pem
$XDG_RUNTIME_DIR/libvirt/libvirtd.pid
Start libvirtd as a daemon:
libvirtd -d
Start with verbose output and custom config:
libvirtd -v -f /etc/libvirt/libvirtd.conf
Start with TCP listening enabled:
libvirtd -l -d
libvirtd manages virtual machines through various hypervisors:
virsh list --all
virsh start <domain>
virsh shutdown <domain>
virsh destroy <domain>
virsh net-list --all
virsh net-start <network>
virsh net-destroy <network>
virsh pool-list --all
virsh vol-list <pool>
virsh pool-start <pool>
libvirtd provides several networking options:
Storage pools can be configured for various backends:
libvirtd implements several security features:
Logging can be configured through the configuration file. Common log levels:
/etc/libvirt/libvirtd.conf
/var/run/libvirt/libvirt-sock
/var/log/libvirt/libvirtd.log
/var/run/libvirt/libvirtd.pid
virsh(1)
, virt-manager(1)
, libvirt(3)
, libvirtd.conf(5)
Please report bugs to the libvirt mailing list: [email protected]
libvirtd was written by the libvirt project team.
Copyright © 2006-2024 Red Hat, Inc. and others. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.