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.