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 subsystem that supports 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 continues to be handled by the device.
The architecture of LightNVM consists of three parts: core, media managers and targets. The core implements shared functionality across targets. For example initialization, teardown and statistics. The media manager implements management of flash blocks in the host, and at last 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.
Go to github for all sub-projects.
The Open-Channel SSD support is divided into several pieces. Here is a short description of each project and how it relates.
Linux Kernel Support (https://github.com/OpenChannelSSD/linux)
Implements support for Open-Channel SSDs in the kernel. It is the core of identifying, managing, and using the Open-Channel SSDs.
liblightnvm Library (https://github.com/OpenChannelSSD/liblightnvm)
A library that abstracts the underlying "raw" Open-Channel SSD device and provides abstractions such as append only, bad block management, etc.
RocksDB Open-Channel SSD Support (https://github.com/OpenChannelSSD/rocksdb)
Implements support in RocksDB for directly accessing Open-Channel SSDs.
A number of presentations on LightNVM have been given:
Open-Channel SSDs: LinuxCon Vault 2016 (Link).
Open-Channel SSDs: LinuxCon North America 2015 (Link).
Towards Application Driven Storage: LinuxCon North America 2015 (Link).
Linux Kernel Abstractions for Open-Channel Solid State Drives: Non-Volatile Memory Workshop (NVMW) 2015 (Link).
A number of platforms supports LightNVM:
CNEX Labs Westlake SDK.
LightNVM SDK may be ordered for academical purposes. Please write to firstname.lastname@example.org with your research description and inquire for availability.
LiteOn AD2 Open-Channel SSD (Announced at Flash Memory Summit 2016)
IIT Madras SSD Controller (https://bitbucket.org/casl/ssd-controller). An open-source implementation of a NVMe controller in BlueSpec. Can run on Xilinx FPGA's such as Artix 7, Kintex 7, and Vertex 7.
Multiple unreleased SSDs under development. They will be added here when announched.
Other platform such as OpenSSD Jasmine and OpenSSD Cosmos are able to support LightNVM. However, there are no compatible firmwares yet.
LightNVM Open-Channel Specification 1.2 Download
LightNVM Open-Channel Specification 1.3 Draft Access
The latest version 1.2 is stable and is what is implemented within the Linux kernel.