USENIX Technical Program - Abstract - USENIX 99
Soft Updates: A Technique for Eliminating Most Synchronous Writes in the Fast
Filesystem
Marshall Kirk McKusick, Author and Consultant; Gregory R. Ganger, Carnegie
Mellon University
Abstract
Traditionally, filesystem consistency has been maintained across system failures either by using
synchronous writes to sequence dependent metadata updates or by using write-ahead logging to
atomically group them. Soft updates, an alternative to these approaches, is an implementation
mechanism that tracks and enforces metadata update dependencies to ensure that the disk image
is always kept consistent. The use of soft updates obviates the need for a separate log or for most
synchronous writes. Indeed, the ability of soft updates to aggregate many operations previously
done individually and synchronously reduces the number of disk writes by 40 to 70% for file-intensive
environments (e.g., program development, mail servers, etc.). In addition to performance
enhancement, soft updates can also maintain better disk consistency. By ensuring that the
only inconsistencies are unclaimed blocks or inodes, soft updates can eliminate the need to run a
filesystem check program after every system crash. Instead, the system is brought up immediately.
When it is convenient, a background task can be run on the active filesystem to reclaim
any lost blocks and inodes.
This paper describes an implementation of soft updates and its incorporation into the 4.4BSD
fast filesystem. It details the changes that were needed, both to the original research prototype
and to the BSD system, to create a production-quality system. It also discusses the experiences,
difficulties, and lessons learned in moving soft updates from research to reality; as is often the
case, non-focal operations (e.g., fsck and "fsync") required rethinking and additional code.
Experiences with the resulting system validate the earlier research: soft updates integrates well
with existing filesystems and enforces metadata dependencies with performance that is within a
few percent of optimal.
|