HOME

TheInfoList



OR:

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 seek Higher performance in hard disk drives comes from devices which have better performance characteristics. These performance characteristics can be grouped into two categories: access time and data transfer time (or rate). Access time The ''access ...
s 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
documentation
hosted at ''infradead.org'' along with JFFS2 and MTD drivers. Some initial comparison show UBIFS with compression faster than F2FS. ; LogFS :
LogFS LogFS is a Linux log-structured and scalable flash file system, intended for use on large devices of flash memory. It is written by Jörn Engel and in part sponsored by the CE Linux Forum. LogFS was introduced in the mainline Linux kernel in v ...
, 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 Conference

Survey 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