L'Organisation Linux Foundation a présenté la première version d'une plateforme ouverte pour les périphériques de stockage Flash gérés par logiciel (SEF), construite à partir du code fourni par KIOXIA (anciennement Toshiba Memory Corporation), où la mémoire Flash a été inventée en 1980. Les sources de l'outil sont écrites en langage C et sont distribuées sous licence BSD.
L'outil comprend un ensemble de patches pour le noyau Linux, un pilote de blocs pour les dispositifs SEF (Software Enabled Flash), des utilitaires de gestion depuis la ligne de commande, des pilotes SEF paravirtualisés pour QEMU, une bibliothèque avec API pour le développement d'applications, et des patches pour nvme-cli et FIO, ajoutant le support SEF. Le SDK inclut également une implémentation de référence du niveau logiciel FTL (Flash Translation Layer), qui fournit la traduction des commandes des périphériques de blocs en appels aux véritables puces de mémoire Flash, la collecte des déchets et la répartition des données dans les cellules de mémoire. Le FTL implémente le support de la placement flexible des données (FDP - Flexible Data Placement), de l'espace zoné (ZNS - Zoned Namespace) et des spécifications NVMe.
Dans les Flash traditionnels pour systèmes externes, le stockage fonctionne comme une boîte noire, une partie de la mémoire étant réservée pour des opérations de maintenance, les performances étant inégales et des latences imprévisibles pouvant survenir en raison de l'activité interne du contrôleur, par exemple, lors de la collecte des déchets. Contrairement aux disques Flash classiques, dans lesquels la gestion des données, l'isolation des blocs défaillants et la collecte des déchets sont assurées par le firmware du contrôleur, les dispositifs prenant en charge SEF permettent de transférer la logique de gestion de bas niveau de la puce de mémoire Flash côté logiciel et système d'exploitation.
SEF permet de gérer directement le placement physique des données, de changer les algorithmes de répartition de la charge, de gérer les priorités et le QoS, d'éliminer une couche supplémentaire de traduction des blocs, d'utiliser toute la mémoire disponible, d'assurer un fonctionnement prévisible avec le stockage et de diviser le stockage en dispositifs virtuels isolés au niveau des entrées/sorties et ayant différentes priorités de traitement. L'approche proposée par SEF permet de réduire les coûts généraux et d'améliorer l'efficacité de l'interaction avec le stockage grâce à une adaptation aux besoins actuels de la logique de collecte des déchets, de réservation de mémoire et de répartition des blocs pour réduire l'usure.
Par exemple, SEF permet de normaliser la performance dans des conditions d'utilisation d'un ensemble de disques durs achetés à des moments différents avec des caractéristiques distinctes. Pour les disques principalement utilisés uniquement pour la lecture, SEF permet d'utiliser des algorithmes plus simples de répartition des blocs et de réduire la mémoire réservée à des fins de service.
Source : opennet.ru
