Mechanisms for Small File I/O

Our file system research has focused mainly upon two crucial aspects of small file I/O performance: metadata integrity maintenance and on-disk data placement.

Structural changes, such as file creation and block allocation, have consistently been identified as a source of problems (performance, integrity, security and availability) for file systems. To address this, we developed soft updates, an implementation mechanism that allows a file system to safely use delayed writes for metadata updates. With soft updates, a disk-based file system can achieve memory-based file system performance while providing stronger integrity and security guarantees than most disk-based file systems. For metadata update intensive workloads, this improves performance by more than a factor of two when compared to the conventional synchronous write approach. In addition, soft updates can be used to achieve nearly instantaneous file system recovery by relegating crash-recovery assistance (e.g., the fsck utility) to an optional and/or background role.

Small file performance in most file systems is limited by slowly improving disk access times, even though current file systems improve on-disk locality by allocating related data objects in the same general region. The key insight for why current file systems perform poorly is that nearness is insufficient - exploiting disk bandwidth for small data objects requires that they be placed adjacently. We designed C-FFS (Co-locating Fast File System), which introduces two techniques, embedded inodes and explicit grouping, to exploit what disks do well (bulk data movement) in order to avoid what they do poorly (reposition to new locations). Measurements of our first prototype C-FFS implementation show that these techniques have the potential to increase small file throughput (for both reads and writes) by a factor of 5-7 compared to the same file system without these techniques.

Status

Soft Updates was introduced and compared to other mechanisms for maintaining metadata integrity in a 1994 OSDI paper. Late in the summer of 1995, we released a technical report that includes low-level details and non-proprietary portions of our prototype implementation of soft updates. Kirk McKusick has developed and is fine-tuning a production quality version of soft updates for BSD FFS. In July 1999, Kirk and I described this BSD soft updates implementation in a FREENIX track USENIX paper (also available in postscript). Together with researchers at Harvard University, we are now conducting comprehensive comparisons of soft updates with write-ahead logging.

C-FFS was introduced in a 1997 USENIX paper. Our first prototype, described in that paper, became the default file system for the exokernel operating system described in our 1997 SOSP paper. Costa Sapuntzakis is implementing a new version of C-FFS for OpenBSD, and we are exploring new grouping/allocation algorithms.