[OpenAFS-devel] Fileserver as Masters Thesis

Jeffrey Hutzelman jhutz@cmu.edu
Tue, 27 Sep 2005 13:12:20 -0400


On Monday, September 19, 2005 06:31:54 PM +0200 Frank Bagehorn 
<FBA@zurich.ibm.com> wrote:

> - Or you create a virtual layer for the existing fileservers, so that you
> would have a well-defined interface to whatever lies below. (NAMEI or
> INODE or DB or whatever comes to peoples mind.)

Actually, we already have that layer.  OpenAFS doesn't have two 
fileservers; it has one fileserver which can be compiled with any of three 
different backends (inode, namei, and windows).  I'd expect work in this 
area to involve writing new fileserver backends, not whole new fileservers.

That said, I've done a couple of things along the export-local-files line 
that did use completely independent code.  One was hostafs 
(/afs/cs.cmu.edu/project/systems-jhutz/hostafs), which does an NFS-like 
export of part or all of the server's local filesystem.  It models each 
server as an independent cell, with each exported filesystem as an 
independent volume; the hostafs server provides both VLDB and fileserver 
services.  It has a variety of limitations, including the fact that write 
support was never implemented, and there is indeed no volserver.

I also have a much simpler tool, tafssrv 
(/afs/cs.cmu.edu/project/systems-jhutz/tafssrv), which exports one or more 
volumes whose contents are defined by a configuration file processed at 
startup.  It can be used as part of an existing cell or standalone, 
providing its own VLDB service.  And, it provides some support for 
volserver operations; you can even do dumps of its virtual volumes -- one 
of the applications was to export a volume containing a copy of the PTS 
database, so we could back it up along with the rest of the cell.  Again, 
tafssrv is read-only.  It also has very limited access-control -- by 
default, users in the UserList get rlk access to all files, and other 
clients get rlk access only to files with the global read or execute bits 
set.  This can be modified in either direction -- you can grant rlk on all 
files to all clients (noauth mode), or you can prevent non-privileged 
clients from accessing anything at all (restricted mode).

These tools are interesting, but they're not the basis for a full-service 
fileserver.  The real fileserver does a lot of things related to 
authentication, client tracking, callbacks, ACL's, and so on, which are not 
dependent on the backend being used.  Work like what was proposed at the 
start of this thread should almost certainly done by providing new 
fileserver backends.


-- Jeffrey T. Hutzelman (N3NHS) <jhutz+@cmu.edu>
   Sr. Research Systems Programmer
   School of Computer Science - Research Computing Facility
   Carnegie Mellon University - Pittsburgh, PA