Mikuláš Patočka, l'un des développeurs de LVM et auteur de plusieurs , liées à l'optimisation des systèmes de stockage, travaillant chez Red Hat, a annoncé sur la liste de diffusion des développeurs du noyau Linux un nouveau système de fichiers , visant à créer un système de fichiers compact et rapide pour les puces de mémoire non volatile (NVM, non-volatile memory, par exemple NVDIMM), combinant la performance de la RAM avec la possibilité de stockage permanent du contenu.
Dans le développement de NVFS, l'expérience du système de fichiers , créé en 2017 spécifiquement pour la mémoire NVM, mais non intégré dans le noyau Linux et au support des noyaux Linux de 4.13 à 5.1.
Le système de fichiers proposé NVFS est nettement plus simple que NOVA (4972 lignes de code contre 21459), fournit un utilitaire fsck, offre des performances supérieures, prend en charge les attributs étendus (xattrs), les étiquettes de sécurité, les ACL et les quotas, mais ne prend pas en charge les snapshots. NVFS est proche de
Ext4 et s'intègre bien dans le modèle des systèmes de fichiers basés sur la sous-système VFS, ce qui permet de minimiser le nombre de couches et de fonctionner avec un module ne nécessitant pas de patchs dans le noyau.
NVFS utilise l'interface du noyau pour un accès direct aux dispositifs de mémoire persistante hors du cache de pages. Pour optimiser l'utilisation de la mémoire NVM, où l'adressage par octets est appliqué, le contenu du stockage est mappé dans l'espace d'adresses linéaires du noyau sans utiliser le niveau traditionnel des dispositifs de blocs et du cache intermédiaire. Pour le stockage du contenu des répertoires, on utilise dans lequel chaque nom de fichier est haché et la valeur du hachage est utilisée lors de la recherche dans l'arbre.
L'intégrité des données est assurée par un mécanisme de «» (comme dans UFS de FreeBSD et dans FFS d'OpenBSD) sans utilisation de journalisation. Pour éviter la corruption des fichiers dans NVFS, les opérations de modification des données sont regroupées de sorte qu'un crash ne puisse pas entraîner la perte de blocs ou d'inodes, et l'intégrité des structures est restaurée grâce à l'outil fsck. L'outil fsck fonctionne en mode multithread et assure des performances à un niveau de 1,6 million d'inodes par seconde.
Dans NVFS a réalisé l'opération de copie de l'arbre avec les textes sources du noyau Linux dans la mémoire NVM environ 10 % plus rapidement que NOVA, 30 % plus vite que ext4 et 37 % plus vite que XFS. Dans le test de recherche de données, le système de fichiers NVFS s'est avéré plus rapide que NOVA de 3 %, et que ext4 et XFS de 15 % (mais lors de l'utilisation d'un cache disque actif, NOVA a été 15 % plus lente).
Lors du test d'un million d'opérations avec des répertoires, NVFS a devancé NOVA de 40 %, ext4 de 22 %, et XFS de 46 %. En simulant l'activité d'une base de données, le système de fichiers NVFS a surpassé NOVA de 20 %, ext4 de 18 fois et XFS de 5 fois. Dans le test fs_mark, les performances de NVFS et NOVA se sont révélées à peu près au même niveau, tandis que ext4 et XFS ont été environ 3 fois plus lentes.
Le retard des systèmes de fichiers traditionnels sur la mémoire NVM est dû au fait qu'ils ne sont pas conçus pour l'adressage au niveau des octets, utilisé dans la mémoire non volatile, qui ressemble à de la RAM classique. La lecture à partir de disques traditionnels garantit l'atomicité de l'opération au niveau de la lecture/écriture du secteur, tandis que la mémoire NVM permet l'accès au niveau de mots machine individuels. De plus, les systèmes de fichiers traditionnels tentent de réduire l'intensité des accès au stockage, considéré comme manifestement plus lent que la mémoire opérationnelle, et cherchent également à regrouper les opérations pour garantir une lecture séquentielle lors de l'utilisation de disques durs, à gérer les files d'attente de requêtes, à lutter contre la fragmentation et à séparer les priorités d'exécution des différentes opérations. Pour la mémoire NVM, ces complications sont superflues, car la vitesse d'accès aux données est comparable à celle de la RAM et l'ordre d'accès n'a pas d'importance.
Source : opennet.ru
