Résumé

  • NVM Express, Inc. est le consortium industriel à but non lucratif qui gouverne la famille de spécifications NVMe ; il ne fabrique ni SSD, ni contrôleur, ni baie de stockage.
  • NVMe a remplacé les hypothèses de files sérielles héritées des disques mécaniques par de nombreuses files de soumission et de complétion en mémoire, adaptées aux processeurs multicœurs et au parallélisme de la flash.
  • Le même modèle de contrôleur, de subsystem et de namespace peut fonctionner localement sur PCIe ou à distance à travers NVMe over Fabrics, avec des transports TCP et RDMA aux coûts différents.
  • La série NVMe 2.x est modulaire. Le jeu 2.4, publié le 4 août 2026 après ratification, comprend la Base, les transports PCIe/RDMA/TCP, NVMe-MI, Boot et plusieurs command sets spécialisés.
  • Le protocole rend capacité et accès plus composables. Il ne définit pas le filesystem, la durabilité, RAID, l’erasure coding, le réseau, la sécurité opérationnelle ou la cohérence de l’application.

Une commande de stockage peut quitter le serveur sans changer de langage fondamental

Une application peut émettre une lecture ou une écriture vers un namespace NVMe local relié par PCIe. Dans une architecture fabric, le même modèle de commande peut atteindre un subsystem distant par Ethernet ou un réseau RDMA. Le média, le contrôleur et le chemin changent ; la grammaire de stockage reste largement commune.

Cette continuité est la base de la désagrégation. Les opérateurs peuvent concentrer de la capacité dans des systèmes partagés et l’attacher à des hôtes selon la demande, au lieu de placer chaque appareil dans le châssis qui l’utilise.

Le déplacement ne supprime aucune dépendance. Il ajoute découverte, réseau, multipath, authentification, reconnexion et domaines de panne. NVMe transforme le stockage en service composable, pas en ressource sans topologie.

La flash avait besoin d’un protocole conçu pour le parallélisme

Les protocoles hérités des disques durs avaient été façonnés par la latence mécanique et des files plus étroites. La flash peut traiter de nombreuses opérations en parallèle, tandis que les serveurs modernes possèdent de nombreux cœurs.

NVMe utilise des paires de submission queues et completion queues en mémoire. Les applications ou pilotes placent les commandes, informent le contrôleur par des doorbells et récupèrent les complétions par interruption ou polling. Cette structure réduit les verrous partagés et permet de rapprocher les files des cœurs qui les utilisent.

Le bénéfice n’est pas automatique. Le firmware, la topologie PCIe, la mémoire NUMA, la profondeur de file, les interruptions et le workload déterminent la latence et le débit réels.

Le consortium sépare la gouvernance du protocole de la compétition entre produits

Le travail NVMe a commencé à la fin des années 2000 ; la version 1.0 est sortie en 2011 et NVM Express, Inc. a été constitué en 2014. Le consortium rassemble fabricants de plateformes, processeurs, contrôleurs, médias, réseaux et systèmes.

Au seuil de recherche, Amber Huffman de Google était présidente, Curtis Ballard d’AMD trésorier et David Allen de Microchip secrétaire. Treize représentants de membres promoteurs figuraient au conseil public.

Le consortium définit les contrats et programmes de conformité. Les membres continuent à se concurrencer sur le silicium, le firmware, le système, le support et les performances. La participation donne accès au processus ; elle ne prouve pas qu’un produit implémente chaque fonction.

NVMe 2.0 a transformé un document croissant en famille modulaire

À mesure que le protocole s’étendait à plusieurs transports et modèles de données, un seul document devenait difficile à maintenir. La restructuration 2.0 de 2021 a séparé la Base, les command sets et les transports.

Cette architecture permet à un transport TCP d’évoluer sans réécrire tout le command set, ou à Zoned Namespaces de progresser sans modifier chaque contrôleur conventionnel. Elle oblige toutefois les acheteurs à suivre plusieurs versions.

Le jeu NVMe 2.4, rendu public le 4 août 2026, regroupait Base 2.4, PCIe Transport 1.4, RDMA Transport 1.3, TCP Transport 1.3, NVMe-MI 2.2, Boot 1.4 et des command sets NVM, Key Value, Zoned Namespace, Computational Programs et Simple Log Memory. « NVMe 2.4 » désigne donc une collection coordonnée, pas un fichier unique.

