Reliability Mechanisms for File Systems Using Non-Volatile Memory as a Metadata Store

Appeared in Proceedings of the 6th ACM & IEEE Conference on Embedded Software (EMSOFT '06).

Abstract

Portable systems such as cell phones and portable media players commonly use non-volatile RAM (NVRAM) to hold all of their data and metadata, and larger systems can store metadata in NVRAM to increase file system performance by reducing synchronization and transfer overhead between disk and memory data structures. Unfortunately, wayward writes from buggy software and random bit flips may result in an unreliable persistent store. We introduce two orthogonal and complementary approaches to reliably storing file system structures in NVRAM. First, we reinforce hardware and operating system memory consistency by employing page-level write protection and error correcting codes. Second, we perform on-line consistency checking of the filesystem structures by replaying logged file system transactions on copied data structures; a structure is consistent if the replayed copy matches its live counterpart. Our experiments show that the protection mechanisms can increase fault tolerance by six orders of magnitude while incurring an acceptable amount of overhead on writes to NVRAM. Since NVRAM is much faster and consumes far less power than disk-based storage, the added overhead of error checking leaves an NVRAM-based system both faster and more reliable than a disk-based system. Additionally, our techniques can be implemented on systems lacking hardware support for memory management, allowing them to be used on low-end and embedded systems without an MMU.

Publication date:
October 2006

Authors:
Kevin Greenan
Ethan L. Miller

Projects:
Storage Class Memories
Reliable Storage

Available media

Full paper text: PDF

Bibtex entry

@inproceedings{greenan-emsoft06,
  author       = {Kevin Greenan and Ethan L. Miller},
  title        = {Reliability Mechanisms for File Systems Using Non-Volatile Memory as a Metadata Store},
  booktitle    = {Proceedings of the 6th ACM & IEEE Conference on Embedded Software (EMSOFT '06)},
  pages        = {178-187},
  month        = oct,
  year         = {2006},
}
Last modified 5 Aug 2020