tags - tagged files used for clustering extensions
Tagged files are used by ClusterNFS and unfs3 to support NFS
exporting directories like /etc and /var to a cluster of client
machines. The problem at hand is that different files need to be served to
different clients. Tagged files provide a way to specify which file should be
served to which client(s).
Tags are appended to the end of a filename and are seperated from
the rest of the name by beginning and ending with $$. For each file, there
can be multiple tagged variants. The normal file, without a tag, is only
served to clients by default when no tagged file matching the client is
found. The following tags exist:
- file$$$$
- If a client attempts to access this file, it will be redirected to the
normal file instead, no matter what other tagged files exist. This is
mainly useful for use inside symlinks that need to point to a normal file
although other access to the normal file should be redirected. In this
special case, the tagged file file$$$$ does not even need to exist
(the symlink will then seem to be dangling on the server).
- file$$IP=a.b.c.d$$
- If a client with an IP address of a.b.c.d attempts to access the
normal file, it will be redirected to this file instead.
- file$$IP=a.b.c.d_n$$
- If a client with an IP adress in the network a.b.c.d/n attempts to
access the normal file, it will be redirected to this file instead. Note
that unfs3 only supports 8, 16, and 24 as values for n.
- file$$HOST=name$$
- If a client with the hostname name attempts to access the normal
file, it will be redirected to this file instead.
- file$$HOST=name*$$
- If a client whose hostname begins with the string name attempts to
access the normal file, it will be redirected to this file instead.
- file$$CLIENT$$
- If any client attempts to access the normal file, it will be redirected to
this file instead.
- file$$ALWAYS=IP$$
- If any client attempts to access or create the normal file, it will be
redirected to file$$IP=a.b.c.d$$ instead, where a.b.c.d is
the IP address of the client. It does not matter whether the target tagged
file exists or not.
- file$$ALWAYS=CLIENT$$
- If any client attempts to access or create the normal file, it will be
redirected to file$$CLIENT$$ instead. It does not matter whether
that file exists or not.
- $$ALWAYS=CLIENT$$
- Like above, but effective for all files in the directory where it is
found.
- $$ALWAYS=IP$$
- Like above, but effective for all files in the directory where it is
found.
Note that the ALWAYS tag can lead to file not found errors on
clients if the tagged files it redirects to does not exist on the server.
For example, ls(1) can suffer from this problem. Furthermore, this
tag is a unfs3 extension and does not exist in ClusterNFS.
When this tags exists, it prevents all access to the normal file by any
client.
- file$$CREATE=IP$$
- If any client attempts to create the normal file,
file$$IP=a.b.c.d$$ will be created instead, where a.b.c.d is
the IP address of the client.
- file$$CREATE=CLIENT$$
- If any client attempts to create the normal file, file$$CLIENT$$
will be created instead.
- $$CREATE=IP$$
- Like above, but effective for all files in the directory where it is
found.
- $$CREATE=CLIENT$$
- Like above, but effective for all files in the directory where it is
found.
Tags work for all kinds of named filesystem objects. If multiple
tagged files are found for a normal file, they are considered in the order
they are given above, starting at the top. Processing stops once a match is
found. In ClusterNFS, but not in unfs3, only files accessible
and readable by a client are considered matches.