ClusterNFS

Comments and Contributions Welcome

What is ClusterNFS?

ClusterNFS is a set of patches for the "Universal NFS Daemon" (UNFSD) server to allow multiple diskless clients to NFS mount the same root filesystem by providing "interpreted" file names.

When a client requests the file "/path/filename" , the ClusterNFS server checks for the existence of files of the form "/path/filename$$KEY=value$$". If such a file exists and the clients has a matching value for KEY, this file is returned. If the client does not have the matching value or no such file exists,  the file request proceeds as normal. Currently supported keys include, HOST (hostname), IP (IP number), UID (user id), GID (group id), and CLIENT (matches any NFS client).

By naming all machine-specific files "filename$$IP=aaa.bbb.ccc.ddd" and naming files which are the same for all clients "filename$$CLIENT$$", the server and all clients can share the same root partition. This makes it easy to set up and maintain a pool of diskless machines. The ClusterNFS home page is hosted on a small Beowulf cluster http://queenbee.fhcrc.org which has been constructed in this fashion.

How does it work?

When the NFS deamon is started with the command line option "-T" or "--translate-names" the NFS server  attempting to match the filename with various "interpreted" expressions appended.

When a client requests the file "/path/filename", the ClusterNFS server  checks for for the following files, returning the first match:
 
Filename Matches if:
/path/filename$$UID=xxxx$$  Matches if the user id of the user accessing the file is xxxx.
/path/filename$$GID=yyyy$$ Matches if the current group id of the user accessing the file is yyyy.
/path/filename$$HOSTNAME=ssss$$  Matches if the hostname of the client making the request is ssss.
/path/filename$$IP=xxx.xxx.xxx.xxx$$  Matches if the host ip number of the client making the request is xxx.xxx.xxx.xxx.
/path/filename$$CLIENT$$  Always matches on access through the NFS server.
/path/filename Always matches.

If a matching file is located, but authorization is denied,this is NOT considered a match, and the next entry on the list will be attempted.

To access the "base" file or directory, rather than the machine specific version, simply append "$$$$" to the filename. This also causes two lookup attempts, first using the filename without the trailing "$$$$", then with the trailing "$$$$".  The latter occurs in case there is a file actually named "filename$$$$".

As of version 0.91 alpha, all file  and directory actions (read, create, link, softlink, getattrib, setattrib, rename,  remove, copy, mkdir, rmdir) support this scheme. As of version 1.0.0-pre1, mount requests also support this scheme

Future enhancement will suport:

How can it be used?

Documentation

New: ClusterNFS is now hosted on  SourceForge
                  Logo

Bug List

TODO List

Downloads

How can I help?

Frequently Asked Questions (FAQ)

Comments? Questions?

Email the author at clusternfs@warnes.net.

Credits

The ClusterNFS patch and documentation were created by Gregory R. Warnes clusternfs@warnes.net.

The original version of the UNFS is maintained by Olaf Kirch okir@monad.swb.de.

Thomas Schoebel-Theuer schoebel@informatik.uni-stuttgart.de provided a patch for Linux versions 2.0.x which provided similar features.
 
 

There have been  visits to this site since May 13, 2000