A flash file system is a
file system designed for storing
files on
flash memory–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
Write amplification (WA) is an undesirable phenomenon associated with flash memory and solid-state drives (SSDs) where the actual amount of information physically written to the storage media is a multiple of the logical amount intended to be wr ...
), and for use in particular
operating system
An operating system (OS) is system software that manages computer hardware, software resources, and provides common services for computer programs.
Time-sharing operating systems schedule tasks for efficient use of the system and may also i ...
s.
Overview
While a
block device
In Unix-like operating systems, a device file or special file is an interface to a device driver that appears in a file system as if it were an ordinary file. There are also special files in DOS, OS/2, and Windows. These special files allow a ...
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: 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 Wear leveling (also written as wear levelling) is a technique Wear leveling techniques for flash memory systems. for prolonging the service life of some kinds of erasable computer storage media, such as flash memory, which is used in solid-state d ...
: 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 system
A log-structured filesystem is a file system in which data and metadata are written sequentially to a circular buffer, called a log. The design was first proposed in 1988 by John K. Ousterhout and Fred Douglis and first implemented in 1992 by ...
s have all the desirable properties for a flash file system. Such file systems include
JFFS2
Journalling Flash File System version 2 or JFFS2 is a log-structured file system for use with flash memory devices. It is the successor to JFFS. JFFS2 has been included into the Linux kernel since September 23, 2001, when it was merged into th ...
and
YAFFS
Yaffs (Yet Another Flash File System) is a file system designed and written by Charles Manning for the company Aleph One.
Yaffs1 was the first version of this file system and was designed for the then-current NAND chips with 512 byte page size ( ...
.
Because of the particular characteristics of flash memory, it is best used with either a
controller
Controller may refer to:
Occupations
* Controller or financial controller, or in government accounting comptroller, a senior accounting position
* Controller, someone who performs agent handling in espionage
* Air traffic controller, a person ...
to perform wear leveling and
error correction 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. They allow adding memory to such devices using a card in a so ...
s and
USB flash drive
Universal Serial Bus (USB) is an industry standard that establishes specifications for cables, connectors and protocols for connection, communication and power supply ( interfacing) between computers, peripherals and other computers. A bro ...
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, so use of a flash file system has limited benefit.
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
M-Systems Ltd., (sometimes spelled msystems) was a Nasdaq-listed Israeli producer of flash memory storage products founded in 1989 by Dov Moran and Aryeh Mergi, based in Kfar Saba, Israel. They were best known for developing and patenting the ...
of Israel, presented as a software product in PC-Card Expo at
Santa Clara, California
Santa Clara (; Spanish for " Saint Clare") is a city in Santa Clara County, California. The city's population was 127,647 at the 2020 census, making it the eighth-most populous city in the Bay Area. Located in the southern Bay Area, the cit ...
, in July 1992 and patented in 1993.
One of the earliest flash file systems was
Microsoft
Microsoft Corporation is an American multinational technology corporation producing computer software, consumer electronics, personal computers, and related services headquartered at the Microsoft Redmond campus located in Redmond, Washin ...
'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 ope ...
, 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
Write once read many (WORM) describes a data storage device in which information, once written, cannot be modified. This write protection affords the assurance that the data cannot be tampered with once it is written to the device, excluding the p ...
(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
SCM may refer to:
Organizations
* SCM Corporation, an American typewriter and calculator manufacturer
* SCM Holdings, a holding company owned by Ukrainian tycoon Rinat Akhmetov
* SCM Press, a UK-based academic publisher of theology
* Securities Co ...
, 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
The Journaling Flash File System (or JFFS) is a log-structured file system for use on NOR flash memory devices on the Linux operating system. It has been superseded by JFFS2.
Design
Flash memory (specifically NOR flash) must be erased pri ...
was the first flash-specific file system for
Linux
Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, w ...
, but it was quickly superseded by
JFFS2
Journalling Flash File System version 2 or JFFS2 is a log-structured file system for use with flash memory devices. It is the successor to JFFS. JFFS2 has been included into the Linux kernel since September 23, 2001, when it was merged into th ...
, originally developed for NOR flash. Then
YAFFS
Yaffs (Yet Another Flash File System) is a file system designed and written by Charles Manning for the company Aleph One.
Yaffs1 was the first version of this file system and was designed for the then-current NAND chips with 512 byte page size ( ...
was released in 2002, dealing specifically with NAND flash, and JFFS2 was updated to support NAND flash too.
; UBIFS
:
UBIFS
UBIFS (UBI File System, more fully Unsorted Block Image File System) is a flash file system for unmanaged flash memory devices.
UBIFS works on top of an UBI (unsorted block image) layer, which is itself on top of a memory technology device ( ...
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
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 ...
(Flash-Friendly File System) was added to the
Linux kernel 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, officially abbreviated as SD, is a proprietary non-volatile flash memory card format developed by the SD Association (SDA) for use in portable devices.
The standard was introduced in August 1999 by joint efforts between SanDis ...
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, primarily used on embedded devices to route network traffic. The main components are Linux, util-linux, musl, and BusyBox. All ...
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
Journalling Flash File System version 2 or JFFS2 is a log-structured file system for use with flash memory devices. It is the successor to JFFS. JFFS2 has been included into the Linux kernel since September 23, 2001, when it was merged into th ...
.
Translation layers
See also
*
List of flash file systems
The following lists identify, characterize, and link to more thorough information on Computer file systems.
Many older operating systems support only their one "native" file system, which does not bear any name apart from the name of the operating ...
*
Wear leveling Wear leveling (also written as wear levelling) is a technique Wear leveling techniques for flash memory systems. for prolonging the service life of some kinds of erasable computer storage media, such as flash memory, which is used in solid-state d ...
*
Write amplification
Write amplification (WA) is an undesirable phenomenon associated with flash memory and solid-state drives (SSDs) where the actual amount of information physically written to the storage media is a multiple of the logical amount intended to be wr ...
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