NOVA: The Fastest File System for NVMMs
NOVA's goal is to provide a high-performance, full-featured, production-ready file system tailored for byte-addressable non-volatile memories (e.g., NVDIMMs and Intel's soon-to-be-released 3DXpoint DIMMs). It combines design elements from many other file systems to provide a combination of high-performance, strong consistency guarantees, and comprehensive data protection. NOVA support DAX-style mmap and making DAX performs well is a first-order priority in NOVA's design.
NOVA is primarily a log-structured file system, but rather than maintain a single global log for the entire file system, it maintains separate logs for each file (inode). NOVA breaks the logs into 4KB pages, they need not be contiguous in memory. The logs only contain metadata.
File data pages reside outside the log, and log entries for write operations point to data pages they modify. File modification uses copy-on-write (COW) to provide atomic file updates.
For file operations that involve multiple inodes, NOVA use small, fixed-sized redo logs to atomically append log entries to the logs of the inodes involned.
This structure keeps logs small and make garbage collection very fast. It also enables enormous parallelism during recovery from an unclean unmount, since threads can scan logs in parallel.
NOVA replicates and checksums all metadata structures and protects file data with RAID-5-style parity. It supports checkpoints to facilitate backups.
You can try it yourself
A more thorough discussion of NOVA's design is avaialable in these papers
NOVA-Fortis: A Fault-Tolerant Non-Volatile Main Memory File System
Proceedings of the 26th International Symposium on Operating Systems Principles (SOSP), 2017.
NOVA: A Log-structured File System for Hybrid Volatile/Non-volatile Main Memories
14th USENIX Conference on File and Storage Technologies (FAST 16), 2016.
Mojim: A Reliable and Highly-Available Non-Volatile Memory System
Proceedings of the 20th International Conference on Architectural Support for Programming Languages and Operating Systems, 2015.
NV-Heaps: Making Persistent Objects Fast and Safe With Next-Generation, Non-Volatile Memories
Proceedings of the sixteenth international conference on Architectural support for programming languages and operating systems, 2011.
Quill: Exploiting Fast Non-Volatile Memory by Transparently Bypassing the File System
Department of Computer Science amp; Engineering, University of California, San Diego technical report CS2013-0991, Jan 2013.