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
- Rosenblum, Mendel and Ousterhout, John K. (June 1990). "The LFS Storage Manager (http://www.hhhh.org/perseant/lfs/lfs-storage.ps.gz)." Proceedings of the 1990 Summer Usenix. 315-324.
- Rosenblum, Mendel and Ousterhout, John K. (February 1992). "The Design and Implementation of a Log-Structured Filesystem (http://www.hhhh.org/perseant/lfs/lfsSOSP91.ps.gz)." ACM Transactions on Computer Systems. 10(1). 26-52.