fazon - Fotolia

Avec NVMe over Fabrics, NVM Express se met au « SAN »

Récemment validée, la spécification NVMe over Fabrics, permet d'étendre les bénéfice de la norme NVMe aux périphériques de stockage Flash connectés en réseau. Elle ouvre la voie à la création de véritables architectures SAN à base de stockage non volatile à hautes performances.

NVM Express est un standard récent qui a été conçu pour accélérer l’accès aux données situées sur des supports à base de mémoire non volatile tels que des SSD. Approuvé en 2011, le standard a rapidement été adopté et est désormais largement utilisé par les fabricants de SSD, de serveurs et de systèmes de stockage.

NVMe libère la puissance du stockage Flash

Dans les PC et les serveurs, le protocole NVMe s’appuie sur le bus PCIe pour accéder au stockage Flash. En s’appuyant sur le second bus système de plus rapide des systèmes modernes (derrière le bus mémoire), les concepteurs du standard ont voulu réduire la latence d’accès aux données, mais aussi accroître le parallélisme (jusqu’à 64 000 files d’E/S en parallèle) et la performance. Le jeu de commande pour accéder aux données a aussi été adapté aux supports de stockage non volatile. L’ancien jeu de commande SCSI avait été imaginé pour gérer des supports rotatifs de type disques durs et était devenu un obstacle pour tirer parti des capacités intrinsèques du stockage Flash.

NVMe s’appuie sur un jeu de commandes considérablement réduit et simplifié par rapport au jeu de commande SCSI — avec trois commandes essentielles (Read, Write, Flush) pour l’accès aux données (et huit commandes optionnelles additionnelles) et 10 commandes d’administration obligatoire (plus 5 optionnelles). Il y a donc à l’extrême 26 commandes NVMe contre près de 200 commandes SCSI.

La mise en œuvre de NVMe dans les systèmes modernes a permis d’accroître sensiblement la performance d’accès aux données stockés sur les supports de stockage Flash PCIe, mais NVMe conservait une limitation. Du fait de sa dépendance au bus PCIe, il était jusqu’à très récemment impossible de bénéficier des gains induits par l’utilisation de NVMe hors desPC et serveurs. C’est cette limitation que veut faire disparaître NVMe over Fabrics (NVMf) en étendant l’usage du jeu de commandes NVMe hors des serveurs.

 NVMe over Fabrics : NVMe appliqué aux réseaux rapides

La spécification NVM Express over Fabrics définit une architecture permettant la mise en œuvre du jeu de commandes NVMe sur des réseaux de stockage rapides supportant le RDMA (InfiniBand, 10G/40G et 100G Ethernet) ou sur Fibre Channel (FC-NVMe). Sur des réseaux Ethernet, la mise en œuvre de NVMe over Fabrics nécessite le support d’une technologie RDMA, au choix RoCE (RDMA over Converged Ethernet) ou iWARP (internet Wide Area RDMA Protocol).

Modèle d'architecture de la pile NVMf

Les travaux sur la spécification NVMe over Fabrics ont débuté en 2014 et se sont achevés en juin 2016 avec la publication de la version 1.0 du standard. Le but de NVMe over Fabrics est de garantir que l’usage d’une fabric réseau n’ait pas plus de 10 microsecondes d’impact en termes latences sur le traitement d’une opération d’entrées/sorties, par rapport à l’usage de NVMe dans un serveur. Cette promesse est largement tenue par les premiers systèmes disponibles sur le marché comme ceux d’Apeiron, E8 Storage ou Mangstor.

De multiples possibilités d'utilisation

NVMe over Fabrics peut être utilisé à l’instar de Fibre Channel ou d’iSCSI pour relier des serveurs à des systèmes de stockage Flash rapides eux-mêmes équipés de disques NVMe. En adoptant une approche de ce type, il est possible comme actuellement de bâtir des systèmes de stockage centralisés, simples à administrer, mais offrant des performances similaires à celles que pourrait offrir des disques NVMe locaux aux serveurs. Seul souci, en l’état actuel de la technologie, il est difficile de combiner performances et services de stockage riches. La plupart des baies NVMe du marché offrent des performances élevées, des capacités basiques de gestion de volumes, mais aucun service de type snapshot, réplication ou clonage. Tous ces services doivent être délivrés au niveau des serveurs par une couche logicielle adaptée.

Un autre topologie possible est celle envisagée par Kaminario pour sa prochaine génération de baies Flash. L’idée est de construire une baie de stockage avec des contrôleurs distribués, eux-mêmes reliés via une fabric RDMA à des tiroirs de disques ou JBOD NVMf. Dans une telle architecture, chaque contrôleur dispose d’un accès de bout en bout ultra performant à l’ensemble des disques SSD NVMe installés dans les JBOD NVMf. Il devient donc possible, en agrégeant à la volée des disques non utilisés, de créer de multiples baies virtuelles avec les paramètres de capacités et de performances requis en fonction des besoins des applications. Les contrôleurs continuent à revanche à proposer des protocoles traditionnels pour l’accès aux données ce qui permet de maintenir une riche palette de services.

Architecture possible d'une future baie Flash avec des tiroirs de disques NVMe over fabrics

Les différences entre NVMe en local et NVMf

Pour l’essentiel, le protocole NVMe over Fabrics reprend les commandes de la spécification NVMe locale sur bus PCIe. Mais afin de gérer les différences entre le bus PCIe et une fabric réseau étendue, il a fallu procéder à des aménagements. Ces aménagements sont similaires dans leur principe à ceux qui avaient été apportés à SCSI pour permettre son fonctionnement sur des réseaux LAN (iSCSI). Ils sont résumés dans le tableau ci-dessous (source : NVM Express, Inc.)

Différences

PCI Express (PCIe) NVMe over Fabrics

Identifiant

Bus/équipement/Fonction

NVMe Qualified Name (NQN)

Découverte des
périphériques

Énumération des périphériques
sur le bus

Commande de découverte et de connexion

Mise en file des
commandes

 En mémoire

Via un système de messages

Transferts de données

PRPs ou SGLs

SGLs uniquement, clé additionnelle

 PRP (Physical Region Page) : adresse de page de mémoire physique (uniquement sur bus PCIe)

 SGL (Scatter-Gather List) : liste d’emplacements et de longueurs pour les requêtes en lecture ou écriture)

Pour transmettre les commandes NVMe et les réponses sur une fabric réseau, il a fallu adapter les mécanismes du protocole originel et s’appuyant sur un système de message pour encapsuler les commandes et les réponses NVMe. Le protocole prévoit l’usage d’un mécanisme de « capsules » qui contiennent une ou plusieurs commandes NVMe ou les réponses à ces commandes. Ces capsules sont indépendantes de la technologie de fabric utilisée.

Pour identifier les périphériques de stockage connectés à la fabric, NVMe over Fabrics a repris la convention d’adressage familière d’iSCSI. Le nom qualifié de chaque périphérique est ainsi semblable à un nom qualifié iSCSI (IQN).

NVMe over Fabrics est encore une spécification jeune, mais les premiers systèmes utilisant le standard on fait leur apparition sur le marché, souvent avec des éléments de drivers propriétaires. Comme à l’accoutumée, il faudra un peu de temps pour que les pilotes standards des systèmes d’exploitation mûrissent pour voir une adoption plus massive de la technologie. Cela veut sans doute dire que l’on verra des premiers usages en 2017, mais que l’adoption en masse de la technologie ne devrait vraiment se faire qu’à compter de 2018.

Pour approfondir sur Disques durs, SSD et Unités de stockage

Close