SPDK From First Principles

SPDK deep learning path

Glossary

A compact index of SPDK, NVMe, bdev, blobstore, lvol, transport, and diskengine terms used throughout the book.

Source: content/chapters/99-glossary.md

Storage Hardware

  • Block device: A storage object that exposes fixed-size logical blocks addressed by LBA.
  • LBA: Logical Block Address. The number used to address a logical block.
  • Sector: Often used casually for a logical block, commonly 512 bytes or 4096 bytes.
  • NAND page: The small unit NAND can program/read.
  • Erase block: The larger NAND unit that must be erased before pages can be rewritten.
  • FTL: Flash Translation Layer. SSD firmware that maps host LBAs to flash locations.
  • Write amplification: Extra internal writes performed by the SSD beyond host writes.
  • TRIM/UNMAP: Host hint that logical blocks no longer contain useful data.
  • Power-loss protection: Hardware/firmware support for completing or preserving writes across power failure.

NVMe

  • Controller: NVMe device-side object that owns capabilities, queues, and namespaces.
  • Namespace: NVMe logical storage range exposed by a controller.
  • SQ: Submission Queue. Host memory ring where commands are placed.
  • CQ: Completion Queue. Host memory ring where completions are written.
  • Doorbell: MMIO register write telling the controller that a queue tail/head moved.
  • Phase bit: Completion queue wrap indicator used to distinguish old entries from new ones.
  • Admin queue: Queue pair used for controller management commands.
  • IO queue: Queue pair used for read/write/flush/dataset-management commands.
  • qpair: SPDK/NVMe shorthand for one submission queue and one completion queue.
  • ANA: Asymmetric Namespace Access, used in NVMe multipath accessibility reporting.

PCIe, DMA, VFIO

  • BDF: Bus:Device.Function PCI address.
  • BAR: Base Address Register, often mapping device MMIO registers.
  • MMIO: Memory-mapped IO, where device registers are accessed as memory addresses.
  • DMA: Direct Memory Access, where a device reads/writes host memory.
  • IOMMU: Hardware that translates and protects device DMA.
  • IOVA: IO virtual address used by a device/DMA mapping.
  • VFIO: Linux framework for safely assigning devices to userspace drivers.
  • Hugepage: Large memory page used to reduce translation overhead and support pinned DMA memory.

SPDK Runtime

  • Reactor: SPDK event loop usually pinned to a CPU core.
  • spdk_thread: Lightweight SPDK execution context, not the same thing as a POSIX thread.
  • Message: Function sent to an SPDK thread for execution on that thread.
  • Poller: Callback repeatedly or periodically run by an SPDK thread.
  • io_device: Object that can provide per-thread channel state.
  • io_channel: Thread-local resource bundle associated with an io_device.
  • NOMEM: SPDK pattern where an IO cannot allocate required resources and must be retried later.
  • No blocking rule: Reactor/poller code should not sleep or run slow blocking operations.

bdev

  • bdev: SPDK block device abstraction.
  • Descriptor: Open handle to a bdev, including access mode and event callback.
  • bdev channel: Per-thread IO channel for submitting to a bdev.
  • spdk_bdev_io: Object representing one bdev IO operation.
  • Module: Implementation provider for one or more bdevs.
  • Virtual bdev: bdev that transforms or stacks on top of other bdevs.
  • Claim: Ownership relationship used by a virtual module to protect a base bdev.
  • Examine: Process where modules inspect bdevs and discover metadata-backed virtual devices.
  • QoS: Rate limiting and scheduling controls around bdev IO.

Blobstore, lvol, RAID

  • Blobstore: SPDK allocator/object layer over a bdev.
  • Blob: Logical object managed by blobstore.
  • Cluster: Blobstore allocation unit.
  • Thin provisioning: Allocating physical storage only when data is written.
  • Snapshot: Read-only point-in-time parent for clone relationships.
  • Clone: Writable blob/lvol sharing data with a snapshot until overwritten.
  • External snapshot: Snapshot data provided by an external backing device.
  • lvstore: Logical volume store backed by blobstore.
  • lvol: Logical volume exposed as a blobstore-backed object.
  • RAID bdev: Virtual bdev combining multiple base bdevs.
  • Degraded: State where redundancy or required bases are missing but some operations may continue.

Transports And Exports

  • NVMe-oF: NVMe over Fabrics, carrying NVMe commands over transports such as RDMA or TCP.
  • NQN: NVMe Qualified Name.
  • Subsystem: NVMe/NVMe-oF object containing namespaces and host access policy.
  • Listener: Network address where an NVMe-oF subsystem accepts connections.
  • Poll group: Group of transport qpairs polled together.
  • vhost: Userspace backend for virtio queues, often used by QEMU.
  • vfio-user: Protocol for userspace device emulation over a socket, including NVMe-style exposure.

Control And Debugging

  • JSON-RPC: SPDK control-plane protocol for creating, deleting, querying, and configuring objects.
  • Config replay: Recreating runtime objects by replaying saved RPC-like configuration.
  • --wait-for-rpc: Startup mode where SPDK waits for RPC before continuing initialization.
  • Tracepoint: Low-overhead instrumentation point for debugging timing and state.
  • bdev stats: Counters and latency data exposed for bdevs.
  • Idempotency: Property where repeating a restore operation converges without harmful duplicates.

diskengine

  • Storage-node mode: diskengine mode that owns local NVMe/lvol storage and exports volumes.
  • Baremetal mode: diskengine mode that attaches remote storage and exposes it to local workloads.
  • Desired state: What diskengine's database says should exist.
  • Observed state: What SPDK and the host currently report.
  • Reconciliation: Loop that compares desired and observed state and safely converges them.