Les files de soumission et de complétion rapprochent le travail du CPU

Une file de soumission contient des commandes écrites par l’hôte ; la file de complétion reçoit les résultats du contrôleur. Plusieurs paires peuvent être associées à des cœurs ou à des applications, ce qui réduit la contention.

Les doorbells signalent les nouveaux éléments. Le contrôleur peut générer des interruptions ou l’hôte peut poller. Le polling réduit parfois la latence au prix d’une consommation CPU plus élevée. La coalescence des interruptions réduit le coût mais peut ajouter un délai.

La profondeur de file n’est pas une mesure de performance universelle. Des files trop profondes augmentent l’attente et la latence de queue. Des files trop courtes peuvent sous-utiliser l’appareil. L’exploitation doit choisir selon le workload.

Controllers, subsystems et namespaces séparent endpoint logique et média

Un controller expose des queues et des commandes. Un subsystem peut contenir plusieurs controllers. Les namespaces représentent des espaces de stockage logiques qui peuvent être partagés, redimensionnés ou accessibles par plusieurs chemins.

Cette abstraction évite de confondre un SSD physique avec l’identité que voit l’hôte. Un subsystem distant peut agréger de nombreux médias et présenter des namespaces stables.

Le protocole ne décide pas comment les données sont placées, répliquées ou protégées. RAID, erasure coding, thin provisioning et cohérence restent des fonctions du système entourant NVMe.

Les commandes administratives sont aussi importantes que les entrées-sorties

Une admin queue gère identification, création de queues, features, logs, firmware, namespaces et sécurité. Ces commandes contrôlent l’environnement dans lequel les lectures et écritures ordinaires deviennent possibles.

Une erreur administrative peut supprimer un namespace, activer un mauvais firmware ou modifier une configuration de puissance. Les permissions, audits et fenêtres de changement sont donc essentielles.

La séparation admin/I/O facilite l’architecture, mais ne rend pas le plan de contrôle moins critique. Dans un fabric, ces commandes passent parfois sur le même réseau que les données.

PCIe maintient le chemin local proche de la mémoire et du matériel

NVMe over PCIe utilise des structures mémoire partagées et des registres du contrôleur sur le bus local. Il offre un chemin direct adapté aux SSD et cartes installés dans le serveur.

La proximité physique ne garantit pas une topologie simple. Un appareil peut se trouver derrière un switch PCIe, sur un autre socket NUMA ou partager des lanes. Le placement du processus, de la mémoire et de l’appareil influence la performance.

Les systèmes doivent donc inventorier le chemin PCIe, pas seulement compter les drives. Une latence inattendue peut venir de la topologie du serveur avant même d’atteindre le média.

NVMe over Fabrics transforme une relation locale en service réseau

NVMe-oF, dont la première version est sortie en juin 2016 avec NVMe-MI 1.0, transporte des capsules de commandes et des données vers un subsystem distant. L’hôte établit des queues au travers d’un fabric et voit des namespaces réseau.

La séparation permet de mutualiser capacité et performance. Des hôtes peuvent être remplacés sans déplacer les données, et des systèmes peuvent fournir des ressources à plusieurs clusters.

Elle crée de nouveaux points de défaillance : NIC, switch, route, discovery, contrôleur, authentification et politique de multipath. Le stockage devient dépendant du réseau comme d’un composant de données, pas seulement de connectivité.

Les discovery controllers rendent les fabrics dynamiques et concentrent une fonction critique

Un hôte peut interroger un discovery controller pour obtenir les subsystems et adresses disponibles. Cela évite de configurer manuellement chaque chemin et permet d’ajouter ou retirer des services.

La découverte peut toutefois devenir une dépendance centrale. Une donnée erronée peut orienter l’hôte vers le mauvais target ou empêcher une connexion. Les caches, la redondance, la validation et la protection de l’identité sont nécessaires.

Le discovery service ne doit pas être confondu avec la disponibilité du stockage lui-même. Un hôte déjà connecté peut continuer, tandis qu’un nouvel hôte échoue à découvrir le service.

