next up previous
Next: 7. Conclusions Up: A Stackable File System Previous: 5. Performance


6. Related Work

6.1 Other Stackable File Systems

Vnode stacking was first implemented by Rosenthal (in SunOS 4.1) around 1990[15]. A few other works followed Rosenthal, such as further prototypes for extensible file systems in SunOS[18], and the Ficus layered file system[6,9] at UCLA.

Several newer operating systems offer a stackable file system interface. Such operating systems have the potential of easy development of file systems offering a wider range of services. Their main disadvantages are that they are not portable enough, not sufficiently developed or stable, or they are not available for common use. Also, new operating systems with new file system interfaces are not likely to perform as well as ones that are several years older.

The Herd of Unix-Replacing Daemons (HURD) from the Free Software Foundation (FSF) is a set of servers, running on the Mach 3.0 microkernel[1], that collectively provide a Unix-like environment. HURD file systems are implemented at the user level. The HURD introduced the concept of a translator. A translator is a program that can be attached to a pathname and perform specialized services when that pathname is accessed. Writing a new translator is a matter of implementing a well defined file access interface and filling in such operations as opening files, looking up file names, creating directories, etc.

Spring is an object-oriented research operating system built by Sun Microsystems Laboratories[12]. It was designed as a set of cooperating servers on top of a microkernel. Spring provides several generic modules that offer services useful to a file system: caching, coherency, I/O, memory mapping, object naming, and security. Writing a file system for Spring entails defining the operations to be applied on the file objects. Operations not defined are inherited from their parent object.

One work that has resulted from Spring is the Solaris MC (Multi-Computer) File System[10]. It borrows the object-oriented interfaces from Spring and integrates them with the existing Solaris vnode interface to provide a distributed file system infrastructure through a special file system called pxfs, the Proxy File System. Solaris MC provides all of the benefits that come with Spring, while requiring little or no change to existing file systems; those can be gradually ported over time. Solaris MC was designed to perform well in a closely coupled cluster environment (not a general network) and requires high performance networks and nodes.

6.2 Other News File Systems

The Cyclic News File System (CNFS)[5] stores articles in a few large files or in a raw block device, recycling their storage when reaching the end of the buffer. CNFS avoids most of the overhead of traditional FFS-like[11] file systems, because it reduces the need for many synchronous meta-data updates. CNFS reports an order of magnitude reduction in disk activity. CNFS is part of the INN 2.x Usenet server news software. In the long run, CNFS offers a superior solution to the performance problems of news servers than Usenetfs. Migrating from traditional news spools and software to ones using CNFS, however, is a time consuming process. Furthermore, since CNFS no longer uses traditional file systems, it is not possible to NFS-export the news spool to other hosts; non-NNTP compliant news readers cannot work with CNFS, but they can with Usenetfs.

Reiserfs4 is a file system available only for Linux that uses balanced trees to optimize performance and space utilization for files of any size and file names. Being a native disk-based file system, and using complex algorithms, Reiserfs improves performance significantly, but it is hard to develop and debug.

6.3 Other Encryption File Systems

CFS[3] is a portable user-level cryptographic file system based on NFS. It is used to encrypt any local or remote directory on a system, accessible via a different mount point and a user-attached directory. Users first create a secure directory and choose the encryption algorithm and key to use. A wide choice of ciphers is available and great care was taken to ensure a high degree of security. CFS's performance is limited by the number of context switches that must be performed and the encryption algorithm used.

TCFS[4] is a modified client-side NFS kernel module that communicates with a remote NFS server. TCFS is available only for Linux systems, and both client and server must run on Linux. TCFS allows finer grained control over encryption; individual files or directories can be encrypted by turning on or off a special flag.

next up previous
Next: 7. Conclusions Up: A Stackable File System Previous: 5. Performance
Erez Zadok