The UFS Filesystem
This section explores the UFS filesystem, formerly known as the Berkeley Fast File System (FFS), from its roots in BSD through to today's implementation and the enhancements that have been added to the Sun Solaris UFS implementation.
UFS has been one of the most studied of the UNIX filesystems, is well understood, and has been ported to nearly every flavor of UNIX. First described in the 1984 Usenix paper “A Fast Filesystem for UNIX” [MCKU84], the decisions taken for the design of UFS have also found their way into other filesystems, including ext2 and ext3, which are described later in the chapter.
Early UFS History
In [MCKU84], the problems inherent with the original 512-byte filesystem are described. The primary motivation for change was due to poor performance experienced by applications that were starting to be developed for UNIX. The old filesystem was unable to provide high enough throughput due partly to the fact that all data was written in 512-byte blocks, which were abitrarily placed throughout the disk. Other factors that resulted in less than ideal performance were:
- Because of the small block size, anything other than small files resulted in the file going into indirects fairly quickly. Thus, more I/O was needed to access file data.
- File meta-data (inodes) and the file data were physically separate on disk and therefore could result in significant seek times. For example, [LEFF89] described how a traditional 150MB filesystem had 4MB of inodes followed ...