Comments (4)
Hi @Daasin,
I apologize for the slow response. I am not sure what you asking about, so to help me answer can you provide a response to the following:
- When you say "something like this" do you mean xNVMe? Or what does "something like this" refer to?
- What would "an easier way to use ZNS across multiple platforms" look like to you? Please let me know: what is the hard part to you? And when you say "an easier way", easier than what exactly?
Thanks!
Simon
from xnvme.
To clarify, the Zoned Namespace Command Set is an NVMe specification; see [1]. Thus NVMe/ZNS is the interface exposing the SSD/device and its storage media to the host via, e.g., PCIe. NVMe provides other I/O command-set specifications:
- NVM Command Set[2], NVMe/NVM defines commands such as reading/writing logical blocks. If you have an M.2 NVMe SSD in your laptop/workstation, it most likely exposes the itself as an NVMe/NVM SSD.
- Key Value Command Set[3], NVMe/KV defines commands for retrieving/storing key-value pairs. The NVMe/KV is a KV-database/object-storage packed inside an SSD. Pretty cool if you ask me :)
So, regarding the thing you essentially want to know: the answer is no. Since, to turn an NVMe/NVM SSD into and NVMe/ZNS SSD, well, then you have to change it :)
You can of course use abstractions/shim-layers/emulations/in-directions in various layers of the software stack such that an abstraction presents itself as an NVMe/ZNS device although it is backed by NVMe/NVM, main-memory, tape or whatever, but that is just software-engineering.
One of these really useful abstractions are qemu, with qemu you can present an emulated/simulated NVMe/ZNS device to the guest, where the emulated device is a pure software abstraction backed by a file in a file-system, which could be on a NVMe/NVM or any other block device.
However, using NVMe/ZNS devices "natively" is where you reap the benefits, this is the approach of projects like:
- https://github.com/OpenMPDK/xZTL
- https://github.com/OpenMPDK/FlexAlloc
- https://github.com/westerndigitalcorporation/zenfs
The first two utilize xNVMe to unify software I/O path from application down to the device, for the first two one can switch between NVMe ioctl, libaio, io_uring, an user-space NVMe-drivers (SPDK NVMe) where-as the latter is tied to block-ioctl and pwrite/pread calls.
I hope the above answers your questions, otherwise, just ask some more.
Best,
Simon
References
[1] https://nvmexpress.org/wp-content/uploads/NVM-Zoned-Namespace-Command-Set-Specification-1.1b-2022.01.05-Ratified.pdf
[2] https://nvmexpress.org/wp-content/uploads/NVM-Command-Set-Specification-1.0b-2021.12.18-Ratified.pdf
[3] https://nvmexpress.org/wp-content/uploads/NVM-Express-Key-Value-Command-Set-Specification-1.0b-2021.12.18-Ratified.pdf
from xnvme.
Hi @Daasin. closing this now, feel free to open another issue with any other questions.
from xnvme.
No worries :D
and in both points i'm generally referring to the use of the NVME Zoned Namespaces Command Set (that exposes a zoned block storage interface for use by the Host System)
From my understanding, it may not necessarily need a specific version of the NVME Specification nor hardware support and that one possible way of supporting ZNS on SSD's was to simply do a firmware update.
I essentially wanted to know, if it was possible to support across the board ...even if the manufacturer wasn't pushing out a firmware update. Like a driver, or kernel module, or a new file system, or new volume management, changed partitioning scheme, or any other possible way that could be found rather than depending on individual manufacturers of SSD's like Samsung to support the feature in firmware updates.
from xnvme.
Related Issues (20)
- Expand build-test matrix with debug-enabled
- Add testing on Rocky and Oracle Linux HOT 1
- Ramdisk testing is not running for macos in GHA
- Support for "pseudo" commands
- Automate perf. eval of bdev_xnvme HOT 1
- Release v0.7.2
- Add sync-emulation using ``io_uring_cmd``
- Generate man-pages and bash-completions when building HOT 2
- Improve the automated performance evaluation
- Consider refactoring vectored IO function signatures to use a metadata buffer
- libvfn fails when used via Python bindings
- How can I get the list of supported command sets? HOT 3
- Dropped Log Zoned Changes via SPDK/Fabrics
- docs: improvements to the release checklist HOT 1
- Testing ``xnvme show-regs``
- Packaging
- macOS (brew)
- expand fio testing with cmd-set specifics (fdp + zns)
- Add SO-versioning HOT 3
- Verifying E2E Data-protection-info functionality
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from xnvme.