Fast Indexing: Support for Size-Changing Algorithms in Stackable File Systems

Stackable file systems can provide extensible file system functionality with minimal performance overhead and development cost. However, previous approaches provide only limited functionality. In particular, they do not support size-changing algorithms (SCAs), which are important and useful for many applications such as compression and encryption. We propose fast indexing, a technique for efficient support of SCAs in stackable file systems. Fast indexing provides a page mapping between file system layers in a way that can be used with any SCA. We use index files to store this mapping. Index files are designed to be recoverable if lost and add less than 0.1% disk space overhead. We have implemented fast indexing using portable stackable templates, and we have used this system to build several example file systems with SCAs. We demonstrate that fast index files have low overhead for typical user workloads such as large compilations, only 2.3% over other stacked file systems and 4.7%over non-stackable file systems. Our system can deliver better performance with SCAs than userlevel applications, as much as five times faster.

[1]  John S. Heidemann,et al.  File-system development with stackable layers , 1994, TOCS.

[2]  Michael N. Nelson,et al.  An overview of the Spring system , 1994, Proceedings of COMPCON '94.

[3]  Erez Zadok,et al.  Extending File Systems Using Stackable Templates , 1999, USENIX Annual Technical Conference, General Track.

[4]  Erez Zadok A Stackable File System Interface For Linux , 1999 .

[5]  G. C. Wong,et al.  "Stacking/" Vnodes: A Progress Report , 1993, USENIX Summer.

[6]  Thomas E. Anderson,et al.  A Comparison of File System Workloads , 2000, USENIX Annual Technical Conference, General Track.

[7]  Erez Zadok,et al.  FIST: a language for stackable file systems , 2000, OPSR.

[8]  John S. Heidemann,et al.  Implementation of the Ficus Replicated File System , 1990, USENIX Summer.

[9]  Thomas R. Gross,et al.  Combining the concepts of compression and caching for a two-level filesystem , 1991, ASPLOS IV.

[10]  Ken Thompson,et al.  Plan 9 from Bell Labs , 1995 .

[11]  Erez Zadok,et al.  Cryptfs: A Stackable Vnode Level Encryption File System , 1998 .

[12]  Michael N. Nelson,et al.  Extensible file systems in spring , 1994, SOSP '93.

[13]  J. Heidemann,et al.  A Layered Approach to File System Development , 1991 .

[14]  John S. Heidemann,et al.  Performance of cache coherence in stackable filing , 1995, SOSP.

[15]  David S. H. Rosenthal,et al.  Evolving the Vnode interface , 1990, USENIX Summer.

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

[17]  Erez Zadok,et al.  Fist: a system for stackable file-system code generation , 2001 .

[18]  Butler W. Lampson,et al.  On-line data compression in a log-structured file system , 1992, ASPLOS V.

[19]  Mahadev Satyanarayanan,et al.  Long Term Distributed File Reference Tracing: Implementation and Experience , 1996, Softw. Pract. Exp..