NVMe/TCP a rendu le fabric accessible sur des réseaux IP ordinaires

Le transport TCP, normalisé en 2019, mappe commandes et données NVMe sur des connexions TCP. Les opérateurs peuvent utiliser Ethernet routé, outils IP, firewalls et pratiques de réseau familières sans construire un fabric RDMA.

Cette accessibilité a un coût. La pile TCP, les copies, les interruptions et le CPU peuvent ajouter overhead et tail latency. Les optimisations du kernel, l’offload et la taille des transferts influencent fortement le résultat.

Le transport ajoute aussi des contrôles spécifiques de framing et de digest pour détecter des corruptions. TLS peut protéger la session lorsque la mise en œuvre et la politique le prévoient.

NVMe/RDMA vise une faible latence au prix d’une discipline de fabric

RDMA permet de déplacer commandes et données avec moins d’intervention CPU et d’utiliser des queue pairs, de l’enregistrement mémoire et des capacités NIC. Il convient aux environnements où les microsecondes et les cycles CPU comptent.

RDMA n’est pas un fabric unique. RoCE, iWARP et d’autres bindings ont des comportements et exigences différents. La congestion, les pertes, le PFC ou ECN, la configuration des NIC et la mémoire enregistrée doivent être compris.

Un benchmark faible-latence ne prouve pas que l’exploitation sera simple. Les erreurs de fabric peuvent se manifester comme des timeouts de stockage et demander des compétences croisées réseau-système.

Multipath transforme la redondance en décision de l’hôte

Un namespace peut être accessible par plusieurs controllers et chemins. Le système hôte choisit comment équilibrer ou basculer. Asymmetric Namespace Access indique quels chemins sont optimisés, non optimisés ou indisponibles.

La présence de deux liens ne garantit pas l’indépendance. Ils peuvent partager switch, alimentation, controller ou route. Les opérateurs doivent tester la perte de chaque élément et vérifier la réaction du host multipath.

Une mauvaise politique peut envoyer du trafic sur un chemin lent ou maintenir une route défaillante trop longtemps. La redondance doit être observée comme comportement, pas inventoriée comme nombre.

Les reservations coordonnent l’accès partagé sans remplacer le consensus de cluster

NVMe reservations permettent à des hôtes de s’enregistrer et de réserver un namespace afin d’éviter des écritures concurrentes non autorisées. Elles sont utiles dans les clusters et les scénarios de failover.

Elles ne remplacent pas un protocole de consensus ni la cohérence de l’application. Un hôte défaillant peut laisser un état de réservation à nettoyer, et la reprise doit éviter qu’un ancien nœud continue d’écrire.

La récupération nécessite fencing, génération et vérification de l’identité. Une reservation mal gérée peut transformer une mesure de protection en indisponibilité.

Authentification et TLS deviennent nécessaires lorsque le stockage quitte PCIe

Un appareil local héritait souvent d’une frontière physique implicite. Sur un fabric, un initiator et un target doivent prouver leur identité et protéger les canaux appropriés.

NVMe définit des mécanismes d’authentification, et NVMe/TCP peut utiliser TLS. Leur valeur dépend des clés, certificats, renouvellements, algorithmes et politiques d’accès. Un transport qui prend en charge TLS n’est pas nécessairement configuré pour l’utiliser.

Le plan de découverte, le plan administratif et le plan de données doivent être considérés ensemble. Une identité correctement authentifiée peut toujours disposer de droits trop larges.

NVMe-MI donne un chemin de gestion séparé des I/O applicatives

NVMe Management Interface permet aux outils de découvrir et gérer des subsystems, lire la santé, inventorier des appareils et effectuer certaines opérations même lorsque le chemin I/O principal n’est pas utilisé.

Cette séparation aide la maintenance et la récupération. Elle ajoute aussi un second plan de contrôle à sécuriser. Un outil de gestion peut lire des données sensibles ou modifier des composants à grande échelle.

NVMe-MI peut s’intégrer aux systèmes Redfish et à d’autres modèles de gestion. L’intégration ne supprime pas les frontières de responsabilité entre consortiums et fournisseurs.

Zoned Namespaces expose les contraintes du média à l’hôte

