JFFS2 is the current standard journaling filesystem used with flash memory hardware in Linux systems. In traditional journaling filesystems, the goal is mainly only to prevent data from being lost, or files from being corrupted when the power is lost suddenly. With JFFS2, that is one of the goals, but there are others as well.
Compared to RAM, flash memory is slow to read, and very slow to write. JFFS2 allows writes to the flash to be performed as a background task, keeping the system responsive. JFFS2 also provides wear levelling, making sure that even if one particular file is always being accessed, the whole JFFS2 partition is used. Since flash devices have a limited lifetime, this ensures that that lifetime is used as efficiently as possible.
To use JFFS2 under Linux, a few things are requires:
- Flash hardware directly connected to the system
- jffs2 and mtd (memory technology device) support in the kernel
- The mkfs.jffs2 utility to create the filesystem
Note that many devices which use flash hardware like digital cameras connect via a USB or similar interface to a PC. In that situation, the camera normally hides the fact that it is using a flash device, so that the PC just sees a USB storage device. Because of this, unless you're working on embedded Linux systems, JFFS2 isn't something you need to worry about.