siegel@hermod.cs.cornell.edu (Alexander Siegel) (01/16/90)
As Ken Birman mentioned, I am writing a distributed file system that supports replication using ISIS. It is called the Deceit File System. A working version exists, but development continues at high speed. I would hesitate before giving a version away because I do not have time to support it right now, but a technical report is available. It employs the Sun NFS communication protocol and is compatable with any normal NFS client. Yellow pages and Deceit share many problems, and a large part of Deceit can be used in a yellow pages server. Deceit is logically divided into two parts. The first part is the "segment server." It provides a model of data segments which can be read, updated, created, and deleted. The segment server supports replication and caching automatically. The second component is called the "UNIX file system interface." It mediates between the segment server and the NFS protocol. Refer to the diagram below: client client client | | | | | | NFS protocol | | | UNIX file interface UNIX interface UNIX interface | | | | | | C procedure call | | | server server-----------segment server------------segment server | | | | | | kernel call | | | disk disk disk The UNIX interface is unaware of replication or caching. It simply converts complex file operations into simple operations on segments. By replacing the UNIX file interface with a yellow pages interface, a highly available yellow pages server can be realized. The segment server employs a very flexible type of replication. Each segment can be individually tuned in several different ways including the degree of replication. A supplimentary interface would be necessary to control these parameters. A detailed description of exactly what the segment server can do is provided in the tech report. A limitation of this approach is the simplicity of the segment server interface. The interface only supports reading and writing of continguous data. The segment server can also maintain a memory cache which is directly available to the higher layers. In order to do a query, the entire segment/data file would have to be loaded into a local cache and then scanned. Any operation would require an initial whole file transfer if the data was not locally available. For very large data bases, there may not be enough local memory for this to work. Alex Siegel - CS graduate drudge at Cornell a.k.a. Scimitar; a.k.a. Phineas Ginn (SCA); a.k.a. Trash siegel@cs.cornell.edu (607)255-1165