Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/chaos/diod
Distributed I/O Daemon - a 9P file server
https://github.com/chaos/diod
Last synced: about 1 month ago
JSON representation
Distributed I/O Daemon - a 9P file server
- Host: GitHub
- URL: https://github.com/chaos/diod
- Owner: chaos
- License: gpl-2.0
- Created: 2011-04-21T17:32:02.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2024-03-21T10:25:29.000Z (9 months ago)
- Last Synced: 2024-03-26T00:40:07.204Z (9 months ago)
- Language: C
- Homepage:
- Size: 7.18 MB
- Stars: 330
- Watchers: 22
- Forks: 53
- Open Issues: 25
-
Metadata Files:
- Readme: README.md
- Changelog: ChangeLog
- License: COPYING
- Authors: AUTHORS
Awesome Lists containing this project
- awesome-starred - chaos/diod - Distributed I/O Daemon - a 9P file server (others)
README
### diod
`diod` is a multi-threaded, user space file server that speaks
[9P2000.L protocol](protocol.md).### 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](https://github.com/nfs-ganesha/nfs-ganesha)
* 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