Implementation of the Ficus Replicated File System

As we approach nation-wide integration of computer systems, it is clear that le replication will play a key role, both to improve data availability in the face of failures, and to improve performance by locating data near where it will be used. We expect that future le systems will have an extensible, modular structure in which features such as replication can be \slipped in" as a transparent layer in a stackable layered architecture. We introduce the Ficus replicated le system for NFS and show how it is layered on top of existing le systems. The Ficus le system di ers from previous le replication services in that it permits update during network partition if any copy of a le is accessible. File and directory updates are automatically propagated to accessible replicas. Con icting updates to directories are detected and automatically repaired; con icting updates to ordinary les are detected and reported to the owner. The frequency of communications outages rendering inaccessible some replicas in a large scale network and the relative rarity of con icting updates make this optimistic scheme attractive. Stackable layers facilitate the addition of new features to an existing le system without reimplementing existing functions. This is done in a manner analogous to object-oriented programming with inheritance. By structuring the le This work was sponsored by DARPA under contract number F29601-87-C-0072. This author is also associated with Locus Computing Corporation. system as a stack of modules, each with the same interface, modules which augment existing services can be added transparently. This paper describes the implementation of the Ficus le system using the layered architecture.

[1]  J. D. Day,et al.  A principle for resilient sharing of distributed resources , 1976, ICSE '76.

[2]  David K. Gifford,et al.  Weighted voting for replicated data , 1979, SOSP '79.

[3]  Michael J. Fischer,et al.  Sacrificing serializability to attain high availability of data in an unreliable network , 1982, PODS.

[4]  Alley Stoughton,et al.  Detection of Mutual Inconsistency in Distributed Systems , 1983, IEEE Transactions on Software Engineering.

[5]  James E. Allchin A Suite of Robust Algorithms For Maintaining Replicated Data Using Weak Consistency Conditions , 1983, Symposium on Reliability in Distributed Software and Database Systems.

[6]  Arthur J. Bernstein,et al.  Efficient solutions to the replicated log and dictionary problems , 1984, PODC '84.

[7]  Alfred Z. Spector,et al.  Weighted voting for directories : a comprehensive study , 1984 .

[8]  Mahadev Satyanarayanan,et al.  The ITC distributed file system: principles and design , 1985, SOSP 1985.

[9]  Bruce J. Walker,et al.  The LOCUS Distributed System Architecture , 1986 .

[10]  M. Herlihy A quorum-consensus replication method for abstract data types , 1986, TOCS.

[11]  Rick Floyd,et al.  Directory Reference Patterns in a UNIX Environment. , 1986 .

[12]  Steve R. Kleiman,et al.  Vnodes: An Architecture for Multiple File System Types in Sun UNIX , 1986, USENIX Summer.

[13]  Rick Floyd Short-Term File Reference Patterns in a UNIX Environment, , 1986 .

[14]  J. Howard Et El,et al.  Scale and performance in a distributed file system , 1988 .

[15]  Sunil K. Sarin,et al.  A flexible algorithm for replicated directory management , 1989, [1989] Proceedings. The 9th International Conference on Distributed Computing Systems.

[16]  Dennis M. Ritchie,et al.  A stream input-output system , 1990 .

[17]  J. Heidemann,et al.  The Ficus Distributed File System : Replication via Stackable Layers , 1990 .

[18]  Ii Richard George Guy,et al.  FICUS: a very large scale reliable distributed file system , 1992 .