Future file system applications - such as multimedia servers, internet and intranet web servers, cluster file servers, and enterprise-wide file servers - strain file system designs in at least three dimensions. First, these applications support heterogeneous data types including small text files, real-time video streams, and large data sets for parallel computation, and these applications reside in heterogeneous environments including wide area networks, local area networks, and high-performance clusters. Second, many of these applications push past the limits of reliability supported by current file systems. For example, a web server must support a global client population and therefore must be available 24 hours a day, 7 days a week. Third, these applications demand significant hardware resources, so file systems that support them must be scalable.
We contend that the proper strategy towards supporting the demanding applications of the future is not to build a monolithic file system that supports all applications in all environments. Building a scalable, reliable file system for even a single application class is extremely difficult; building a single, monolitic system for the range future applications is nearly hopeless. Instead, we must develop a modular framework that identifies the fundamental subcomponents of a file system and that allows system builders to combine different implementations of these subcomponents according to the demands of their applications and environments.
The uFS (Micro-FS) project seeks to develop such a framework. We will first partition the traditional, monolitic file system architecture into its fundamental subcomponents, identify the core functionality of each subcomponent, and specify the protocol for assembling the complete system from these pieces. We will then develop prototype implementations of several of these pieces and examine their behaviour in a range of applications and environments.
This project will impact science and engineering infractruction on three fronts. First, it will facilitate the development of next-generation file systems. Second, by providing a common internal file system architecture, it may simplify the introduction of research advances in file system design into traditional commercial file systems. Third, by decomposing the file system into well-defined modules, it will make it practical for graduate students to tackle significant file systems research projects in a focused environment.