Adding Aggressive Error Correction to a High-Performance Flash File System

Appeared in Proceedings of the 9th ACM/IEEE Conference on Embedded Software (EMSOFT '09).

Abstract

While NAND flash memories have rapidly increased in both capacity and performance and are increasingly used as a storage device in many embedded systems, their reliability has decreased both because of increased density and the use of multi-level cells (MLC). Current MLC technology only specifies the minimum requirement for an error correcting code (ECC), but provides no additional protection in hardware. However, existing flash file systems such as YAFFS and JFFS2 rely upon ECC to survive small numbers of bit errors, but cannot survive the larger numbers of bit errors or page failures that are becoming increasingly common as flash file systems scale to multiple gigabytes. We have developed a flash memory file system, RCFFS, that increases reliability by utilizing algebraic signatures to validate data and Reed-Solomon codes to correct erroneous or missing data. Our file system allows users to adjust the level of reliability they require by specifying the number of redundancy pages for each erase block, allowing them to dynamically trade off reliability and storage overhead. By integrating error mitigation with advanced features such as fast mounting and compression, we show, via simulation in NANDsim, that our file system can outperform YAFFS and JFFS2 while surviving flash memory errors that would cause data loss for existing flash file systems.

Publication date:
October 2009

Authors:
Yangwook Kang
Ethan L. Miller

Projects:
Reliable Storage
Storage Class Memories

Available for download:

Full text:
Download as PDF

Bibtex entry

@inproceedings{kang09-emsoft,
  author       = {Yangwook Kang and Ethan L. Miller},
  title        = {Adding Aggressive Error Correction to a High-Performance Flash
File System},
  booktitle = {Proceedings of the 9th ACM/IEEE Conference on Embedded Software
(EMSOFT '09)},
  month        = oct,
  year         = {2009},
}
Last modified 8 Sep 2009