File Systems

This page has information about file systems which are of interest to CE Linux Forum members.

Open source filesystems
Most embedded devices use flash memory as storage media. Here are some filesystems designed for and/or commonly used in embedded devices:
 * JFFS2 - The Journalling Flash File System, version 2. The maximum size of JFFS2 is 128MB.
 * CRAMFS - A compressed read-only file system for Linux. The maximum size of CRAMFS is 256MB.
 * for information on Linear Cramfs, see Application XIP
 * Squash Fs - A (more) compressed read-only file system for Linux
 * YAFFS - Yet Another Flash File System - a file system designed specifically for NAND flash
 * AXFS - Advanced XIP File System
 * ABISS - Active Block I/O Scheduling System - a file system designed for real-time I/O

LogFS

 * logfs - LogFS is a scalable flash filesystem. It is aimed to replace JFFS2 for most uses, but focuses more on the large devices.

Matt Mackall writes (in July of 2007):

LogFS is a filesystem designed to support large volumes on FLASH. It uses a simple copy-on-write update process to ensure consistency (the "log" in the name is a historical artifact). It's easily the most modern and scalable open-source FLASH filesystem available for Linux and it's well on its way to being accepted in the mainline tree.

Scott Preece writes:

The big win for LogFS (in my limited knowledge of it) is that it stores its tree structure in the media, rather than building it in memory at mount time. This significantly reduces both startup time and memory consumption. This becomes more important as the size of the flash device increases. Read more in LWN (http://lwn.net/Articles/234441) and linux.com (http://www.linux.com/articles/114295).

Some newer flash memory, like MLC (multi-level cell), are not well supported.

Other projects

 * XPRESS file system - [See OLS 2006 proceedings, presentation by Joo-Young Hwang]
 * I found out at ELC 2007 that this FS project was recently suspended internally at Samsung


 * UBI http://www.linux-mtd.infradead.org/faq/ubi.html manages multiple logical volumes on a single flash device, specifically supporting NAND flash devices. UBI provides a flexible partitioning concept which still allows for wear-levelling across the whole flash device.