Log-structured file system

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 by 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. A version by Margo Seltzer was added later to 4.4BSD, and thence was ported to NetBSD. See Log-structured File System for a descripton of the NetBSD implementation.

References

Navigation

<MenuNavigation7>

Toolbox
Personal tools