To enable access to AFS for systems without (stable) AFS clients, I’ve been interested in exporting my cell somehow or another. The intent would be to have a local machine or VM serving up the AFS share in a way which preserves its POSIX-like interface. I’ve heard that others are using unfs3 to do this, and so I tested it out and took some notes.
Goals:
- Share should “work” well enough to keep a home directory in
Concessions:
- Share may be potentially accessible by only one client at once
- Share should be accessible by many OSs somehow or another. (9P? NFS? webdav? sshfs?)
- Performance may be particularly limited
- Permissions/ACLs may be simplified greatly
- May require keytabs/k5start to keep it going
Using unfs3
Tried this out using unfs3 as found at your-file-system’s unfs3 github fork.
Steps to get this running again:
- I had to add
#include <afs/stds.h>
inafssupport.c
to get it to build on Debian 8. Otherwise,afs_uint32
was undefined. - Create a small
afs_exports
, something like:
/afs/tcreech.com testclient(rw)
- Run as an unprivileged user, holding the tokens that you want to effectively export. This will register mount/nfs with RPC. (Note that you may not need to specify the ports with
-n
and-m
.)
./unfsd -s -u -t -d -e $PWD/afs_exports -n 8888 -m 8889
- You should now be able to mount this in the usual way from the specified client:
mount -o vers=3,soft server:/afs/tcreech.com /mnt/unfstest
How well does it work?
Works:
- Accessible to Linux (half-hearted yay…)
- Wrote this page via NFS-exported AFS
Doesn’t works:
- running “file” on a bunch of ISOs (server allegedly stops responding)
tar xf tmux-2.0.tar.gz
; IO errors
I am sad.
Using sshfs
OSs which support sshfs in a reasonable capacity which also do not have stable OpenAFS clients:
- FreeBSD (via fuse)
- NetBSD (via puffs)
- DragonFlyBSD? (via puffs supposedly, but I have not tested)
- plan9 sorta maybe (via ssh and remote u9fs)