Filesystems for Embedded Devices
Smaller computing devices, such as Portable Digital Assistants (PDAs), are becoming more and more popular nowadays. PDAs from Palm Computing and Handspring are everywhere, a flourishing industry regardless of the stock price of either of these companies. Technical advances in minimizing hardware and power consumption have resulted in many powerful new PDAs that run Linux, such as the Sharp Zaurus, Agenda VR3, and the legendary Yopy GMate (which I have still never seen after two years of hype!). On a smaller device, storage space is obviously a big issue because the power consumption by even a small disk drive makes them unusable for most long-term road warriors. Flash storage, which is low-power, random access storage that can be written to a few hundred thousand times, is the most popular storage medium on Linux PDAs. My Zaurus has a 256MB flash cartridge that costs around $100, and holds a large number of MP3s as well as the actual files that I am working on.
Though Flash provides a respectable amount of portable, low-power storage, anyone who has ever used compression applications such as gzip, pkzip, or zip knows that files, especially user files such as documents and spreadsheets, can be compressed into equivalents that take much less space than the original. With this concept in mind, Red Hat's Journaling Flash File System 2 (JFFS2) provides a great deal of promise for the future through a high-power, journaling filesystem that automatically compresses and uncompresses files as they are written to and read from generic Flash devices and related approaches to portable, large-scale storage such as M-Systems' DiskOnChip storage.
JFFS, developed by Axis Communications in Sweden (http://www.axis.com), was the original journaling flash filesystem. JFFS provided the basis for JFFS2, whose development is being led by Red Hat. JFFS2 provides some substantial performance and compression benefits over JFFS. Using JFFS2 as an underlying filesystem, as opposed to the ext2 filesystem, can provide up to a 100% reduction in the space requirements for file storage on Flash systems. Using Linux as the embedded operating system and development environment for the next generation of network appliances, control systems, and any other embedded environment is one of the areas in which Linux shows tremendous promise. Companies working in these areas are understandably interested in maximizing the storage potential and usability of their embedded development projects. In addition to compression, JFFS2 incorporates journaling, which is equally important in portable and embedded systems where power outages may cause system restarts, but the system must be available as quickly as possible.