MODERN LIBVIRT
From monolithic libvirtd to modular daemons
How virtqemud, virtproxyd, virtnetworkd, virtstoraged, and other daemons divide the old monolithic role.
Reference core
verify upstream ↗Current libvirt can replace the monolithic libvirtd process with modular daemons. For QEMU/KVM, virtqemud owns QEMU management. Other daemons handle networks, storage, secrets, host devices, logging, locking, and additional drivers.
virtproxyd can provide compatibility for clients expecting the traditional libvirtd socket and can proxy remote TCP/TLS connections to modular daemons. It is the compatibility and proxy layer; libvirtd itself remains the traditional monolithic daemon.
monolithic client -> libvirtd -> driver modular QEMU client -> virtqemud -> QEMU driver compatibility / remote client -> virtproxyd -> driver daemon
Living manual · why this matters
What changed when libvirt split the monolith?
The modular architecture divides stateful drivers into dedicated daemons. On QEMU/KVM hosts virtqemud handles QEMU management; virtnetworkd and virtstoraged handle virtual networking and storage; other daemons own secrets, node devices and filters. virtproxyd supplies remote TCP/TLS proxying and backwards compatibility for clients expecting the traditional libvirtd socket.
Operator checks
$ systemctl list-unit-files 'virt*d*'$ systemctl status virtqemud.socket virtqemud.service$ systemctl status virtproxyd.socket virtproxyd.service$ ss -lx | grep libvirt$ virsh -c qemu:///system uriWhat to notice
- Do not assume libvirtd.service must exist or be active on a modular host.
- Remote access and local QEMU management can be owned by different daemons.
- Provisioning, configuration and troubleshooting must follow the daemon model actually installed on the host.
Deep reference