Après une année d'interruption du développement je travaille sur une nouvelle branche du système de fichiers distribué tolérant aux pannes и deuxième version candidate récemment L'entreprise qui développe LizardFS a changé de propriétaire, avec une nouvelle direction et de nouveaux développeurs. Ces deux dernières années, le projet s'est éloigné de la communauté et ne lui a pas accordé l'attention qu'il mérite, mais la nouvelle équipe entend renouer les liens avec elle et instaurer une interaction étroite. Le code du projet est écrit en C et C++. sous licence GPLv3.
LézardFS LizardFS est un système de fichiers distribué permettant de répartir les données sur plusieurs serveurs tout en y accédant comme à une unique et vaste partition, à l'instar des partitions de disque traditionnelles. Une partition montée avec LizardFS prend en charge les attributs de fichiers POSIX, les listes de contrôle d'accès (ACL), les verrous, les sockets, les tubes, les fichiers de périphériques, les liens symboliques et les liens physiques. Le système ne présente aucun point de défaillance unique et tous ses composants sont redondants. Les opérations de données parallèles sont prises en charge (plusieurs clients peuvent accéder simultanément aux fichiers).
Pour garantir la tolérance aux pannes, les données sont divisées en répliques réparties sur différents nœuds avec redondance (plusieurs copies sont présentes sur différents nœuds). En cas de défaillance d'un nœud ou d'un disque, le système continue de fonctionner sans perte de données et redistribue automatiquement les données en fonction des nœuds restants. Pour étendre le stockage, il suffit de connecter de nouveaux nœuds sans interruption de service pour maintenance (le système réplique automatiquement une partie des données sur les nouveaux serveurs et rééquilibre le stockage en fonction de ces derniers). Une approche similaire peut être utilisée pour réduire la taille du cluster : il suffit de déconnecter les équipements obsolètes mis hors service.
Les données et les métadonnées sont stockées séparément. Il est recommandé d'installer deux serveurs de métadonnées fonctionnant en mode maître-esclave, ainsi qu'au moins deux serveurs de stockage de données (serveurs de chunks). Les serveurs de journalisation peuvent également servir à la sauvegarde des métadonnées. Ils enregistrent les modifications apportées aux métadonnées et permettent une restauration en cas de défaillance de tous les serveurs de métadonnées existants. Chaque fichier est divisé en blocs (chunks) d'une taille maximale de 64 Mo. Les blocs sont répartis entre les serveurs de stockage selon le mode de réplication sélectionné : standard (définissant explicitement le nombre de copies à placer sur les différents nœuds, y compris la liaison à des répertoires spécifiques ; le nombre de copies peut être augmenté pour les données importantes et diminué pour les données moins importantes), XOR (RAID 5) et EC (RAID 6).
Le stockage peut atteindre des pétaoctets. Ses applications incluent l'archivage, le stockage d'images de machines virtuelles, de données multimédias, les sauvegardes, la mise en place d'un centre de reprise d'activité (PRA) et le stockage dans des clusters de calcul haute performance. LizardFS offre des vitesses de lecture très élevées pour les fichiers de toute taille et de bonnes performances d'écriture pour les fichiers volumineux et moyens, en l'absence de modifications constantes, d'utilisation intensive de fichiers ouverts ou d'opérations ponctuelles sur de nombreux petits fichiers.
Parmi les autres fonctionnalités du système de fichiers figurent la prise en charge des instantanés, qui reflètent l'état des fichiers à un instant précis, et une corbeille intégrée (les fichiers ne sont pas immédiatement supprimés et restent disponibles pour récupération pendant un certain temps). L'accès à la partition peut être restreint par adresse IP ou mot de passe (comme pour NFS). Des mécanismes de gestion des quotas et de la qualité de service permettent de limiter la taille et la bande passante pour certaines catégories d'utilisateurs. Il est possible de créer des systèmes de stockage géographiquement distribués, avec des segments situés dans différents centres de données.
Le projet LizardFS a été fondé en 2013 en tant que fork et diffère principalement par la présence d'un mode de réplication basé sur des codes de correction d'erreurs Reed-Solomon (analogue à raidzN), une prise en charge étendue des ACL et la présence d'un client pour la plateforme. Windows, des optimisations supplémentaires (par exemple, lors de la combinaison d'un client et d'un serveur de stockage, les blocs sont servis à partir du nœud actuel chaque fois que cela est possible, et les métadonnées sont mises en cache en mémoire), un système de configuration plus flexible, la prise en charge des lectures de données préemptives, des quotas de répertoire et une refonte interne.
La version 3.13.0 de LizardFS devrait sortir fin décembre. Sa principale innovation réside dans l'utilisation d'un algorithme de consensus garantissant la tolérance aux pannes (basculement des serveurs maîtres en cas de défaillance). (Utilise une implémentation propriétaire uRaft, précédemment utilisée dans des produits commerciaux.) L'utilisation d'uRaft simplifie la configuration et réduit la latence de récupération en cas de panne, mais nécessite au moins trois nœuds fonctionnels, dont l'un sert de quorum.
Parmi les autres modifications, citons un nouveau client basé sur le sous-système FUSE3, des corrections de bogues et une réécriture du plugin nfs-ganesha en C. La mise à jour 3.13.0-rc2 corrige plusieurs bogues critiques qui rendaient inutilisables les versions de test précédentes de la branche 3.13 (les correctifs pour la branche 3.12 n'ont pas encore été publiés et la mise à niveau de la version 3.12 vers la version 3.13 entraîne toujours une perte totale de données).
En 2020, les travaux porteront sur le développement
Agama intègre un nouveau noyau LizardFS entièrement réécrit qui, selon ses développeurs, triplera les performances par rapport à la branche 3.12. Agama adoptera une architecture événementielle et des E/S asynchrones basées sur… Ce système fonctionnera principalement dans l'espace utilisateur (afin de réduire la dépendance aux mécanismes de cache du noyau). De plus, un nouveau sous-système de débogage et un analyseur d'activité réseau avec prise en charge de l'optimisation automatique des performances seront proposés.
Le client LizardFS bénéficiera d'une prise en charge complète du versionnage en écriture, ce qui améliorera la fiabilité de la reprise après sinistre, résoudra les problèmes liés à l'accès simultané aux mêmes données par plusieurs clients et optimisera considérablement les performances. Le client migrera vers son propre sous-système réseau en espace utilisateur. Un premier prototype fonctionnel de LizardFS basé sur Agama est prévu pour le deuxième trimestre 2020. Parallèlement, des outils d'intégration de LizardFS avec la plateforme Kubernetes sont annoncés.
Source: opennet.ru
