Ref

Storage Performance Development Kit

SPDK NVMe over TCP Optimization on Arm

What is block stack?

<aside> 🌼 It is manage request to and from block devices. It typically is request queue and device driver.

SPDK provides https://spdk.io/doc/bdev.html as a user library

</aside>

Untitled

User space driver

What more SPDK provide?

<aside> 🌼 NVME-of stands for an NVM Express over Fabrics

iSCI stands for Internet Small Computer Systems Interface which is an Internet Protocol-based storage networking standard for linking data storage facilities. It provide block-level access to storage device carrying SCI over TCP/IP

QEMU with vhost which its driver provide in-kernel virtIO device emulation on Linux

All of these can serving disks over the network to implement high performance storage target

</aside>

Protection ring

A concept of CPU separate memory which help OS segregate kernel space and user space. Normally, driver run in kernel space.

Protection ring

SPDK

SPDK run in userspace (because command is from userspace) and directly interface to hardware.

β†’ lib

β†’ utility: basic math

β†’ protocol: build block for a specific server

β†’ storage server: map physical drive and fs of stack’

β†’ system: system level ex jsonrpc, spdk_env_dpdk