A flash file system is a
file system designed for storing
files on
flash memory
Flash memory is an Integrated circuit, electronic Non-volatile memory, non-volatile computer memory storage medium that can be electrically erased and reprogrammed. The two main types of flash memory, NOR flash and NAND flash, are named for t ...
–based storage devices. While flash file systems are closely related to file systems in general, they are optimized for the nature and characteristics of flash memory (such as to avoid
write amplification), and for use in particular
operating system
An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ...
s.
Overview
While a
block device layer can emulate a disk drive so that a general-purpose file system can be used on a flash-based storage device, this is suboptimal for several reasons:
* Erasing blocks: flash memory blocks have to be explicitly erased before they can be written to. The time taken to erase blocks can be significant, thus it is beneficial to erase unused blocks while the device is idle.
*
Random access
Random access (also called direct access) is the ability to access an arbitrary element of a sequence in equal time or any datum from a population of addressable elements roughly as easily and efficiently as any other, no matter how many elemen ...
: general-purpose file systems are optimized to avoid
disk seeks whenever possible, due to the high cost of seeking. Flash memory devices impose no seek latency.
*
Wear leveling: flash memory devices tend to wear out when a single block is repeatedly overwritten; flash file systems are designed to spread out writes evenly.
Log-structured file systems have all the desirable properties for a flash file system. Such file systems include
JFFS2 and
YAFFS.
Because of the particular characteristics of flash memory, it is best used with either a
controller to perform wear leveling and
error correction
In information theory and coding theory with applications in computer science and telecommunications, error detection and correction (EDAC) or error control are techniques that enable reliable delivery of digital data over unreliable communi ...
or specifically designed flash
file systems, which spread writes over the media and deal with the long erase times of NAND flash blocks. The basic concept behind flash file systems is: when the flash store is to be updated, the file system will write a new copy of the changed data over to a fresh block, remap the file pointers, then erase the old block later when it has time.
In practice, flash file systems are used only for
Memory Technology Devices (MTDs), which are embedded flash memories that do not have a controller. Removable flash
memory card
A memory card is an electronic data storage device used for storing digital information, typically using flash memory. These are commonly used in digital portable electronic devices, such as digital cameras as well as in many early games conso ...
s and
USB flash drive
A flash drive (also thumb drive, memory stick, and pen drive/pendrive) is a data storage device that includes flash memory with an integrated USB interface. A typical USB drive is removable, rewritable, and smaller than an optical disc, and u ...
s have built-in controllers to manage MTD with dedicated algorithms, like wear leveling, bad block recovery, power loss recovery, garbage collection and
error correction
In information theory and coding theory with applications in computer science and telecommunications, error detection and correction (EDAC) or error control are techniques that enable reliable delivery of digital data over unreliable communi ...
, so use of a flash file system has limited benefit. However, some flash file systems, such as
APFS and
F2FS, can be used on FTL-based flash devices such as
SSD
A solid-state drive (SSD) is a type of solid-state storage device that uses Integrated circuit, integrated circuits to store data persistence (computer science), persistently. It is sometimes called semiconductor storage device, solid-stat ...
and
eUFS.
Flash-based memory devices are becoming more prevalent as the number of mobile devices is increasing, the cost per memory size decreases, and the capacity of flash memory chips increases.
Origins
The earliest flash file system, managing an array of flash as a freely writable disk, was TrueFFS by
M-Systems of Israel, presented as a software product in PC-Card Expo at
Santa Clara, California
Santa Clara ( ; Spanish language, Spanish for "Clare of Assisi, Saint Clare") is a city in Santa Clara County, California. The city's population was 127,647 at the 2020 United States census, 2020 census, making it the List of cities and towns i ...
, in July 1992 and patented in 1993.
One of the earliest flash file systems was
Microsoft
Microsoft Corporation is an American multinational corporation and technology company, technology conglomerate headquartered in Redmond, Washington. Founded in 1975, the company became influential in the History of personal computers#The ear ...
's FFS2, for use with
MS-DOS
MS-DOS ( ; acronym for Microsoft Disk Operating System, also known as Microsoft DOS) is an operating system for x86-based personal computers mostly developed by Microsoft. Collectively, MS-DOS, its rebranding as IBM PC DOS, and a few op ...
, released in autumn 1992. FFS2 was preceded by an earlier product, called "FFS", which however fell short of being a flash file system, managing a flash array as
write once read many (WORM) space rather than as a freely writable disk.
Around 1994, the
PCMCIA, an industry group, approved the ''Flash Translation Layer'' (FTL) specification, based on the design of M-Systems' TrueFFS. The specification was authored and jointly proposed by M-Systems and
SCM Microsystems, who also provided the first working implementations of FTL. Endorsed by Intel, FTL became a popular flash file system design in non-PCMCIA media as well.
Linux flash filesystems
; JFFS, JFFS2 and YAFFS
:
JFFS was the first flash-specific file system for
Linux
Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
, but it was quickly superseded by
JFFS2, originally developed for NOR flash. Then
YAFFS was released in 2002, dealing specifically with NAND flash, and JFFS2 was updated to support NAND flash too.
; UBIFS
:
UBIFS has been merged since Linux 2.6.22 in 2008. UBIFS has been actively developed from its initial merge. UBIFS ha
documentationhosted at ''infradead.org'' along with JFFS2 and MTD drivers. Some initial comparison show UBIFS with compression faster than F2FS.
; LogFS
:
LogFS, another Linux flash-specific file system, is being developed to address the scalability issues of JFFS2.
; F2FS
:
F2FS (Flash-Friendly File System) was added to the
Linux kernel
The Linux kernel is a Free and open-source software, free and open source Unix-like kernel (operating system), kernel that is used in many computer systems worldwide. The kernel was created by Linus Torvalds in 1991 and was soon adopted as the k ...
3.8. Instead of being targeted at speaking directly to raw flash devices, F2FS is designed to be used on flash-based storage devices that already include a flash translation layer, such as
SD card
Secure Digital (SD) is a proprietary, non-volatile, flash memory card format developed by the SD Association (SDA). Owing to their compact size, SD cards have been widely adopted in a variety of portable consumer electronics, including dig ...
s.
Union filesystems
Overlayfs, Unionfs, and aufs are union filesystems, that allow multiple filesystems to be combined and presented to the user as a single tree. This allows the system designer to place parts of the operating system that are nominally read-only on different media to the normal read-write areas.
OpenWrt
OpenWrt (from ''open wireless router'') is an open-source project for embedded operating systems based on Linux kernel, Linux, primarily used on Embedded system, embedded devices to Router (computing), route network traffic. The main components ...
is usually installed on raw flash chips without FTL. It uses overlayfs to combine a compressed read-only
SquashFS
Squashfs is a compressed read-only file system for Linux. Squashfs compresses files, inodes and directories, and supports block sizes from 4 KiB up to 1 MiB for greater compression. Several compression algorithms are supported. Squashfs is ...
with
JFFS2.
Translation layers
See also
*
List of flash file systems
*
Wear leveling
*
Write amplification
References
External links
Presentation on various Flash File Systems– 2007-09-24
Article regarding various Flash File Systems – 2005 USENIX Annual ConferenceSurvey of various Flash File Systems– 2005-08-10
Anatomy of Linux Flash File Systems– 2008-05-20
{{DEFAULTSORT:Flash File System
Computer memory
Computer file systems