This thesis presents the design of a serverless network file system, a file system that distributes its functionality among cooperating, networked machines to eliminate the central file server bottleneck found in current network file systems.

In a serverless system, any machine can cache, store, or control any block of data. This location independence provides better performance and scalability than traditional file system architectures. Further, because any machine in the system can assume the responsibilities of a failed component, the serverless design can also provide higher availability.

This dissertation details the design of three serverless subsystems, each of which distributes a specific piece of functionality that a traditional system would implement as part of a central server. I describe and evaluate cooperative caching, a way to coordinate client caches to replace the central server's cache. I evaluate different distributed disk storage architectures and present several improvements on previous log-structured, redundant storage systems. Finally, I present the design of a distributed management architecture that splits the control of the file system among managers while maintaining a seamless single system image.

Together, these pieces form a serverless file system that eliminates central bottlenecks. I describe the integration of these components in the context of xFS, a prototype serverless file system implementation. Initial performance measurements illustrate the promise of the serverless approach for providing scalable file systems.




Download Full History