FedFsUtilsProject

From Linux NFS

Revision as of 19:07, 13 February 2012 by Chucklever (Talk | contribs)
Jump to: navigation, search

Project: fedfs-utils

[ Project Home | News | Downloads | Docs | Mailing Lists | Source Control | Issues ]


Project Description: Linux implementation of Federated File System draft standard

License: GPL-2

FedFS introduction

RFC 5716 introduces the Federated File System (FedFS, for short). FedFS is an extensible standardized mechanism by which system administrators construct a coherent namespace across multiple file servers using file system referrals.

A file system referral is like a symbolic link to another file system share, but it is not visible to applications. It behaves like an automounted directory where a new file system mount is done when an application first accesses that directory. Today, file system referral mechanisms exist in several network file system protocols.

Thus FedFS does not require any change to file system protocols or client implementations. FedFS provides its namespace features using referral mechanisms already built in to network file system protocols.

As a result, FedFS provides network file system namespace configuration to file system clients via network file systems themselves, rather than via side-band protocols like NIS. Clients automatically share a common view of the network file system namespace with no need for individual configuration on each client.

Currently, the Linux FedFS implementation supports only NFS version 4 referrals. More on NFS version 4 referrals can be found in RFC 3530. FedFS may support other network file system protocols in the future.

Package Overview

The code provided in this package is a technology preview. The intent is to provide a full and supported Linux FedFS client and server implementation based on this code. Programming and user interfaces may change significantly for the next few releases.

The components in this package are used for managing file system referrals and for creating a global network file system namespace. Installable components include:

  • An automounter program map to manage the FedFS domain namespace on FedFS-enabled clients
  • A mount command to mount the top of a FedFS domain namespace
  • An ONC RPC service daemon that runs on file servers enabling the management by remote FedFS ADMIN clients of FedFS junctions
  • A privileged program run by mountd on the file server to resolve FedFS junctions on local file systems
  • A set of command-line clients that can access fedfsd instances on remote file servers
  • A set of command-line clients that can manage FedFS entries on an LDAP server acting as a FedFS NSDB
  • A tool to manage NSDB connection parameters on the local host
  • An LDIF format schema to enable an LDAP server to support FedFS objects
  • HTML Doxygen style documentation with built-in source browser

The automounter program map is a subcommand invoked by the automounter to locate FedFS domains and construct appropriate mount options for mounting domain roots. It is used in conjunction with the Linux autofs facility.

The mount command is a subcommand invoked by mount(8) to handle the housekeeping needed to find and mount FedFS domains at the top of the client's FedFS namespace (usually /nfs4 for NFSv4 servers).

The fedfsd program is an RPC server that allows remote administrators to create FedFS junctions in local file systems. FedFS ADMIN requests that can mutate local file system state are authenticated via RPCSEC GSSAPI (not yet implemented). Run this program on NFS file servers that participate in a FedFS federation to allow the management of FedFS junctions on that server.

The resolve-junction program is a side-car program used by mountd to resolve junctions on local file systems. The kernel NFS server passes a particular file system object to mountd. If mountd discovers that this object is a FedFS junction, it will resolve the junction using the FedFS NSDB protocol, and pass the results back to the kernel. This processing is in a separate executable and package from mountd in order to avoid adding additional build and run-time dependencies to nfs-utils.

The command-line clients are used by FedFS adminstrators to manage the state of the local FedFS federation. These are simple clients that expose the raw administrative operations of FedFS, much like the bottom- level git commands. Eventually we plan to create high-level clients, much like git porcelain, to provide some degree of automation to FedFS administration.

Personal tools