ZNS stands for 'Zoned Namespaces'; it is a relatively new command set for NVMe SSDs that exposes a zoned block storage interface between the host and the SSD, allowing it to align the data better.
To complement that, a new Linux file system 'SSDFS' has been proposed to be included in the kernel by a developer that aims to leverage ZNS for lower I/O latency, reduced write amplification, prolonged SSD lifetime, and more.
Let's take a look at it.
What is it?: SSDFS is an open-source, kernel-space LFS file system that has been designed to do the following things:
- Eliminate garbage collection (GC) overhead.
- Prolong SSD life.
- Native support for a strict append-only mode, with ZNS SSD & SMR HDD compatibility.
- Guarantee strong reliability and stable performance.
According to the developer, Viacheslav Dubeyko. One of SSDFS's key goals is to decrease the write amplification factor that causes undesired results in flash memory and SSDs, causing them to fail prematurely.
To achieve this, the concept of Logical extent will be used that describes volume extent based on their segment ID, logical block ID, and length.
The SSDFS file system will also use the b-tree architecture to handle the metadata representation.
(Technical bit here) The developer adds that this is because it provides a compact way to reserve metadata space without the need to use excessive over-provisioning of metadata reservation.
Viacheslav has also shared some convincing benchmark results that show the capability of SSDFS:
He has also shared the upcoming features for SSDFS, which include:
- IOCTLs support
- Extended Attributes
- Shared Dictionary Functionality
- Snapshot Support
The developer has mentioned that in its current state, SSDFS is in a very work-in-progress condition and is “not completely stable.”
He also believes “it's time to hear the community opinion.”
If you want to dive deep into SSDFS, you may go through the patch series submitted for review.
💬 What do you think of this? Would you be willing to give this a try?