CAPFS - A Content Addressable Parallel File System


The ever-increasing gap in performance between CPU/memory technologies and the I/O subsystem (disks, I/O buses) in modern workstations has exacerbated the I/O bottlenecks inherent in applications that access large disk resident data sets. A common technique to alleviate the I/O bottlenecks on clusters of workstations, is the use of parallel file systems due to the increased I/O bandwidth made possible by accessing large number of disks in parallel. Designing a fault-tolerant parallel file system that provides consistency in the face of multiple writers and readers is increasingly becoming more important as clusters scale. Traditional techniques to provide file system consistency for both meta-data and data use variants of locking techniques that fall short if fault tolerance is a design requirement. We propose a simpler and a more robust lockless technique atop a content-addressable storage layer, that can be used for performing atomic updates and can hence provide sequential consistency semantics in a parallel file system, when the underlying network is fully connected.

Completed Features

  • A functional, usable parallel file system interface for a Linux 2.4 kernel.
  • Client-side hcache (hash-cache) that can reduce meta-data traffic by caching crypto-hashes of a file
  • Abstraction and separation of client-side consistency plugins, and simple policy implementation
  • NEW! A fairly functional file system interface for the Linux 2.6 kernel!!
  • Partially completed Features/Works-in-progress

  • Distributed file system cleaner.
  • Client-side write-back data-cache to reduce burden on CAS servers
  • Snapshots

    Source Tarball
    The code below provides a fairly functional, usable content-addressable parallel file system, but there may/will be bugs that we have not handled just yet. We will continue updating the link to provide recent snapshots as and when we release them. Instructions to compile, and setup the file-system are provided as part of the source tarball. Please use at your own discretion. We have tested out this code on a glibc-2.2.5 based Mandrake Linux 9.0 distribution running a 2.4.19 kernel, a glibc 2.3.2 based Redhat 9 distribution running a 2.4.20 smp kernel and on a glibc 2.3.3 based Fedora Core 2 distribution running a 2.6.10+ kernel. The code should compile on most other distributions, but your milage may vary. The only requirement is that the system have a fairly new compiler (gcc-3.0+), a posix-threads library and openssl(0.9.6j+). If there are any specific issues, please feel free to report. As they say, if the code breaks your system, you get to keep the pieces :).
    tar/gzip snapshot [v0.9] as of 09/04/2005.

    Paper
    The following paper (pdf) outlines some of the features, design and functionalities in CAPFS.

    People

    Developers

    Murali Vilayannur
    Partho Nath
    Jason Ganetsky

    Collaborators

    Anand Sivasubramaniam
    Robert Ross
    Rajeev Thakur

    Questions/Comments


    Last updated on: Sep. 4th, 2005