Coder Social home page Coder Social logo

Comments (4)

safl avatar safl commented on September 21, 2024 2

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.

safl avatar safl commented on September 21, 2024 1

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:

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.

safl avatar safl commented on September 21, 2024 1

Hi @Daasin. closing this now, feel free to open another issue with any other questions.

from xnvme.

Daasin avatar Daasin commented on September 21, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.