Versatility and Unix semantics in namespace unification

Administrators often prefer to keep related sets of files in different locations or media, as it is easier to maintain them separately. Users, however, prefer to see all files in one location for convenience. One solution that accommodates both needs is virtual namespace unification---providing a merged view of several directories without physically merging them. For example, namespace unification can merge the contents of several CD-ROM images without unpacking them, merge binary directories from different packages, merge views from several file servers, and more. Namespace unification can also enable snapshotting by marking some data sources read-only and then utilizing copy-on-write for the read-only sources. For example, an OS image may be contained on a read-only CD-ROM image---and the user's configuration, data, and programs could be stored in a separate read-write directory. With copy-on-write unification, the user need not be concerned about the two disparate file systems.It is difficult to maintain Unix semantics while offering a versatile namespace unification system. Past efforts to provide such unification often compromised on the set of features provided or Unix compatibility---resulting in an incomplete solution that users could not use.We designed and implemented a versatile namespace unification system called Unionfs. Unionfs maintains Unix semantics while offering advanced namespace unification features: dynamic insertion and removal of namespaces at any point in the merged view, mixing read-only and read-write components, efficient in-kernel duplicate elimination, NFS interoperability, and more. Since releasing our Linux implementation, it has been used by thousands of users and over a dozen Linux distributions, which helped us discover and solve many practical problems.

[1]  Nikolai Joukov,et al.  FSprof : An In-Kernel File System Operations Profiler , 2004 .

[2]  Erez Zadok,et al.  USENIX Association Proceedings of the FREENIX Track : 2003 , 2002 .

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

[4]  Robert N. M. Watson,et al.  Jails: confining the omnipotent root , 2000 .

[5]  ZadokErez,et al.  Versatility and Unix semantics in namespace unification , 2006 .

[6]  Marshall K. McKusick,et al.  Union Mounts in 4.4BSD-Lite , 1995, USENIX.

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

[8]  James Lau,et al.  File System Design for an NFS File Server Appliance , 1994, USENIX Winter.

[9]  David G. Korn,et al.  A new dimension for the Unix® file system , 1990, Softw. Pract. Exp..

[10]  Erez Zadok,et al.  Proceedings of the General Track: 2003 Usenix Annual Technical Conference Ncryptfs: a Secure and Convenient Cryptographic File System , 2022 .

[11]  Randal C. Burns,et al.  Ext3cow: a time-shifting file system for regulatory compliance , 2005, TOS.

[12]  Vita Nuova Holdings Plan 9 : programmer's manual , 2000 .

[13]  Angelos Bilas,et al.  Clotho: Transparent Data Versioning at the Block I/O Level , 2004, MSST.

[14]  Gregory R. Ganger,et al.  Soft Updates: A Technique for Eliminating Most Synchronous Writes in the Fast Filesystem , 1999, USENIX Annual Technical Conference, FREENIX Track.

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

[16]  Timothy Fraser,et al.  Hardening COTS software with generic software wrappers , 1999, Proceedings of the 1999 IEEE Symposium on Security and Privacy (Cat. No.99CB36344).

[17]  David Hendricks,et al.  A Filesystem for Software Development , 1990, USENIX Summer.

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

[19]  Margo I. Seltzer,et al.  NFS Tricks and Benchmarking Traps , 2003, USENIX Annual Technical Conference, FREENIX Track.

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