STO-110 · Storage & Filesystems · Advanced

NVMe & NVMe-oF — full syllabus

NVMe as a protocol and as a driver, including fabrics for disaggregated storage.

Duration3 full days in person · 6 half-days online
Cohortmax 14 in person · 20 online
Pricefrom SAR 9,000 in person · local pricing per city
Delivery35% principles · 20% guided investigation · 45% engineering studio

Who this course is for

Storage and platform engineers running NVMe flash in production — especially those moving to disaggregated storage over NVMe-oF who need to debug the device, not just the dashboard.

Prerequisites

Course outline

Day 1 — The protocol and the Linux driver

  • Why AHCI could not scale: the NVMe design goals
  • Submission and completion queue pairs, doorbells and the command lifecycle
  • The Linux nvme driver: queue mapping onto blk-mq, per-core I/O queues
  • Admin vs I/O commands; identify data and log pages
  • nvme-cli and /dev/nvmeXnY: talking to the device directly

Day 2 — Namespaces, multipath and latency

  • Namespaces as independent LUNs; formats and LBA sizes
  • Native NVMe multipath and ANA (asymmetric namespace access) states
  • Interrupt coalescing vs polling: where the microseconds go
  • Latency tuning: queue depth, IRQ affinity and driver knobs
  • Reading device latency and error logs before blaming the kernel

Day 3 — NVMe over Fabrics

  • The fabrics model: capsules and queue pairs over a network
  • NVMe/TCP vs NVMe/RDMA: what each costs and what each buys
  • Setting up target and initiator (nvmet, nvme connect)
  • Discovery controllers and persistent connections
  • Diagnosing fabric latency: separating network time from device time
  • Error handling, keep-alives and controller reset behaviour

Hands-on labs

  1. Lab: interrogate a device with nvme-cli — identify controller, namespaces and log pages — and map its queues to CPUs through sysfs
  2. Lab: benchmark the same device with interrupts vs polled I/O and quantify the tail-latency difference
  3. Lab: configure native multipath across two paths and observe ANA state transitions during a path failure
  4. Lab: stand up an NVMe/TCP target, connect an initiator, and benchmark it against local access — then explain the delta
  5. Lab: inject a device-level error (reset, timeout) and follow it through dmesg, the error log page and recovery

Capstone project

Build and defend a small disaggregated setup: an NVMe-oF target exported to an initiator host, multipathed where the testbed allows, with a benchmark report that separates network latency from device latency and a written diagnosis procedure for the three failures you induced and observed yourself.

What you leave with

Upcoming dates

DatesWhereSeatsEarly birdRegular
25 Oct – 27 Oct 20263 full days RiyadhIn person · KAFD Conference Centre 8 of 14 —SAR 9,000
1 Nov – 3 Nov 20263 full days Kuwait CityIn person · Al Hamra Tower 3 of 14 —KWD 740
8 Nov – 10 Nov 20263 full days MuscatIn person · Knowledge Oasis Muscat 8 of 14 OMR 830until 9 OctOMR 920
8 Nov – 15 Nov 20266 half-days Gulf bandLive online · 09:00–13:00 GMT+3 4 of 20 US$1,580until 9 OctUS$1,750
9 Nov – 11 Nov 20263 full days OttawaIn person · Kanata North Tech Park 3 of 14 CAD 2,930until 10 OctCAD 3,260
16 Nov – 18 Nov 20263 full days TorontoIn person · MaRS Discovery District 8 of 14 CAD 2,930until 17 OctCAD 3,260
16 Nov – 23 Nov 20266 half-days Europe bandLive online · 09:00–13:00 CET 9 of 20 US$1,580until 17 OctUS$1,750
23 Nov – 25 Nov 20263 full days LondonIn person · Shoreditch Works 3 of 14 GBP 1,680until 24 OctGBP 1,870
23 Nov – 25 Nov 20263 full days BerlinIn person · Factory Görlitzer Park 8 of 14 EUR 1,990until 24 OctEUR 2,210
23 Nov – 30 Nov 20266 half-days Americas bandLive online · 13:00–17:00 ET 14 of 20 US$1,580until 24 OctUS$1,750

Book a seat, or bring this course to your team

Seats can be reserved online; private delivery runs on-site or live online, adapted to your stack.

Course page & booking

Questions about fit or prerequisites? Email hello@kernelsystems.academy. To save this syllabus, print this page to PDF from your browser.