Developer(s) | Samsung Electronics, Motorola Mobility, and Huawei |
---|---|
Full name | Flash-Friendly File System |
Introduced | v3.8, 2012-12-20 with Linux |
Structures | |
Directory contents | multi-level hash table |
File allocation | bitmap (free space), table |
Limits | |
Max. volume size | 16 TB |
Max. file size | 3.94 TB |
Max. number of files | Depends on volume size |
Max. filename length | 255 bytes |
Features | |
Dates recorded | modification (mtime), attribute modification (ctime), access (atime) |
Date resolution | 1 ns |
Attributes | POSIX, extended attributes |
File system permissions | POSIX, ACL |
Transparent compression | No |
Transparent encryption | Yes |
Other | |
Supported operating systems | Linux |
Website |
F2FS (Flash-Friendly File System) is a flash file system initially developed by Samsung Electronics for the Linux kernel.
The motive for F2FS was to build a file system that, from the start, takes into account the characteristics of NAND flash memory-based storage devices (such as solid-state disks, eMMC, and SD cards), which are widely used in computer systems ranging from mobile devices to servers.
F2FS was designed on a basis of a log-structured file system approach, which it adapted to newer forms of storage. Jaegeuk Kim, the principal F2FS author, has stated that it remedies some known issues of the older log-structured file systems, such as the snowball effect of wandering trees and high cleaning overhead. In addition, since a NAND-based storage device shows different characteristics according to its internal geometry or flash memory management scheme (such as the Flash Translation Layer or FTL), it supports various parameters not only for configuring on-disk layout, but also for selecting allocation and cleaning algorithms.
F2FS divides the whole volume into a number of segments, each of which is fixed at 2 MB. A section is composed of consecutive segments, and a zone consists of a set of sections. By default, section and zone sizes are set to the same size, but users can easily modify the size with mkfs
.
F2FS splits the entire volume into six areas, and all except the superblock area consist of multiple segments as described below.
In order to avoid misalignment between file system and flash storage, F2FS aligns the start block address of the CP with the segment size. It also aligns the Main Area start block address with the zone size by reserving some segments in the SSA area.
F2FS uses the checkpoint scheme to maintain file system integrity. At mount time, F2FS first tries to find the last valid checkpoint data by scanning the CP area. In order to reduce the scanning time, F2FS uses only two copies of the CP. One of them always indicates the last valid data, which is called a shadow copy mechanism. In addition to the CP, the NAT and SIT also use the shadow copy mechanism. For file system consistency, each CP points to which NAT and SIT copies are valid.