https://blueprints.launchpad.net/openstack-cyborg/+spec/cyborg-spdk-driver
This spec proposes to provide the initial design for Cyborg’s SPDK driver.
SPDK is a high performance kit and provides a user space, polled-mode, asynchronous, lockless NVMe driver for storage acceleration on the backend. Our goal is to add a SPDK driver for Cyborg to manage SPDK, and further improve storage performance.
In general, the goal is to develop the Cyborg SPDK driver that supports discover/list/update/attach/detach operations for SPDK framework.
The SPDK framework comprises of the following components:
+-----------userspace--------+ +--------------+
| +------+ +------+ +------+ | | +-----------+ |
+---+ | |DPDK | |NVMe | |NVMe | | | | Ceph | |
| N +-+-+NIC | |Target| |Driver+-+-+ |NVMe Device| |
| I | | |Driver| | | | | | | +-----------+ |
| C | | +------+ +------+ +------+ | | +-----------+ |
+---+ | +------------------------+ | | | Blobstore | |
| | DPDK Libraries | | | |NVMe Device| |
| +------------------------+ | | +-----------+ |
+----------------------------+ +---------------+
BlobStore owns the entire NVMe device including metadata management and data management, which defines three basic units of disk space (like logical block, page, cluster). The NVMe device is divided into clusters starting from the first logical block.
LBA 0 LBA N +———–+———–+—–+———–+ | Cluster 0 | Cluster 1 | … | Cluster N | +———–+———–+—–+———–+
Cluster0 has special format which consists of pages. Page0 is the first page of Cluster0. Super Block contains the basic information of BlobStore.
Page 0 | Page 1 … Page N |
Super Block | Metadata Region |
Each blob is allocated a non-contiguous set of pages. These pages form a linked list. In general, the BlobStore adopts direct operation of bare metal device and avoids the filesystem, which improves efficiency.
None
This blueprint proposes to add the following APIs:
None
None
None
The SPDK can provide a user space, polled-mode, asynchronous, lockless NVMe driver for storage acceleration on the backend.
Deployers can call SPDK from the nodes which have installed SPDK after the driver has been implemented.
None
Document SPDK driver in the Cyborg project
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.