From Fedora Project Wiki

< Features

Revision as of 03:43, 24 July 2012 by Iankent (talk | contribs) (Current status)



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.


  • Name: Ian Kent
  • Email:

Current status

  • Targeted release: Fedora 18
  • Last updated: Jul 24, 2012
  • Percentage of completion: 100%

Detailed Description

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. The arguments of the mount operation are controlled by information returned by the file server.

Today, file system referral mechanisms exist in several network file system protocols. FedFS provides its namespace features by leveraging referral mechanisms already built in to network file system protocols. Thus no change to file system protocols or clients is required.

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.

Benefit to Fedora

See detailed description. As this is an emerging standard, we want Fedora to be one of the first operating systems to support it.

Chuck Lever also points out that fedfs-utils is part of a larger, ongoing effort to build out storage administration features on Linux file servers. This includes, to name but a few:

  • The ability to manage NFS referrals either via FedFS or via a simple command line tool on file servers
  • Support for SMB2 in a FedFS framework
  • Support for NFSv4.1's fs_locations_info attribute
  • Client-side support for NFSv4 migration with transparent state migration
  • Support for transparent NFS client access to replicated file sets


Much of the work for this has already been done. Chuck Lever of Oracle has done an implementation of the required userspace tools for this, and a Fedora package of release 0.8.0 has been built. We'll probably also need to do some documentation and/or articles describing how to set up both the client and server for FedFS.

The upstream project website for this is here:

It contains license information, presentation slides, the FedFS LDAP schema, and a project roadmap.

Fedfs is, in many ways, an addition of automount functionality along the line of something that I believe (as the autofs maintainer both upstream and here in Fedora) has been needed for a long time. That is a distributed autofs mount map resource manager and while fedfs isn't quite what I envisioned for autofs the functionality it provides is fairly close. Just how far integration with autofs will go isn't clear yet.

At this stage the fedfs package cotains an autofs program map that is used to provide access to the namespace and that is sufficient to start with. An improvement to autofs that I plan on doing is to add native support to autofs for fedfs in order to provide earier discovery and access to the available fedfs namespaces.

How To Test

(FIXME: Make this less skeletal)

  1. set up fedfs domain and server(s)
  2. set up fedfs clients
  3. test that fedfs referrals work

User Experience

The casual Fedora user won't see any changes with this. This should only change the experience for someone who makes the effort to set up and use FedFS.


There are some kernel patches required which are fairly modest in scope and have been included in the upstream kernel since version 3.2.

There are also some changes needed to nfs-utils (specifically mountd) to allow it to process junctions. The change to nfs-utils required by version 0.8.0 has been done although nfs-utils will need to be rebuilt to recognise that the fedfs-utils plugin is now present.

Additionally, LDAP servers need to have the FedFS LDAP schema installed. The schema is not yet included in Openldap so users will need to manually add the schema which is included in the package fedfs-utils-common and placed in docs directory.

/etc/rpc needs to be updated to include the IANA-assigned fedfs RPC program number which was added in glibc-2.15-12, available since Fedora 17.

Contingency Plan

If this package isn't approved for inclusion, we simply won't ship fedfs-utils.


The package has a fairly comprehensive set of manpages, but we may also need to create some other "How-To" documentation.

Release Notes

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 in order to create 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 parts of a FedFS domain namespace.
  • A plug-in library that allows programs outside of FedFS to resolve junctions on local file systems.
  • An ONC RPC service daemon that runs on file servers enabling the management by remote FedFS ADMIN clients of FedFS junctions.
  • A tool called "nfsref" to manage local junctions without requiring fedfsd.
  • 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.

For more information refer to the FedFS project page and the FedFS Documentation page.

Comments and Discussion