Userland filesystems (also known as virtual/installable filesystems) represent a promising direction for interfacing the traditional filesystem concept to specific domain instances (e.g. finance, bioinformatics, astronomy, photo sharing services, etc.) One might initially be inclined to think of filesystems as “old school” or “so 1980s” but their use remains an established practice in computational science and in many business domains, owing to the stability of filesystems interfaces and the continued perception of having great overall performance. While the promise of building one’s own userland filesystems is great, the approach has seen little adoption, owing to the complexity of working with low-level interfaces such as FUSE (Filesystems in User Space), which essentially require a complete mastery of Posix to build even the simplest filesystem.
In this talk, I will present work being done by the Pervasive Computing Group (with Joe Kaylor and Konstantin Läufer) at Loyola University Chicago on object-oriented frameworks to support the rapid creation and deployment of domain-specific userland filesystems. The focus will be on the Naked Objects Filesystem (NOFS), which supports the wiring of object oriented domain models to FUSE filesystems. (For details about the Naked Objects pattern, see Pawson’s Ph.D. thesis.) NOFS greatly simplifies the task of filesystems development by providing the glue code needed between a domain model and the filesystem contract. I’ll describe enhancements to the NOFS framework to support domain models that are larger than physical memory and demonstrate how the concerns of caching can be removed from user-mode filesystem implementations and placed into the NOFS framework. We illustrate how these new capabilities further simplify the development of user-mode filesystems. NOFS can be downloaded from http://code.google.com/p/nofs/.
George K. Thiruvathukal, Joseph P. Kaylor, and Konstantin Läufer, An Object-Oriented Framework for Userland Filesystem Development, IIT DataSys Seminar, 2012.
Creative Commons License
This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License.