Mikulas Patocka, one of LVM's developers and inventor of several storage optimization inventions at Red Hat, has introduced the new NVFS file system to the Linux kernel mailing list.
This new system aims to create a fast and compact file system for non-volatile memory chips (NVM, for example NVDIMM), which combines the performance of RAM with the ability to permanently store content.
When developing NVFS the experience of FS NOVA was taken into account, in 2017 created specifically for NVM memory, but not included in the Linux kernel and with limited support for Linux kernels from 4.13 to 5.1.
The proposed FS NVFS it is much simpler than NOVA (4972 lines of code vs 21459), provides fsck utility, has better performance, supports extended attributes (xattrs), security labels, ACLs, and quotas, but does not support snapshots.
NVFS architecture is close to FS Ext4 and it fits well into the VFS subsystem-based file system model, making it possible to minimize the number of middle layers and get by with a module that does not require kernel patches.
NVFS uses the DAX kernel interface to directly access devices persistent storage, bypassing the page cache. To optimize work with NVM memory, which uses byte addressing, the contents of the drive are mapped to the linear address space of the kernel without using the traditional block device layer and intermediate cache. It is used to store the contents of the directories of the root tree (root tree), in which each proheshirovano file name and hash value is used to search the tree.
Data integrity is ensured through the "updates" mechanism (as in FreeBSD UFS and OpenBSD FFS) without using the journal.
To avoid file corruption in NVFS, lThe data exchange operations are grouped such that a crash cannot lead to the loss of blocks or inodes, and the integrity of the structures is restored by the fsck utility.
The fsck utility is multithreaded and provides a brute force performance of 1,6 million inodes per second.
- In benchmarks, NVFS performed a tree copy operation with Linux kernel sources in NVM memory approximately 10% faster than NOVA, 30% faster than ext4, and 37% faster than XFS.
- In the data search test, NVFS was faster than NOVA by 3% and ext4 and XFS by 15% (but with an active disk cache, NOVA was found to be 15% slower).
- In the Million Directory Operations test, NVFS outperformed NOVA by 40%, ext4 by 22%, and XFS by 46%. When simulating DBMS activity, the NVFS file system outperformed NOVA by 20%, ext4 by 18 times, and XFS by 5 times. In the fs_mark test, NVFS and NOVA were roughly the same, while ext4 and XFS were roughly 3 times behind.
The lag of traditional FSs in NVM memory is due to the fact that they are not designed for the byte addressing used in non-volatile memory, which resembles normal RAM.
Ordinary drive reading provides atomicity of operation at the sector read / write level, while NVM memory provides access at the individual machine word level.
In addition, traditional file systems try to reduce the intensity of media access, which is obviously considered slower than RAM, and also try to bundle operations to ensure sequential reads when using hard drives, process request queues, combat fragmentation and separate priorities to perform different operations.
For NVM memory, such complications are unnecessary, since the data access speed is comparable to RAM.