Cet article en 2 parties vise à démystifier NVMe afin que tout le monde puisse suivre une conversation IT autour du stockage. Vous l’avez certainement observé dernièrement dans la presse la plupart des constructeurs commencent à aborder sérieusement le sujet.

Dans cette première partie (1/2) j’expliquerai qu’est-ce que NVME et dans la deuxième (2/2) la Fabric NVMe-oF et ses champs d’applications.

C’est parti, NVMe remplace les protocoles SCSI et SAS pour le stockage Flash et NVMe over Fabrics vise à devenir le standard dans les déploiements réseau High-End pour le transport de données.

Les réseaux de stockage (SAN) ont commencé à devenir populaires à la fin des années 1990 et au début des années 2000 avec l’adoption généralisée de la technologie Fibre Channel. Pour ceux qui ne voulaient pas investir dans l’installation d’un réseau dédié Fibre Channel, le protocole iSCSI fut une alternative Ethernet moins couteuse quelques années plus tard. Les deux transports s’appuient sur l’utilisation de SCSI comme protocole de stockage pour la communication entre les « initiator » (source) et « target » (cible) stockage.

Au fur et à mesure que l’industrie du stockage évolue pour adopter le flash comme média persistant, nous commençons à voir les limites des performance SCSI. Cela a conduit au développement de NVMe, ou Non-Volatile Memory express, un nouveau protocole qui vise à surpasser SCSI et à résoudre les problèmes de performance. Penchons-nous sur les différences de NVMe face aux autres protocoles. Nous allons également explorer comment NVMe over Fabrics va changer le paysage des réseaux de stockage.

Comment en sommes-nous arrivés là ?

La technologie SAN (Storage Area Network) repose sur l’évolution du matériel de stockage et la nécessité d’un stockage centralisé et consolidé. Nous pouvons retrouver les origines du Fibre Channel sur l’ESCON dans les environnements mainframe, un protocole de connexion basé sur la fibre optique (Fiber-based). SCSI, d’autre part, provient de la connexion physique des disques durs dans les serveurs.

Si si, souvenez-vous…

SCSI était à l’origine un protocole de communication parallèle. Tous ceux, familiers avec l’installation des disques dans les serveurs, se souviennent des « nappes ». Puis une transition s’est naturellement opérée vers une interface série avec le développement du SAS. L’homologue PC était Advanced Host Controller Interface (AHCI) finalement devenu SATA. Vous trouvez les deux protocoles sur les disques durs – mécaniques – actuels (HDD) et les disques SSD.

« Fibre Channel » ou Ethernet fournissent la connectivité physique entre les serveurs et le stockage, encapsulant SCSI en tant que protocole de communication stockage. Cependant, l’industrie a développé SCSI pour fonctionner avec les disques durs (lents) dont les temps de réponse sont à des années lumières de celle de la mémoire RAM (DDR4 = 13 ns) et des processeurs (cache L1 < 1 ns).

En conséquence, bien que nous pensions tous que les SSD sont rapides, nous voyons de sérieux problèmes de performance avec les SSD internes (dans le serveur). La plupart des disques SATA sont toujours basés sur la spécification SATA 3.0 avec une limite d’interface de débit de 6 Gbps et 600 Mo. La plupart des disques SAS ont commencé à passer à SAS 3.0, qui offre un débit de 12 GBps, mais beaucoup utilisent encore une connectivité de 6 Gbps.

« Le plus grand apport de NVMe est d’optimiser le protocole de stockage. »

Le problème du SAS et du SATA est leur capacité à gérer des E/S simultanées sur un seul périphérique. Regardez la géométrie d’un disque dur (cylindre/piste/plateau/tête), et il est facile de comprendre que c’est mission impossible de délivrer de trop nombreuses demandes d’E/S simultanées. Sur les disques de grande densité, les têtes de lecture/écriture peuvent s’aligner pour de multiples requêtes. L’utilisation d’un cache est une option mais qui n’est pas évolutive. Ni le SAS, ni le SATA n’ont été conçus pour gérer plusieurs files d’E/S. AHCI a une seule file d’attente avec une profondeur de seulement 32 commandes. SCSI est meilleur et offre une seule file d’attente avec des commandes de 128 à 256 (selon implémentation).

Les files d’attente individuelles affectent négativement la latence. À mesure que la taille de la file d’attente augmente, les nouvelles demandes affichent une latence accrue car elles doivent attendre que d’autres demandes soient complétées. Il s’agissait moins d’un problème avec les disques durs, mais une seule file d’attente est un gros goulot d’étranglement avec des médias SSD où il n’y a pas de pièces mobiles et la latence d’E/S individuelle est faible.

NVMe s’est imposé naturellement

La réponse de l’industrie au problème d’interface est NVMe en remplacement du protocole SCSI, tant sur le périphérique que sur le réseau. NVMe utilise le bus PCIe, plutôt qu’un bus de stockage dédié, pour fournir une plus grande bande passante et une latence inférieure aux périphériques eux-mêmes. Par exemple le PCIe 3.0 x16 dispose d’une bande passante d’environ 16 Go/s par périphérique.

Le plus grand apport de la technologie NVMe est l’optimisation du protocole de stockage. L’impact de la « sérialisation » des E/S a été réduit, tandis que l’efficacité de la gestion des interruptions a augmenté. En outre, NVMe prend en charge jusqu’à 65 535 files d’attente, chacune avec une profondeur de 65 535 entrées. Donc, plutôt que d’avoir une seule file d’attente, NVMe fournit un parallélisme massif pour les E/S. Dans les environnements informatiques modernes où tant de travail est fait en parallèle – pensez au nombre de Core dans les CPU modernes – nous voyons les avantages d’avoir des périphériques de stockage capables de traiter plusieurs files d’E/S et comment cela améliorera le débit d’E/S. Tout ceci est logique et plein de sens.

 

________
Mike Uzan est Storage evangelist à Kaminario corp