[Federated-fs] Summary of root fileset discussion

Ellard, Daniel Daniel.Ellard at netapp.com
Tue Jul 22 10:47:04 PDT 2008


Root Fileset Discussion
        
Revision date: 07/22/2008

This is a revision of the document that Renu sent out a few weeks ago,
bringing it up to date with respect to the discussion during the
fed-fs conference calls.

Definitions

1.  A fileset that implements the "top" of the namespace is called a
    root fileset.
    
    There may be more than one root fileset, but the number is typically
    small.
    
2.  A root fileset is named by an FSN.  Such an FSN is called a root
    FSN.  Servers that host instances of the root fileset are called
    root fileset servers.  The FSLs of instances of the root fileset 
    are called root FSLs.

    There will be a special flag or attribute for an FSN that labels
    the FSN as a root FSN.
        
    An NSDB must be able to respond to a query whose result is the set
    of all root FSNs that it knows about.  The NSDB schema will be
    extended, if necessary to efficiently support such a query.
        
3.  The root fileset consists of a hierarchy consisting entirely of
    directory nodes and junctions -- no other type of file system
    object is permitted.  The leaf nodes of the root fileset are  
    junctions or empty directories.
        
        
OPEN QUESTIONS   

1.  How is the root fileset represented?
        
    There were two proposals for how the root fileset might be
    represented and distributed among the root fileset servers.

    1a.  The NSDB for the root fileset stores all of the information
        contained in the root fileset.
 
        In order to make changes to the root fileset, an admin makes
        changes to the contents of the NSDB.  The root fileset servers
        will discover these changes (see next topic) via the NSDB
        and change their local copies of the root fileset.
 
        The NSDB schema will be extended to include records that
        represent the contents of the root fileset.  The details of
        this schema extension have not been worked out yet.
 
        (this information may be replicated across more than one NSDB,
        although the details have not be worked out)
 
        The root fileset servers get information about the root
        fileset from the NSDB and use this information to create and
        maintain their own instances of the root fileset.
 
    1b.  The master copy of the root fileset is implemented on the
        root file fileset servers and some replication protocol is
        keep all of the root fileset servers in synch.
 
        In order to make changes to the root fileset, an admin makes
        changes to its local instance of the root fileset (or perhaps
        a designated "master" instance).  The root fileset servers
        will discover these changes from each other via some
        filesystem replication protocol and transparently update their
        local copies of the root fileset.
 
        In this approach, the NSDB only stores the definition of the
        root FSN to help the servers find the root, but no additional
        information about the root filesets (other that what it stores
        about all filesets).
 
    CONSENSUS:  given the current lack of a portable (cross-platform)
        replication protocol, approach 1b is not feasible at this
        time.  Since the semantics of the root fileset are quite
        constrained, however, and updates to the root fileset are
        expected to be infrequent, approach 1a is feasible.
 
 
2.  How many NSDBs store the root fileset info?
 
    Is the root fileset information (as described above -- whichever
    approach is chosen) replicated across all of the NSDBs, or a
    subset?
 
    If more than one NSDB stores the root FSN information, how are the
    multiple NSDBs kept in sync?  Does one NSDB play the role of
    master?
 
    CONSENSUS:  this hasn't been discussed in depth.
 
        This ties in with some of the later issues.  It's clear that
        if we have a discovery protocol, a client must be able to find
        an NSDB that can tell it a root FSL.  The open question is
        whether all NSDBs have this info, or all NSDBs know how to
        find an NSDB that has this info, or the client must know how
        to find an NSDB that has this info.
 
3.  If we choose approach 1a (the current consensus), then how do the
    root fileservers learn about changes to the root fileset?
 
    There are three main approaches:
 
    - PUSH: the NSDB informs each root fileset server of changes as
        they occur.
 
    - PULL: each root fileset server regularly asks an NSDB for info
        about the contents of the root fileset (i.e., a delta from
        the last query).
 
    - HYBRID:  a combination of push and pull.  The root fileset
        servers can pull information from the NSDBs, and NSDBs can
        push info to the root fileset servers, depending on context.
 
    DISCUSSION:  PUSH is a attractive from several perspectives, but
        has some awkward cases:
 
        - If a root fileset server is unreachable when an admin tries
            to make a change, does the system have to block until the
            root fileset server comes back?
 
            This is not acceptable; it negates some of the benefit of
            having multiple root fileset servers if they all have to
            be up in order to make changes!
 
        - If the system doesn't block, how do disconnected root
            fileset server learn about changes they missed while
            disconnected?
 
        To the best of our knowledge, LDAP does not support a PUSH or
        HYBRID update approach.  A delta PULL can be accomplished by
        logically time-stamping the changes and having root fileset
        servers only asking for changes that have happened since their
        last update, but this is a bit ugly.
 
        If we strongly desire a PUSH or HYBRID model, then we may have
        problems with LDAP.  In the most extreme case, this could
        force us to review the decision to use LDAP.  (we might still
        use LDAP for the underlying directory, and to handle
        resolution queries, but admin requests would go through a
        higher-level interface)
 
4.  Are there any constraints on the layout of the root fileset?
 
    Is the root fileset one-level, like AFS?
 
    Or can the root fileset have multiple levels?
 
    Do we want to be able to limit updates to parts of the root
    fileset by ACL or some other mechanism, so that updates to the
    part of the namespace related to one federation member can be
    controlled by that federation member?
 
    DISCUSSION:
 
    - If we stick to a one-level fan-out, then life is MUCH simpler
        than the general case.  The only thing about the root fileset
        that an admin might care about are:
 
        a) The FSN bound to their name at the root.
 
        b) That nobody else binds to that FSN without their
            permission.
 
        We can enforce these constraints with very simple mechanisms:
        essentially, the root fileset will only accept bindings to an
        FSN X from the admin authenticated as the admin of the NSDB
        named in X.  In simpler language, the only thing that someone
        can add to the root fileset is a junction to machines they
        own, and the only then someone can remove from the root
        fileset is a junction that points to them.  The NSDB will
        reject any requests by anyone to add/delete any other
        junction.
 
    - If we stick to a one-level fan-out, then the root may become
        insanely huge.  Doing insane things is not recommended by the
        best practices documents, but it may be unavoidable in
        pathological cases.
 


More information about the Federated-fs mailing list