• Stars
    star
    340
  • Rank 123,550 (Top 3 %)
  • Language
    C
  • License
    GNU General Publi...
  • Created over 13 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Distributed I/O Daemon - a 9P file server

diod

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

Building

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
./autogen.sh
./configure
make
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
./autogen.sh
./configure
make
make check

On FreeBSD

portmaster security/munge
portmaster lang/lua53
./autogen.sh
./configure
make

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 9p.ko file system module, and its network transport module, 9pnet.ko.

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 127.0.0.1 /mnt \
    -oaname=/tmp/9,version=9p2000.L,uname=root,access=user

Or (simpler), mount it using diodmount:

sudo ./diodmount -n localhost:/tmp/9 /mnt

Or (even simpler) if diodmount is installed as /sbin/mount.diod:

sudo mount -t diod -n localhost:/tmp/9 /mnt

I/O forwarding on clusters:

On I/O node, set up /etc/diod.conf according to diod.conf(5), then:

chkconfig diod on
service diod start

On compute node, if I/O node is fritz42, add entries like this to /etc/fstab:

fritz42:/g/g0  /g/g0         diod  default 0 0

Alternatively, use "zero-config" automounter method:

  • set DIOD_SERVERS="fritz42" in /etc/sysconfig/auto.diod1
  • add /d /etc/auto.diod to /etc/auto.master Then:
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 --enable-impersonation (disabled by default on FreeBSD)
  • install net/nfs-ganesha-kmod from ports (or at least the modules setthreadgid, setthreadgroups and setthreaduid) 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.

Support

Use GitHub!

Release

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

More Repositories

1

pdsh

A high performance, parallel remote shell utility
C
477
star
2

scrub

disk overwrite utility
C
68
star
3

slurm

SLURM: A Highly Scalable Resource Manager
C
64
star
4

powerman

cluster power control
C
41
star
5

genders

Genders is a static cluster configuration database used for cluster configuration management. It is used by a variety of tools and scripts for management of large clusters.
C
34
star
6

9nbd

network block device over 9P transport
C
20
star
7

cerebro

Cerebro is a collection of cluster monitoring tools and libraries.
C
17
star
8

mrsh

Mrsh is a set of remote shell programs that use munge authentication rather than reserved ports for security. The code for mrsh is based on the source code for rsh, rshd, rlogin, rlogind, and rcp.
Shell
16
star
9

netroot

Support for root over network block device
Assembly
11
star
10

rquota

quota utilities for NFS and Lustre file systems
C
9
star
11

v9fs

9P kernel modules
C
8
star
12

nodediag

cluster node diagnostics
Shell
8
star
13

lustre-kdmu

OBSOLETE AND NO LONGER MAINTAINED
C
7
star
14

nfsroot

linux cluster diskless support
Shell
6
star
15

lmt-gui

OBSOLETE AND NO LONGER MAINTAINED
Java
5
star
16

ldiskfs

OBSOLETE AND NO LONGER MAINTAINED
Shell
5
star
17

nph

fork of Mark Roth's PH client
C
4
star
18

whatsup

Whatsup is cluster node up/down detection utility.
C
4
star
19

dpkg

dpkg modified for use with dpkg-scripts in /usr/local
C
3
star
20

ldiskfsprogs

NO LONGER MAINTAINED
C
2
star
21

dpkg-scripts

tools for packaging software in /usr/local using debs
C
1
star
22

apt

apt modified for use with dpkg-scripts in /usr/local
C++
1
star
23

chaos.github.com

1
star