Log-structured file system

This is an old revision of this page, as edited by Ghakko (talk | contribs) at 13:36, 12 July 2005 (Minor grammatical fixes.). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

A log-structured filesystem is a file system design first proposed by John K. Ousterhout and Fred Douglis.

Conventional filesystems tend to lay out files on disk with great care for spatial locality and make in-place changes to data structures on disk in order to minimize read seeks on magnetic media. The design of a log-structured filesystems is based on the hypothesis that this would no longer be effective as ever-increasing memory sizes on modern computers would lead to disk I/O becoming write-heavy because disk reads would be almost always satisfied from memory cache.

To maximize write throughput, a log-structured file system treats the disk as a circular log and writes sequentially to the head of the log. This has the side effect of creating multiple, chronologically-advancing versions of both file data and meta-data. Thus, a log-structured file system is a journaling filesystem in that the entire file system is a journal.

Such filesystems:

  • May allow access to old versions of files, a feature sometimes called time-travel or snapshotting.
  • Recover quickly after crashes because no consistency checks are needed. Instead, the file system simply rolls forward from the last consistent point in the log.
  • Tend to have good write performance.

John K. Ousterhout and Mendel Rosenbaum implemented the first log-structured file system for the Sprite operating system in 1992. An implementation by Margo Seltzer, the Log-structured File System, was added later to 4.4BSD, and thence was ported to NetBSD.

References