Vendors of some proprietary Unix systems, such as
SunOS /
Solaris,
System V Release 4,
HP-UX, and
Tru64 UNIX, and open Unix derived systems like
illumos, have adopted UFS. As of
Solaris 7,
Sun Microsystems included UFS Logging, which brought
filesystem journaling to UFS, which is still available in current versions of Solaris and illumos. Solaris UFS also has extensions for large files and large disks and other features. In 4.4BSD and
BSD Unix systems derived from it, such as
FreeBSD,
NetBSD,
OpenBSD, and
DragonFly BSD, the implementation of UFS1 and UFS2 is split into two layers: an upper layer that provides the directory structure and supports metadata (permissions, ownership, etc.) in the inode structure, and lower layers that provide data containers implemented as inodes. This was done to support both the traditional FFS and the
LFS log-structured file system with shared code for common functions. The upper layer is called "UFS", and the lower layers are called "FFS" and "LFS". In some of those systems, the term "FFS" is used for the combination of the FFS lower layer and the UFS upper layer, and the term "LFS" is used for the combination of the LFS lower layer and the UFS upper layer. McKusick implemented block reallocation, a technique that reorders the blocks in the file system just before the writes are done to reduce fragmentation and control file system aging. 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. To overcome the remaining issues after a failure, a background fsck utility was introduced. In UFS2, McKusick and
Poul-Henning Kamp extended the FreeBSD FFS and UFS layers to add 64-bit block pointers (allowing volumes to grow up to 8
zebibytes), variable-sized blocks (similar to
extents), extended flag fields, additional 'birthtime' stamps, extended attribute support and POSIX1.e ACLs. UFS2 became the supported UFS version starting with FreeBSD 5.0. FreeBSD also introduced soft updates and the ability to make file system
snapshots for both UFS1 and UFS2. These have since been ported to NetBSD, but eventually soft updates (called soft dependencies in NetBSD) was removed from NetBSD 6.0 in favor of the less complex file system journaling mechanism called
WAPBL (also referred as logging), which was added to FFS in NetBSD 5.0. OpenBSD supported soft updates from version 2.9 until support was dropped in version 7.4, There was a 4 GB file limit for disks formatted as UFS in Mac OS X. As of
Mac OS X Lion, UFS support was completely dropped. == See also ==