From Xen


Xen uses a xenstore daemon to allow dom0 and guests get access to information about configuration space for itself and the system. Xen currently supports two versions of the daemons:

 * cxenstored
 * oxenstored

Most solutions today are shipping with only cxenstored, but there are optimizations that were done on oxenstored which should be considered by users who want to scale xen with a large set of hosts. For more details see the information below. Communication to the xenstored can happen through unix domain sockets or through the kernel ring interface, both of which are documented below.

The xenstore

The XenStore is initialized and maintained xenstored. Go read more details at these two pages:

 * XenStore
 * XenStoreReference

xenstored unix sockets

Systems which enable unix sockets (non stubdom solutions, and not on the mini OS) get two Unix domain sockets created which enable userspace to communicate with the xenstored. The Unix sockets are created by the xenstored. There are two unix sockets:

 * /var/run/xenstored/socket
 * /var/run/xenstored/socket_ro

xenstored kernel ring interface

The xenstored kernel ring interace is used by guests as they cannot get access to the unix domain sockets on dom0, instead they use the xenbus for communication with the xenstored. This sections needs some more love.

xenstored systemd support

Support for systemd is under development. This section will be expanded once the reference implementation is merged upstream.


The cxenstored was the original implementation for the xenstored, it is written in C. The code lives under tools/xenstore/.


The oxenstored is the next generation xenstored and it is written in Ocaml. The code lives under tools/ocaml/xenstore/.