Log-structured file system: Difference between revisions

Content deleted Content added
m Reverted edits by 172.56.9.240 (talk) (HG) (3.1.14)
Split out long list to a separate article List of log-structured file systems
Line 17:
 
To reduce the overhead incurred by this [[garbage collection (computer science)|garbage collection]], most implementations avoid purely circular logs and divide up their storage into segments. The head of the log simply advances into non-adjacent segments which are already free. If space is needed, the least-full segments are reclaimed first. This decreases the I/O load of the garbage collector, but becomes increasingly ineffective as the file system fills up and nears capacity.
 
== Implementations ==
 
* [[John K. Ousterhout]] and [[Mendel Rosenblum]] implemented the first log-structured file system for the [[Sprite operating system]] in 1992.<ref name="rosenblum90">Rosenblum, Mendel and Ousterhout, John K. (June 1990) - "[http://citeseer.ist.psu.edu/rosenblum90lfs.html The LFS Storage Manager]". ''Proceedings of the 1990 Summer Usenix''. pp315-324.</ref><ref name="rosenblum92">Rosenblum, Mendel and Ousterhout, John K. (February 1992) - "[http://citeseer.ist.psu.edu/rosenblum91design.html The Design and Implementation of a Log-Structured File System]". ''ACM Transactions on Computer Systems, Vol. 10 Issue 1''. pp26-52.</ref>
* [[Log-structured File System (BSD)|BSD-LFS]], an implementation by [[Margo Seltzer]] was added to 4.4BSD, and was later ported to [[386BSD]]. It lacked support for snapshots. It was removed from FreeBSD and OpenBSD, but still lives on in [[NetBSD]].
* [[Plan 9 from Bell Labs|Plan 9]]'s [[Fossil (file system)|Fossil]] file system is also log-structured and supports snapshots.
* [[NILFS]] is a log-structured file system implementation for [[Linux]] by [[NTT/Verio]] which supports snapshots.
* [[LinLogFS]] (formerly dtfs) and LFS ([http://logfs.sourceforge.net/ http://logfs.sourceforge.net/]) are log-structured file system implementations for Linux. The latter was part of [[Google Summer of Code|Google Summer of Code 2005]]. Both projects have been abandoned.
* [http://aiya.ms.mff.cuni.cz/lfs LFS] is another log-structured file system for Linux developed by Charles University, Prague. It was to include support for snapshots and indexed directories, but development has since ceased.
* [[ULFS]] is a User-Level Log-structured File System (http://ulfs.sf.net) using FUSE (http://fuse.sf.net).
* [[Write Anywhere File Layout]] (WAFL) by [[NetApp]] is a file layout that supports large, high-performance RAID arrays, quick restarts without lengthy consistency checks in the event of a crash or power failure, and growing the filesystems size quickly. Built using log-structured file system concept, snapshots and off-line [[data deduplication]] (http://community.netapp.com/fukiw75442/attachments/fukiw75442/data-ontap-discussions/2334/1/WAFL.pdf).
* [[LSFS]] is a log-structured file system with writable snapshots and inline [[data deduplication]] created by [[StarWind Software]] (https://www.starwindsoftware.com/vm-centric-storage-lsfs).
* [[Cache Accelerated Sequential Layout|CASL]] is a proprietary log-structured filesystem that uses Solid State Devices to cache traditional hard drives (http://www.nimblestorage.com/products/architecture/).
* [[ObjectiveFS]] is a log-structured FUSE filesystem that uses cloud object stores (e.g. Amazon S3, Google Cloud Storage and private cloud object store). (https://www.objectivefs.com)
 
Some kinds of storage media, such as [[flash memory]] and [[CD-RW]], slowly degrade as they are written to and have a limited number of erase/write cycles at any one ___location. Log-structured file systems are sometimes used on these media because they make fewer in-place writes and thus prolong the life of the device by [[wear leveling]]. The more common such file systems include:
 
* [[Universal Disk Format|UDF]] is a file system commonly used on [[optical disc]]s.
* [[JFFS]] and its successor [[JFFS2]] are simple [[Linux]] file systems intended for raw flash-based devices.
* [[UBIFS]] is a filesystem for raw [[NAND flash|NAND flash media]] and also intended to replace [[JFFS2]].
* [[LogFS]] is a scalable flash filesystem for [[Linux]] that works on both raw flash media and block devices, intended to replace [[JFFS2]].
* [[YAFFS]] is a raw NAND flash-specific file system for many operating systems (including Linux).
* [[F2FS]] is a new file system designed for the NAND flash memory-based storage devices on Linux.
 
== Disadvantages ==
Line 48 ⟶ 25:
 
== See also ==
* [[List of log-structured file systems]]
* [[Comparison of file systems]]