This worked well for the small disks early Unixes were designed for, but as technology advanced and disks grew larger, moving the head back and forth between the clump of inodes and the data blocks they referred to caused thrashing.
Marshall Kirk McKusick, then a Berkeley graduate student, optimized the V7 FS layout to create BSD 4.2's FFS (Fast File System) by inventing cylinder groups, which break the disk up into smaller chunks, with each group having its own inodes and data blocks.
[2][3] The intent of BSD FFS is to try to localize associated data blocks and metadata in the same cylinder group and, ideally, all of the contents of a directory (both data and metadata for all the files) in the same or nearby cylinder group, thus reducing fragmentation caused by scattering a directory's contents over a whole disk.
[4] The work on Berkeley FFS was widely adopted by other Unix vendors, and the family of filesystems derived from it are collectively known as UFS.
Most of them adapted UFS to their own uses, adding proprietary extensions that may not be recognized by other vendors' versions of Unix.
This was done to support both the traditional FFS and the LFS log-structured file system with shared code for common functions.
He also implemented soft updates, a mechanism that maintains the file system consistency without limiting the performance in the way the traditional sync mode did.
This has the side effect of reducing the requirement of file system checking after a crash or power failure.
FreeBSD also introduced soft updates and the ability to make file system snapshots for both UFS1 and UFS2.
FreeBSD 9.0 adds support for lightweight journaling on top of soft updates (SU+J), which greatly reduces the need for background fsck, and NFSv4 ACLs.
FreeBSD, NetBSD, OpenBSD, and DragonFly BSD also include the Dirhash system, developed by Ian Dowse.
The native Linux ext2 filesystem was inspired by UFS1 but does not support fragments and there are no plans to implement soft updates.