ZNS divise la capacité en zones écrites de manière séquentielle. En donnant au logiciel une visibilité sur l’organisation du média, il peut réduire certains travaux internes de garbage collection et améliorer l’endurance ou la prévisibilité.

L’avantage exige que le filesystem, la base ou la couche de stockage comprenne les zones. Une application conçue pour un block device conventionnel ne bénéficie pas automatiquement du modèle.

ZNS illustre la tension de NVMe : exposer davantage de comportement peut améliorer l’efficacité, mais augmente les exigences de portabilité pour le logiciel.

Key Value, Simple Log Memory et Computational Programs élargissent le namespace

Les command sets spécialisés permettent d’accéder à des clés/valeurs, à une mémoire de journal simple ou à des programmes de calcul exécutés près du stockage. Ils cherchent à réduire les traductions et les mouvements de données pour certains workloads.

Leur adoption dépend des contrôleurs, pilotes, bibliothèques et applications. Un command set dans la spécification n’est pas une fonction universelle de tous les SSD ou arrays.

Plus le protocole offre de modèles, plus le logiciel doit découvrir précisément les capacités et disposer d’un chemin de repli. La modularité technique crée une nouvelle matrice commerciale.

La conformité fournit une preuve utile sans certifier la performance de bout en bout

Les programmes et ateliers d’interopérabilité vérifient des comportements précis entre hosts et controllers. Ils détectent des écarts que la lecture de la spécification ne révèle pas.

Une liste de conformité ne mesure pas la latence, l’endurance, la récupération ou la sécurité dans chaque topologie. Les fonctions optionnelles peuvent différer et la matrice driver-firmware évolue.

Les acheteurs doivent traiter la conformité comme un plancher et tester leur workload, leurs pannes et leur cycle d’upgrade.

NVMe a séparé la capacité du serveur et déplacé la responsabilité

Le stockage local associait souvent l’appareil, le host et l’équipe système. La désagrégation permet de partager un pool entre de nombreux consommateurs et de changer l’allocation par logiciel.

Elle fait intervenir équipes réseau, storage, plateforme, sécurité et application dans le même incident. Une dégradation du fabric peut apparaître comme un problème de base de données ; un firmware controller peut sembler être une perte réseau.

Le gain économique dépend donc de l’utilisation de la capacité et de la capacité d’exploitation, pas seulement du prix par téraoctet.

L’IA rend la latence du stockage visible comme coût de compute

Les entraînements écrivent des checkpoints, chargent des datasets et déplacent des états à grande échelle. Lorsque des milliers d’accélérateurs attendent, une variation de stockage peut gaspiller un investissement informatique important.

NVMe/TCP, RDMA, multipath et namespaces partagés donnent plusieurs architectures possibles. Le choix doit considérer congestion, topologie, débit, métadonnées, recovery et comportement de queue.

L’objectif n’est pas seulement un benchmark maximal, mais une latence de queue et de reprise prévisible pendant des opérations synchronisées.

Le jeu 2.4 montre à la fois l’étendue et la pression de version

NVMe 2.4 coordonne Base, transports, Boot, Management Interface et command sets spécialisés. Cette ampleur montre que NVMe est devenu une pile, pas un simple connecteur de SSD.

Elle complique les déclarations de support. Un host peut prendre en charge Base 2.4 sans supporter chaque command set ou chaque fonction de sécurité. Un controller peut offrir TCP sans les mêmes capacités qu’un produit RDMA.

Le suivi doit porter sur les versions de driver, firmware, OS, transport et outil de gestion. Dans la pratique, cette matrice fait partie du protocole.

NVMe a rendu le stockage composable sans rendre le service simple

Le protocole commun réduit un coût de changement : le modèle de commande peut survivre au passage de PCIe à un fabric ou d’un fournisseur à un autre. D’autres coûts restent : migration de données, identité de namespace, politique de sécurité, réseau, observabilité et support.

L’avantage stratégique est une séparation plus nette entre protocole et produit. Le risque est de cacher une architecture complexe derrière le même nom NVMe.

Le stockage devient programmable et distribuable. Il ne cesse pas d’être un système d’intégrité dont chaque couche doit être comprise sous panne.