Flash-Friendly File System (F2FS) is a Linux-based log-structured flash file system which takes into account the characteristics of NAND flash memory-based storage devices such as solid-state disks, eMMC, and SD cards with an built-in FTL (flash translation layer). It was developed and is maintained and enhanced by Samsung Electronics.
Other available Linux flash file systems, such as jffs2, ubifs and logfs, are targeted at raw flash devices. f2fs was merged into the Linux 3.8 kernel.
F2FS is based on Log-structured File System (LFS), which supports versatile “flash-friendly” features. The design has been focused on addressing the fundamental issues in LFS, which are snowball effect of wandering tree and high cleaning overhead.
f2fs uses 4K blocks. Block addresses are 32 bits. The maximum file system size is 16 terabytes. Blocks are collected into segments of 512 blocks. Segments are collected into sections. Sections are normally filled from start to end before looking around for another section, and the cleaner processes one section at a time. Interestingly, 64-bit timestamps are not currently supported.
f2fs has six sections open for writing at any time with different sorts of data being written to each one. The different sections allow data to be kept separate from indexing information (nodes), and for both data and nodes to be divided into hot, warm, and cold tiers according to various heuristics. Not quite the classical automatic storage tiering technology as used by Netapp and others but similar.
Directory data is treated as hot and kept separate from file data because they have different life expectancies. Data that is cold is expected to remain unchanged for quite a long time, so a section full of cold blocks is likely to not require any cleaning. Nodes that are hot are expected to be updated soon, so if we wait a little while, a section that was full of hot nodes will have very few blocks that are still live and thus will be cheap to clean.
A good technical reference to F2FS can be found at Linux Weekly News.
Is it ready for prime time on Linux platforms? Maybe for my development platform operating system but not for my critical data.