A Fast File System for UNIXA Fast File System for UNIXMcKusick, Marshall K. and Joy, William N. and Leffler, Samuel J. and Fabry, Robert S.1984
Paper summarymwhittakerThe Fast Filesystem (FFS) improved the read and write throughput of the original Unix file system by 10x by
1. increasing the block size,
2. dividing blocks into fragments, and
3. performing smarter allocation.
The original Unix file system, dubbed "the old file system", divided disk drives into partitions and loaded a file system on to each partition. The filesystem included a superblock containing metadata, a linked list of free data blocks known as the free list, and an inode for every file. Notably, the file system was composed of 512 byte blocks; no more than 512 bytes could be transfered from the disk at once. Moreover, the file system had poor data locality. Files were often sprayed across the disk requiring lots of random disk accesses.
The "new file system" improved performance by increasing the block size to any power of two at least as big as 4096 bytes. In order to handle small files efficiently and avoid high internal fragmentation and wasted space, blocks were further divided into fragments at least as large as the disk sector size.