En juin, nous avons assisté à une mise à jour de la norme NVMe. La mise à jour définit une interface logicielle pour aider à lire et à écrire sur les disques de manière à ce que les disques SSD et NAND flash fonctionnent réellement.

Au lieu d’émuler le modèle de périphérique bloc traditionnel dont les SSD ont hérité des disques durs et des technologies de stockage antérieures, la nouvelle fonctionnalité optionnelle NVMe Zoned Namespaces permet aux SSD d’implémenter une abstraction de stockage différente sur la mémoire flash. Ceci est assez similaire aux extensions que SAS et SATA ont ajoutées pour accueillir les disques durs Shingled Magnetic Recording (SMR), avec quelques extras pour les SSD. Les disques SSD «zonés» dotés de cette nouvelle fonctionnalité peuvent offrir de meilleures performances que les disques SSD classiques, avec moins de surprovisionnement et moins de DRAM. L’inconvénient est que les applications et les systèmes d’exploitation doivent être mis à jour pour prendre en charge le stockage zoné, mais ce travail est bien engagé.

La spécification des espaces de noms zonés (ZNS) NVMe a été ratifiée et publiée en tant que proposition technique. Il s’appuie sur la spécification NVMe 1.4a actuelle, en préparation pour NVMe 2.0. La prochaine spécification NVMe 2.0 intégrera toutes les propositions techniques approuvées, mais réorganisera également cette même fonctionnalité en plusieurs documents de composants plus petits: une spécification de base (une pour chaque jeu de commandes de bloc, de zone, de valeur-clé, et potentiellement plus à l’avenir) et des spécifications distinctes pour chaque protocole de transport (PCIe, RDMA, TCP). La standardisation des espaces de noms zonés ouvre la voie à une commercialisation et à une adoption plus larges de cette technologie, qui jusqu’à présent a été freinée par des interfaces de stockage zonées spécifiques aux fournisseurs et des choix de matériel très limités.

Stockage zoné: un aperçu

Le défi fondamental de l’utilisation de la mémoire flash pour un disque SSD est que tous nos ordinateurs sont construits autour du concept de fonctionnement des disques durs et que la mémoire flash ne se comporte pas comme un disque dur. La mémoire flash est organisée très différemment d’un disque dur, et l’optimisation de nos ordinateurs pour les caractéristiques de performances améliorées de la mémoire flash en vaudra la peine.

Les plateaux magnétiques sont un support de stockage assez analogique, sans structure inhérente pour dicter des fonctionnalités telles que la taille des secteurs. La norme de longue durée des secteurs de 512 octets a été choisie uniquement pour des raisons de commodité, et les disques d’entreprise prennent désormais en charge les secteurs de 4 Ko à mesure que nous atteignons des capacités de disque de plusieurs To. En revanche, une puce de mémoire flash a plusieurs niveaux de structure intégrés dans la conception. Les chiffres les plus importants sont la taille de la page et la taille du bloc d’effacement. Les données peuvent être lues avec une granularité de taille de page (généralement de l’ordre de plusieurs Ko) et une page vide peut être écrite avec une opération de programme, mais les opérations d’effacement effacent un bloc de plusieurs Mo entier. Le décalage de taille substantiel entre les opérations de lecture / programme et les opérations d’effacement est une complication que les disques durs mécaniques ordinaires n’ont pas à gérer. L’endurance limitée du cycle programme / effacement de la mémoire flash ajoute également au défi, car écrire moins de fois augmente la durée de vie.

Aujourd’hui, presque tous les SSD sont présentés au logiciel comme une abstraction d’un simple périphérique de stockage par blocs de type HDD avec des secteurs de 512 octets ou de 4 Ko. Cela masque toutes les complexités des disques SSD que nous avons détaillées au fil des ans, telles que la taille des pages et des blocs d’effacement, le nivellement de l’usure et le ramassage des ordures. Cette abstraction explique également en partie pourquoi les contrôleurs et micrologiciels SSD sont tellement plus gros et plus compliqués (et plus sujets aux bogues) que les contrôleurs de disque dur. Dans la plupart des cas, l’abstraction des périphériques par blocs est toujours le bon compromis, car elle permet aux logiciels non modifiés de profiter de la plupart des avantages de performance de la mémoire flash, et les inconvénients tels que l’amplification en écriture sont gérables.

Depuis des années, l’industrie du stockage explore des alternatives à l’abstraction du stockage par blocs. Il y a eu plusieurs propositions pour les disques SSD Open Channel, qui exposent de nombreux détails sanglants de la mémoire flash directement au système hôte, transférant de nombreuses responsabilités du micrologiciel SSD vers des logiciels exécutés sur le processeur hôte. Les différentes normes de SSD à canal ouvert qui ont été promues ont trouvé des équilibres différents le long du spectre, entre un SSD typique avec une couche de traduction flash (FTL) entièrement gérée par lecteur et une solution entièrement gérée par logiciel. Le consensus de l’industrie était que certaines des premières normes, comme la spécification LightNVM 1.x, exposaient trop de détails, exigeant que le logiciel gère certaines différences entre la mémoire flash de différents fournisseurs, ou entre SLC, MLC, TLC, etc. a cherché à trouver un meilleur équilibre et un niveau d’abstraction qui permettra une adoption de masse plus facile tout en permettant au logiciel de contourner les inefficacités d’un SSD typique.

En s’attaquant au problème dans l’autre sens, la norme NVMe a gagné des fonctionnalités qui permettent aux lecteurs de partager plus d’informations avec l’hôte sur les modèles optimaux d’accès aux données et de mise en page. Pour la plupart, ce sont des conseils et des fonctionnalités optionnelles dont le logiciel peut tirer parti. Cela fonctionne car les logiciels qui ne connaissent pas ces fonctionnalités fonctionneront toujours comme d’habitude. Des directives et des flux, des ensembles NVM, un mode de latence prévisible et divers indices d’alignement et de granularité ont tous été ajoutés au cours des dernières révisions de la spécification NVMe pour permettre aux logiciels et aux SSD de mieux coopérer.

Dernièrement, une troisième approche prend de l’ampleur, influencée par le marché des disques durs. L’enregistrement magnétique en bardeaux (SMR) est une technique permettant d’augmenter la densité de stockage en superposant partiellement les pistes sur les plateaux de disque dur. L’inconvénient de cette approche est qu’il n’est plus possible de modifier directement des octets arbitraires de données sans corrompre les pistes adjacentes qui se chevauchent, de sorte que les disques durs SMR regroupent les pistes en zones et n’autorisent que les écritures séquentielles dans une zone. Cela a de graves conséquences sur les performances des charges de travail qui incluent des écritures aléatoires, ce qui explique en partie pourquoi les disques durs SMR gérés par lecteur ont au mieux connu une réception mitigée sur le marché. Cependant, sur le marché du stockage sur serveur, le SMR géré par l’hôte est également une option viable: il nécessite que le système d’exploitation, le système de fichiers et potentiellement le logiciel d’application soient directement conscients des zones, mais apporter les modifications logicielles nécessaires n’est pas un défi insurmontable lorsque vous travaillez avec un environnement contrôlé.

Le modèle de stockage zoné utilisé pour les disques durs SMR s’avère également être un bon choix pour une utilisation avec flash, et est un précurseur des espaces de noms zonés NVMe. La structure de type zone des disques durs SMR reflète la structure de page et de bloc d’effacement d’un SSD. Les restrictions sur les écritures ne correspondent pas exactement, mais elles s’en rapprochent suffisamment.

Dans cet article, nous expliquerons ce que sont les espaces de noms zonés NVMe et pourquoi une chose importante.