From bf20ec50f7589dd6ab3164fbf9a1a98bd29a1d4e Mon Sep 17 00:00:00 2001 From: Maciej Szwed Date: Tue, 9 Oct 2018 10:40:14 +0200 Subject: [PATCH] SPDK drivers documentation This is an SPDK block storage configuration documentation describing how to prepare and use SPDK volume driver. Signed-off-by: Maciej Szwed Change-Id: I91e776fd8f0dfe8f17efb4e122d86f627ac71eb0 --- .../drivers/spdk-volume-driver.rst | 60 +++++++++++++++++++ .../block-storage/volume-drivers.rst | 1 + 2 files changed, 61 insertions(+) create mode 100644 doc/source/configuration/block-storage/drivers/spdk-volume-driver.rst diff --git a/doc/source/configuration/block-storage/drivers/spdk-volume-driver.rst b/doc/source/configuration/block-storage/drivers/spdk-volume-driver.rst new file mode 100644 index 00000000000..63cac3c7590 --- /dev/null +++ b/doc/source/configuration/block-storage/drivers/spdk-volume-driver.rst @@ -0,0 +1,60 @@ +========================================== +Storage Performance Development Kit driver +========================================== + +Storage Performance Development Kit (SPDK) is a user space, polled-mode, +asynchronous, lockless NVMe driver. It provides zero-copy, highly +parallel access directly to an SSD from a user space application. +SPDK provides NVMe-oF target that is capable of serving disks over +the network or to other processes. + +Preparation +~~~~~~~~~~~ + +SPDK NVMe-oF target installation +-------------------------------- + +Follow instructions available on https://spdk.io/doc/nvmf.html to install +and configure environment with SPDK NVMe-oF target application. + +Storage pools configuration +--------------------------- + +SPDK Cinder driver requires storage pools to be configured upfront +in SPDK NVMe-oF target application. SPDK driver uses Logical Volume +Stores (LVS) as storage pools. Details on configuring LVS are available +on https://spdk.io/doc/logical_volumes.html. After storage pools are +configured remote access has to be enabled. Launch +``scripts/rpc_http_proxy.py`` script from SPDK directory to start an http +server that will manage requests from volume driver. + +Supported operations +~~~~~~~~~~~~~~~~~~~~ + +* Create, delete, attach, and detach volumes. +* Create, list, and delete volume snapshots. +* Create a volume from a snapshot. +* Copy an image to a volume. +* Copy a volume to an image. +* Clone a volume. +* Extend a volume. +* Get volume statistics. + +Configuration +~~~~~~~~~~~~~ + +Use the following options to configure for the SPDK NVMe-oF transport: + +.. code-block:: ini + + volume_driver = cinder.volume.drivers.spdk.SPDKDriver + target_protocol = nvmet_rdma # SPDK driver supports only nvmet_rdma target protocol + target_helper = spdk-nvmeof # SPDK volume driver requires SPDK NVMe-oF target driver + target_ip_address = 192.168.0.1 # NVMe-oF target IP address + target_port = 4260 # NVMe-oF target port + target_prefix = nqn.2014-08.org.spdk # NVMe-oF target nqn prefix + +.. config-table:: + :config-target: SPDK + + cinder.volume.targets.spdknvmf diff --git a/doc/source/configuration/block-storage/volume-drivers.rst b/doc/source/configuration/block-storage/volume-drivers.rst index 313034de689..e623fa6b76a 100644 --- a/doc/source/configuration/block-storage/volume-drivers.rst +++ b/doc/source/configuration/block-storage/volume-drivers.rst @@ -64,6 +64,7 @@ Driver Configuration Reference drivers/pure-storage-driver drivers/quobyte-driver drivers/solidfire-volume-driver + drivers/spdk-volume-driver drivers/storpool-volume-driver drivers/synology-dsm-driver drivers/tintri-volume-driver