Mise à jour du système de fichiers du cluster LizardFS 3.13.0-rc2

Après une année d'accalmie dans le développement a repris travailler sur une nouvelle branche d'un système de fichiers distribué tolérant aux pannes LézardF 3.13 и publié deuxième version candidate. Récemment s'est passé changement de propriétaires de la société développant LizardFS, une nouvelle direction a été adoptée et les développeurs ont été remplacés. Au cours des deux dernières années, le projet a été retiré de la communauté et n'y a pas prêté suffisamment d'attention, mais la nouvelle équipe entend raviver les relations antérieures avec la communauté et établir une interaction étroite avec elle. Le code du projet est écrit en langages C et C++ et distribué par sous licence GPLv3.

LézardFS il est un système de fichiers de cluster distribué, qui vous permet de distribuer des données sur différents serveurs, mais d'y accéder sous la forme d'une seule grande partition, qui fonctionne de la même manière que les partitions de disque traditionnelles. Une partition montée avec LizardFS prend en charge les attributs de fichier POSIX, les ACL, les verrous, les sockets, les canaux, les fichiers de périphérique, les liens symboliques et physiques. Le système n'a pas de point de défaillance unique ; tous les composants sont redondants. La parallélisation des opérations de données est prise 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, qui sont réparties sur différents nœuds avec redondance (plusieurs copies sont placées sur différents nœuds) ; en cas de panne de nœuds ou de disques, le système continue de fonctionner sans perte d'informations et redistribue automatiquement les données. en tenant compte des nœuds restants. Pour étendre le stockage, il suffit d'y connecter de nouveaux nœuds sans arrêter les travaux de maintenance (le système lui-même réplique une partie des données sur de nouveaux serveurs et équilibre le stockage en tenant compte des nouveaux serveurs). Vous pouvez faire de même pour réduire la taille du cluster - vous pouvez simplement désactiver l'équipement obsolète qui est supprimé du système.

Les données et métadonnées sont stockées séparément. Pour le fonctionnement, 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 (chunkserver). De plus, pour sauvegarder les métadonnées, les serveurs de journaux peuvent être utilisés pour stocker des informations sur les modifications des métadonnées et vous permettre de restaurer le fonctionnement en cas de dommages à tous les serveurs de métadonnées existants. Chaque fichier est divisé en blocs (morceaux), 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étermination explicite du nombre de copies à placer sur différents nœuds, y compris par rapport aux répertoires individuels - pour les données importantes, le nombre de copies peut être augmenté, et pour données sans importance réduites), XOR (RAID5 ) et EC (RAID6).

Le stockage peut atteindre des tailles de pétaoctets. Les domaines d'application incluent l'archivage, le stockage d'images de machines virtuelles, de données multimédia, les sauvegardes, l'utilisation comme DRC (Disaster Recovery Center) et comme stockage dans des clusters de calcul hautes performances. LizardFS offre une vitesse de lecture très élevée pour les fichiers de toute taille, et lors de l'écriture, il affiche de bonnes performances lors de l'écriture de fichiers entiers de grande et moyenne taille, lorsqu'il n'y a pas de modification constante, de travail intensif avec des fichiers ouverts et d'opérations ponctuelles avec un un tas de petits fichiers.

Mise à jour du système de fichiers du cluster LizardFS 3.13.0-rc2

Parmi les fonctionnalités du FS, on peut également noter la présence du support des instantanés, reflétant l'état des fichiers à un certain moment, et une implémentation intégrée de la « corbeille » (les fichiers ne sont pas supprimés immédiatement et sont disponibles pour récupération pendant un certain temps). L'accès à une partition peut être limité par une adresse IP ou un mot de passe (similaire à NFS). Il existe des mécanismes de gestion des quotas et de la qualité de service qui permettent de limiter la taille et la bande passante pour certaines catégories d'utilisateurs. Il est possible de créer des installations de stockage géographiquement réparties, dont les segments sont situés dans différents centres de données.

Le projet LizardFS a été fondé en 2013 en tant que fork OrignalFS, et diffère principalement par la présence d'un mode de réplication basé sur les codes de correction d'erreurs Reed-Solomon (analogue à raidzN), la prise en charge étendue des ACL, la présence d'un client pour la plateforme Windows, des optimisations supplémentaires (par exemple, lors de la combinaison d'un client et un serveur de stockage, les blocs, si possible, sont envoyés avec le nœud actuel et les métadonnées sont mises en cache en mémoire), un système de configuration plus flexible, la prise en charge de la lecture anticipée des données, des quotas de répertoire et des retouches internes.

LizardFS 3.13.0 devrait sortir fin décembre. La principale innovation de LizardFS 3.13 est l'utilisation d'un algorithme de consensus pour assurer la tolérance aux pannes (changement de serveur maître en cas de panne) Raft (utilise notre propre implémentation d'uRaft, qui était auparavant utilisée dans les produits commerciaux). L'utilisation d'uRaft simplifie la configuration et réduit les délais de récupération après panne, mais nécessite au moins trois nœuds de travail, dont l'un est utilisé pour le quorum.

Autres changements : un nouveau client basé sur le sous-système FUSE3, résolvant les problèmes de correction d'erreurs, le plugin nfs-ganesha a été réécrit en langage C. La mise à jour 3.13.0-rc2 corrige plusieurs bugs 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 à jour de 3.12 à 3.13 entraîne toujours une perte complète de données).

En 2020, les travaux se concentreront sur le développement
Agama, un nouveau noyau LizardFS entièrement réécrit, qui, selon les développeurs, offrira des performances multipliées par trois par rapport à la branche 3.12. Agama passera à une architecture événementielle, basée sur les entrées/sorties asynchrones asio, fonctionnent principalement dans l'espace utilisateur (pour réduire la dépendance aux mécanismes de mise en cache du noyau). De plus, un nouveau sous-système de débogage et un analyseur d'activité réseau prenant en charge le réglage automatique des performances seront proposés.

Le client LizardFS ajoutera une prise en charge complète des opérations d'écriture de versionnage, ce qui améliorera la fiabilité de la reprise après sinistre, résoudra les problèmes qui surviennent lorsque différents clients partagent l'accès aux mêmes données et permettra des améliorations significatives des performances. Le client sera transféré vers son propre sous-système réseau fonctionnant dans l'espace utilisateur. Le premier prototype fonctionnel de LizardFS basé sur Agama devrait être prêt au deuxième trimestre 2020. Dans le même temps, ils promettent de mettre en œuvre des outils pour intégrer LizardFS à la plateforme Kubernetes.

Source: opennet.ru

Ajouter un commentaire