Description
NAND flash memory has been widely used in the embedded market because of its desirable properties such as non-volatility, shock resistance, low power and low latency for reading and writing. However, hardware limitations like the need to erase before writing again, erase block sizes that span multiple write pages, and limited memory cell lifespan, make file system requirements for flash memory very different from those for conventional block devices. As such, conventional file systems cannot be applied directly to flash memory. To address these issues, two different approaches have been proposed: (1) add a software layer that emulates a block device using the flash device, and (2) create special-purpose file systems that are targeted to flash devices. The first approach, which is based on a Flash Translation Layer (FTL) concept, succeeds in making flash devices universally accessible. However, hiding flash device characteristics from the file system inevitably leads to a reduced performance. In contrast, a flash-specific file system is designed for direct use on raw flash chips. It proves to be a better solution on flash memory. However, there is currently no support for flash-based RAID (redundant array of independent disks) file systems in standard Linux distributions. RAID support can provide performance enhancements that enable video rate recording and playback of data, which has already been demonstrated in some high performance video cameras. RAID support is particularly important for NAND flash devices because they have a high rate of cell failure as they age compared to disk drives. As NAND flash devices continue to fall in price at a faster pace than disk drivers, price barriers will be reduced or eliminated. As a result it is anticipated that RAID-capable flash file systems will eventually become a fundamental requirement for Linux operating systems. In this thesis we enhance JFFS2( Journaling Flash File System version 2), the most widely used flash file system, by eliminating its main deficiencies, adding RAID capability, making all the IO operations asynchronous to reap I/O performance. The new RAID-enabled file system is called JFFS2R (JFFS2 with RAID) . We compare the performance of JFFS2R with JFFS2, YAFFS2, and UBIFS. Test results show the read performance of all the JFFS2R configurations has from 155%-247% improvement over JFFS2, from 181-271% improvement over UBIFS, from 275%-430% improvement over YAFFS2 depend on the file size being read and JFFS2R's configuration. Write performance has from 187-407% improvement over JFFS2, from -2% to 62% improvement over UBIFS, and from 36%-171% improvement over JFFS2R depend on the JFFS2R's configuration and file size being written.