开源软件名称(OpenSource Name):NVSL/linux-nova开源软件地址(OpenSource Url):https://github.com/NVSL/linux-nova开源编程语言(OpenSource Language):C 98.0%开源软件介绍(OpenSource Introduction):NOVA: NOn-Volatile memory Accelerated log-structured file systemLinux versions supported5.1 (current master), 5.0, 4.19, 4.18, 4.14, 4.13. Checkout each branch if you are interested. DescriptionNOVA'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 was developed by the Non-Volatile Systems Laboratory in the Computer Science and Engineering Department at the University of California, San Diego. 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-4-style parity. It supports checkpoints to facilitate backups. This repository contains a version of the mainline kernel with NOVA added. You can check the current version by looking at the first lines of the Makefile. A more thorough discussion of NOVA's design is avaialable in these two papers: NOVA: A Log-structured File system for Hybrid Volatile/Non-volatile Main Memories
PDF Hardening the NOVA File System
PDF Read on for further details about NOVA's overall design and its current status Compatibilty with Other File SystemsNOVA aims to be compatible with other Linux file systems. To help verify that it achieves this we run several test suites against NOVA each night.
Currently, nearly all of these tests pass for the NOVA uses the standard PMEM kernel interfaces for accessing and managing persistent memory. AtomicityBy default, NOVA makes all metadata and file data operations atomic. Strong atomicity guarantees make it easier to build reliable applications on NOVA, and NOVA can provide these guarantees with sacrificing much performance because NVDIMMs support very fast random access. NOVA also supports "unsafe data" and "unsafe metadata" modes that improve performance in some cases and allows for non-atomic updates of file data and metadata, respectively. Data ProtectionNOVA aims to protect data against both misdirected writes in the kernel (which can easily "scribble" over the contents of an NVDIMM) as well as media errors. NOVA protects all of its metadata data structures with a combination of replication and checksums. It protects file data using RAID-5 style parity. NOVA can detects data corruption by verifying checksums on each access and by catching and handling machine check exceptions (MCEs) that arise when the system's memory controller detects at uncorrectable media error. We use a fault injection tool that allows testing of these recovery mechanisms. To facilitate backups, NOVA can take snapshots of the current filesystem state that can be mounted read-only while the current file system is mounted read-write. The tech report list above describes the design of NOVA's data protection system in detail. DAX SupportSupporting DAX efficiently is a core feature of NOVA and one of the challenges in designing NOVA is reconciling DAX support which aims to avoid file system intervention when file data changes, and other features that require such intervention. NOVA's philosophy with respect to DAX is that when a program uses DAX mmap to to modify a file, the program must take full responsibility for that data and NOVA must ensure that the memory will behave as expected. At other times, the file system provides protection. This approach has several implications:
PerformanceThe research paper and technical report referenced above compare NOVA's performance to other file systems. In almost all cases, NOVA outperforms other DAX-enabled file systems. A notable exception is sub-page updates which incur COW overheads for the entire page. The technical report also illustrates the trade-offs between our protection mechanisms and performance. Gaps, Missing Features, and Development StatusAlthough NOVA is a fully-functional file system, there is still much work left to be done. In particular, (at least) the following items are currently missing:
None of these are fundamental limitations of NOVA's design. Additional bugs and issues are here. NOVA is complete and robust enough to run a range of complex applications, but it is not yet ready for production use. Our current focus is on adding a few missing features list above and finding/fixing bugs. Building and Using NOVAThis repo contains a version of the Linux with NOVA included. You should be able to build and install it just as you would the mainline Linux source. Building NOVATo build NOVA, build the kernel with LIBNVDIMM ( Documentation/filesystems/nova.txt provides more detailed instructions on building and using NOVA. Hacking and ContributingThe NOVA source code is almost completely contains in the
If you find bugs, please report them. If you have other questions or suggestions you can contact the NOVA developers at cse-nova-hackers@eng.ucsd.edu. |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论