Skip to content

freysteinn/linux-ocssd

 
 

Repository files navigation

LightNVM - Linux kernel support for Open-channel SSDs

Open-channel SSDs are devices that share responsibilities with the host in order to implement and maintain features that typical SSDs keep strictly in firmware. These include (i) the Flash Translation Layer (FTL), (ii) bad block management, and (iii) hardware units such as the flash controller, the interface controller, and large amounts of flash chips. In this way, Open-channels SSDs can expose direct access to their physical flash storage, while keeping a subset of the internal features of SSDs.

LightNVM is a specification that gives support to Open-channel SSDs. LightNVM allows the host to manage data placement, garbage collection, and parallelism. Device specific responsibilities such as bad block management, FTL extensions to support atomic IOs, or metadata persistence are still handled by the device.

The architecture of LightNVM consists of two parts: core and (multiple) targets. The core implements functionality shared across targets. This is initialization, teardown and statistics. The targets implement the interface that exposes physical flash to user-space applications. Examples of such targets include key-value store, object-store, as well as traditional block devices, which can be application-specific.

Currently, LightNVM is hooked up through the null_blk and NVMe driver. The NVMe extension allow development using the LightNVM-extended QEMU implementation, using Keith Busch's qemu-nvme branch.

Development is taking place at: https://github.com/OpenChannelSSD/

How to use


To use LightNVM, a device is required to register as an open-channel SSD.

There exist two implementations at the moment: null_blk and NVMe driver. The null_blk driver is intended for performance testing. The NVMe driver can be initialized using the patches of Keith Busch's QEMU NVMe simulator, as well as using an Open-channel SSD device.

The QEMU branch is available at: https://github.com/OpenChannelSSD/qemu-nvme

Follow the guide at: https://github.com/OpenChannelSSD/linux/wiki

LightNVM Specification

We are actively creating a specification as more and more of the host/device interface is stabilized. Please see this Google document. It's open for comments.

http://goo.gl/BYTjLI

Available Hardware

A number of open platforms are being ported to utilize LightNVM:

A number of stealth hardware startups are supporting LightNVM directly in their designs. Please contact us for more information.

  • Other platform such as OpenSSD Jasmine and OpenSSD Cosmos are able to support LightNVM. However, there is no compatible firmwares yet.

Contact:

You can contact us at: [email protected] [email protected]

About

The linux kernel source for Open-Channel SSDs

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 96.6%
  • Assembly 2.0%
  • C++ 0.7%
  • Objective-C 0.3%
  • Makefile 0.3%
  • Perl 0.1%