NILFS2: A Slow But Dependable Linux File-System
Last week when benchmarking the new F2FS file-system from Samsung that was introduced in the Linux 3.8 kernel its performance was compared to Btrfs, EXT3, EXT4, XFS, JFS, and ReiserFS. For those hoping to see file-system performance results of NILFS2, those results are available today.
NILFS2 (v2 of the New Implementation of a Log-structured File-System) is a continuous-snapshotting log-structured file-system. NILFS2 allows versioning of the entire file-system as well as the restoration of files that were overwritten or destroyed. This continuous snapshotting file-system allows for quick recovery after crashes or mistakes by having checkpoints even few seconds or per synchronous write. NILFS2 features online garbage collection, B-tree-based file and inode management, 64-bit data structures, and 64-bit on-disk time-stamps.
NILFS2 has been in the mainline Linux kernel since Linux 2.6.30 and continues to see changes. NILFS2 though isn't complete with its developers still desiring to implement extents, writable snapshots, snapshot tagging, TRIM/DISCARD, online defrag, online resizing, and numerous other features.
The last time I did any formal benchmarks of NILFS2 were in December of 2011 on the Linux 3.2 kernel. I've been running NILFS2 benchmarks since 2009 on Phoronix. Being curious about the NILFS2 on the latest Linux 3.8 stable kernel, benchmarks were conducted immediately following last week's F2FS file-system benchmarks. All of the tested file-systems were done with their stock mount options from an Ubuntu 13.04 developer snapshot. Benchmarking of this eight-way file-system comparison was done against an Intel X25 SSD.