Need help with diod?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

259 Stars 47 Forks GNU General Public License v2.0 935 Commits 19 Opened issues


Distributed I/O Daemon - a 9P file server

Services available


Need anything else?

Contributors list


is a multi-threaded, user space file server that speaks 9P2000.L protocol.


On Debian

sudo apt-get install build-essential libpopt-dev ncurses-dev automake autoconf git pkgconf
sudo apt-get install lua5.1 liblua5.1-dev libmunge-dev libwrap0-dev libcap-dev libattr1-dev
make check

On Red Hat

sudo yum install epel-release gperftools-devel ncurses-devel automake autoconf libattr-devel
sudo yum install lua lua-devel munge-devel tcp_wrappers-devel libcap-devel pkgconf
make check

On FreeBSD

portmaster security/munge
portmaster lang/lua53

See also the remarks below if you want a server that supports impersonation (access=user in v9fs).

Kernel Client

The kernel 9P client, sometimes referred to as "v9fs", consists of the

file system module, and its network transport module,

Although the kernel client supports several 9P variants, diod only supports 9P2000.L, and only in its feature-complete form, as it appeared in 2.6.38.

Earlier versions of the kernel that do not support 9P2000.L will fail at mount time when version negotiation fails. Some pre-2.6.38 versions of the kernel that have 9P2000.L but still send some 9P2000.u ops may fail in less obvious ways. Use a 2.6.38 or later kernel.

Quick Start

Start the diod server in foreground, with protocol debugging to stderr, no authentication, and one export:

sudo ./diod -f -d 1 -n -e /tmp/9

Mount it using the raw mount command:

sudo mount -t 9p -n /mnt \

Or (simpler), mount it using diodmount:

sudo ./diodmount -n localhost:/tmp/9 /mnt
Or (even simpler) if diodmount is installed as
sudo mount -t diod -n localhost:/tmp/9 /mnt

I/O forwarding on clusters:

On I/O node, set up

according to diod.conf(5), then:
chkconfig diod on
service diod start

On compute node, if I/O node is

, add entries like this to
fritz42:/g/g0  /g/g0         diod  default 0 0

Alternatively, use "zero-config" automounter method: * set

* add
/d /etc/auto.diod
mkdir /d
chkconfig autofs on
service autofs start
ln -s /d/g.g0 /g/g0

Note that at this point diod is only being tested with NFS file systems. Use it with Lustre or GPFS at your own peril - but if you do, please report issues!

Impersonation on FreeBSD

FreeBSD does not support per-thread credentials. If you want a diod server that supports v9fs' access=user, you can: * build diod with

(disabled by default on FreeBSD) * install
from ports (or at least the modules
) or from source * before stating diod, load the modules providing additional syscalls:
kldload /path/to/nfs-ganesha-kmod/setthreaduid/setthreaduid.ko
kldload /path/to/nfs-ganesha-kmod/setthreadgid/setthreadgid.ko
kldload /path/to/nfs-ganesha-kmod/setthreadgroups/setthreadgroups.ko

Please read nfs-ganesha-kmod's README first, and use at your own risk.


Use GitHub!


SPDX-License-Identifier: GPL-2.0-or-later

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.