Home > Articles > Operating Systems, Server > Solaris

The Solaris UFS File System

  • Print
  • + Share This
The UFS file system is the general-purpose, disk-based file system that is shipped with Solaris today and has been the default file system since early versions of SunOS 4.x. This sample chapter covers its history, architecture, and some basic administrative concepts.
This chapter is from the book Updated by Frank Batschulat, Shawn Debnath, Sarah Jelinek, Dworkin Muller, and Karen Rochford

The UFS file system is the general-purpose, disk-based file system that is shipped with Solaris today and has been the default file system since early versions of SunOS 4.x. For over 20 years, UFS has undergone extensive changes to keep pace with the performance, security, and reliability requirements of today's modern enterprise applications.

15.1 UFS Development History

The original version of UFS is derived from the Berkeley Fast File System (FFS) work from BSD UNIX, architected by Marshall Kirk McKusick and Bill Joy in the mid 1980s. The Berkeley FFS was the second major file system available for UNIX and was a leap forward from the original System V file system. The System V file system was lightweight and simple but had significant shortcomings: poor performance, unreliability, and lack of functionality.

During the development of Sun OS 2.0, a file-system-independent interface was introduced to support concurrent, different file systems within an operating system instance. This interface, today known as the vnode/vfs interface, is the mechanism that all file systems use to interface with the file-related system calls. (The vnode/vfs architecture is discussed further in Section 14.6.) UFS was modified so that it could be used within this new vnode/vfs framework and since has been the focus of much of the file system development effort in Solaris.

A second major overhaul for UFS came about at the time of SunOS 4.0, when the virtual memory (VM) system was redeveloped to use the vnode as the core of virtual memory operations. The new VM system implemented the concept of virtual file caching—a departure from the traditional physical file cache (known as the "buffer cache" in previous versions of UNIX). The old buffer cache was layered under the file systems and was responsible for caching physical blocks from the file system to the storage device. The new model is layered above the file systems and allows the VM system to act as a cache for files rather than blocks. The new system caches page-sized pieces of files, whereby the file and a particular offset are cached as pages of memory. From this point forward, the buffer cache was used only for file system metadata, and the VM system implemented the file system caching. The introduction of the virtual file caching affected file systems in many ways and required significant changes to the vnode interface. At that point, UFS was substantially modified to support the new vnode and VM interfaces.

The third major change to UFS came about in Solaris 2.4 in the year 1994 with the introduction of file system metadata logging in an effort to provide better reliability and faster reboot times after a system crash or outage. The first versions of logging were introduced with the unbundled Online: DiskSuite 3.0 software package, the precursor to Solstice DiskSuite (SDS) product and the Solaris Volume Manager (SVM) as it is known today. Solaris 7 saw the integration of logging into UFS, and after six years of development, Solaris 10 shipped with logging turned on by default. Table 15.1 summarizes the major UFS development milestones.

Table 15.1. UNIX File System Evolution

1984

SunOS 1.0

FFS from 4.2 BSD.

1985

SunOS 2.0

UFS rearchitected to support vnodes/vfs.

1988

SunOS 4.0

UFS integrated with new VM virtual file cache.

1991

SunOS 4.1

I/O clustering added to allow extentlike performance.

1992

SunOS 4.1

1TB file system and ability to grow UFS file systems with Online: Disk Suite 1.0.

1992

Solaris 2.0

1TB file system support included in base Solaris.

1994

Solaris 2.4

Metadata logging option with Online: DiskSuite 3.0.

1995

Solaris 2.5

Access Control Lists.

1995

Solaris 2.6

Large file support allows 1TB files. Direct I/O uncached access added.

1998

Solaris 7

Metadata logging integrated into base Solaris UFS.

2002

Solaris 9

File System Snapshots Extended Attributes

2003

Solaris 9 Update 4

Multi-terabyte UFS support was added.

2004

Solaris 10 and Solaris 9 Update 7

Logging on by default in UFS.

  • + Share This
  • 🔖 Save To Your Account