A Fast File System for UNIX

M. K. McKusick, W. N. Joy, S. J. Leffler, and R. S. Fabry, ACM Transactions on Computer Systems 1984

Summary

This paper presents a fast file system for UNIX that provides substantially higher throughput rates by using more flexible allocation policies that allow better locality of reference and can be adapted to a wide range of peripheral and processor characteristics. Long-needed enhancements to the programmers’ interface is also introduced.

Motivations

The original UNIX file system is incapable of providing the data throughput rates that many applications require on new machines like VAX-11. It provides only about 2 percent of the maximum disk bandwidth of VAX-11.

Since the UNIX file system interface is well understood and not inherently slow, it is desired to retain the abstraction and simply changed the underlying implementation for higher throughput.

Contributions

This paper presents a new file system organization that provides substantially higher throughput rates by using more flexible allocation policies that allow better locality of reference and can be adapted to a wide range of peripheral and processor characteristics. In addition, long-needed enhancements to the programmers’ interface is also introduced. Compatibility to the old programmers’ interface is retained.

New File System Organization

Functional Enhancement

  1. Long file names
  2. File locking (advisory locks)
  3. Symbolic links: A symbolic link is implemented as a file that contains a pathname. It allows references across physical file systems and intermachine linkage.
  4. New system call for Rename
  5. Disk quotas

Evaluation

Empirical studies on the long term performance of the new file system is presented. It is shown that file access rates of up to ten times faster than the traditional UNIX file system are experienced. However, as is shown in Table II, much higher CPU utilization is observed when using the new FFS, this might be a problem.

Takeaways

I like the concept of cylinder groups, it is a nice abstraction of the underlying hardware that eases the development of data layout policies. Similarly is the parameterization of file system. This is increasingly important to deal with emerging heterogeneous storage devices today.