{[ promptMessage ]}

Bookmark it

{[ promptMessage ]}

mazieres - USENIX Association Proceedings of the 2001...

Info iconThis preview shows pages 1–3. Sign up to view the full content.

View Full Document Right Arrow Icon
USENIX Association Proceedings of the 2001 USENIX Annual Technical Conference Boston, Massachusetts, USA June 25–30, 2001 THE ADVANCED COMPUTING SYSTEMS ASSOCIATION © 2001 by The USENIX Association All Rights Reserved For more information about the USENIX Association: Phone: 1 510 528 8649 FAX: 1 510 548 5738 Email: [email protected] WWW: http://www.usenix.org Rights to individual papers remain with the author or the author's employer. Permission is granted for noncommercial reproduction of the work for educational or research purposes. This copyright notice must be included in the reproduced paper. USENIX acknowledges all trademarks herein.
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
A toolkit for user-level file systems David Mazi`eres Department of Computer Science, NYU [email protected] Abstract This paper describes a C++ toolkit for easily extending the Unix file system. The toolkit exposes the NFS in- terface, allowing new file systems to be implemented portably at user level. A number of programs have im- plemented portable, user-level file systems. However, they have been plagued by low-performance, deadlock, restrictions on file system structure, and the need to re- boot after software errors. The toolkit makes it easy to avoid the vast majority of these problems. Moreover, the toolkit also supports user-level access to existing file sys- tems through the NFS interface—a heretofore rarely em- ployed technique. NFS gives software an asynchronous, low-level interface to the file system that can greatly ben- efit the performance, security, and scalability of certain applications. The toolkit uses a new asynchronous I/O library that makes it tractable to build large, event-driven programs that never block. 1 Introduction Many applications could reap a number of benefits from a richer, more portable file system interface than that of Unix. This paper describes a toolkit for portably ex- tending the Unix file system—both facilitating the cre- ation of new file systems and granting access to existing ones through a more powerful interface. The toolkit ex- ploits both the client and server sides of the ubiquitous Sun Network File System [15]. It lets the file system developer build a new file system by emulating an NFS server. It also lets application writers replace file system calls with networking calls, permitting lower-level ma- nipulation of files and working around such limitations as the maximum number of open files and the synchrony of many operations. We used the toolkit to build the SFS distributed file system [13], and thus refer to it as the SFS file system development toolkit. SFS is relied upon for daily use by several people, and thus shows by example that one can build production-quality NFS loopback servers. In addition, other users have picked up the toolkit and built functioning Unix file systems in a matter of a week. We have even used the toolkit for class projects, allowing students to build real, functioning Unix file systems.
Background image of page 2
Image of page 3
This is the end of the preview. Sign up to access the rest of the document.

{[ snackBarMessage ]}