Présentation GlusterFS

Gluster

GlusterFS est un système de fichiers libre distribué en parallèle, qui permet de stocker jusqu’à plusieurs pétaoctets (1015 octets). C’est un système de fichiers de clusters. Livré en deux parties – un serveur et un client.

Le serveur de stockage (ou chaque serveur d’un cluster) fait tourner glusterfsd et les clients utilisent la commande mount ou glusterfs client pour monter les systèmes de fichiers servis, en utilisant FUSE.

 Source :

https://fr.wikipedia.org/wiki/GlusterFS
http://gluster.org/community/documentation/index.php/GlusterFS_Technical_FAQ
https://access.redhat.com/documentation/en-US/Red_Hat_Storage/3/index.html
http://synergeek.fr/glusterfs-3-1-stockage-distribue-redondant-pour-linux
http://www.web-d.be/post/87/syst%C3%A8me-de-fichier-distribu%C3%A9-glusterfs.html
https://wiki.deimos.fr/index.php?title=GlusterFS_:_Filesystem_cluster_pour_HA
http://major.io/2010/08/11/one-month-with-glusterfs-in-production/
http://training.unsupported.me/gluster/

Qu’est-ce que GlusterFS ?

Le serveur de stockage (ou chaque serveur d’un cluster) fait tourner glusterfsd et les clients utilisent la commande mount ou glusterfs client pour monter les systèmes de fichiers servis, en utilisant FUSE.

GlusterFS repose sur un modèle client-serveur. Les Serveurs sont typiquement déployés comme des «briques de stockage», chaque serveur exécutant un daemon glusterfsd qui exporte un système de fichier local comme un «volume». Le processus client glusterfs, qui se connecte aux serveurs avec un protocole spécifique (implémenté au-dessus de TCP/IP, InfiniBand ou SDP), regroupe les volumes distants en un unique volume. Le volume résultant est alors monté par l’hôte client par un mécanisme FUSE. Les applications traitant des nombreuses entrées/sorties peuvent aussi utiliser la bibliothèque client libglusterfs pour se connecter directement à des serveurs et exécuter les traducteurs de façon interne sans avoir à passer par le système de fichier et le sur-débit induit par FUSE.
La plupart des fonctionnalités de GlusterFS sont implémentées comme « translators/traducteurs », incluant :

  • Duplication et Réplication par fichier
  • Partage de charge par fichier
  • Gestion des pannes
  • Ordonnancement et Cache disque
  • Quotas

GlusterFS fonctionne grâce à ces « translators/traducteurs » qui prennent en charge les différentes fonctionnalités. Le fichier de configuration d’un server liste donc plusieurs « translators/traducteurs » afin d’obtenir le comportement désiré. Ce fonctionnement rend la configuration relativement complexe. Heureusement GlusterFS est fourni avec l’outil glusterfs-volgen qui permet de créer directement un fichier de configuration « de base » pour les cas les plus courants.

Par défaut, les fichiers sont simplement distribués entre les différents serveurs. Les fichiers ne sont donc pas protégés en cas de crash et il vaut donc mieux prévoir un système de backups ou un système RAID 1 ou RAID 5 afin de se protéger contre la perte de données. Il est également possible de configurer GlusterFS pour répliquer ET distribuer les fichiers au sein du cluster, comme sur la figure ci-dessous :
30_glusterfs-réplication-distribution

Pourquoi choisir GlusterFS ?

GlusterFS n’utilise pas de serveur central pour le stockage des metadata

Il n’y a donc pas de « central point of failure » ni de « bottleneck », ce qui permet d’utiliser GlusterFS pour des volumes jusqu’à plusieurs pétabytes. En contrepartie, les clients doivent absolument utiliser un fichier de configuration qui correspond exactement à l’architecture du cluster, sous peine de corrompre le système de fichier. Tous les clients doivent naturellement utiliser le même fichier de configuration.

GlusterFS peut grandir plus simplement que les autres DFS

Traditionnellement les FS Distribué s’appuient sur un serveur de metadata. Ce serveur agit comme un index dirigeant les clients là où se trouve la donnée dans le cluster. Ce type d’architecture peut être plus difficile à agrandir au fur et à mesure de l’agrandissement du FS. GlusterFS utilise un algorithme de hashage « élastique » pour contourner ce problème.

Le serveur GlusterFS server est conçu très simplement

Il exporte un système de fichier existant comme tel, laissant aux traducteurs côtés clients de structurer l’espace. Les clients eux-mêmes sont sans état, ne communiquent pas entre eux, et sont sensés disposer de configurations de traducteurs cohérents entre eux. Cela peut poser des problèmes, mais permet à GlusterFS de monter jusqu’à plusieurs peta-octets sur du matériel habituel en évitant les goulots d’étranglements qui affectent normalement les systèmes de fichiers distribués plus stricts.

Pour l’utilisation de la commande glusterfs-volgen

La commande « glusterfs-volgen » simplifie la gestion de la configuration de GlusterFS en appliquant les paramètres de configuration les plus souvent utilisés.

  • Avec un seul appel à la commande, il est possible de générer l’ensemble des fichiers de configuration des clusters. Il suffira ensuite de les copier vers les serveurs et de redémarrer le service (scriptable / automatisable).
  • Possibilité d’activer la réplication avec l’option « –raid=1 »

Parce que GlusterFS est fiable

Tout d’abord, retirer brusquement des clients n’a aucun effet sur les autres clients ou les serveurs. La connexion expire et éventuellement les serveurs log le timeout comme prévu.
Retirer brusquement des serveurs (avec l’utilisation du « translators » replicate), il est important de garder à l’esprit que le premier volume de serveur répertorié dans le fichier de volume de votre client est celui qui coordonnera le lock sur les fichiers et répertoires,
Si ce dernier vient à tomber hors ligne rapidement, vous verrez une brève chute de la performance et le serveur suivant sera utilisé pour coordonner le lock.
Lorsque votre serveur d’origine remonte, la coordination de lock fera un failback.

Pour la confiance dans les noeuds : « Trust Me »

Un cluster Gluster est connu comme un Pool de Stockage de Confiance. Ce pool peut grandir ou rapetisser dynamiquement mais avant qu’un nouveau membre puisse joindre le pool, il doit être sondé par un membre existant du Cluster. Une fois sondé le nouveau membre est de confiance et appartient au pool. Il peut être utilisé pour sonder un nouveau membre ou détacher un membre existant. Il n’y a pas de concept de Maitre/Super Node qui aurait des privilèges en plus des autres.

Pour l’installation simple des clients

Il suffit d’avoir le fichier de configuration client, de le mettre dans le bon chemin (/etc/glusterfs/) et de faire un montage en utilisant la commande « mount »

Lecture et Ecriture dans GlusterFS

Distribué (mode par défaut)

gluster-dv

Le mode « Distribué » est un mode de fonctionnement dans lequel les fichiers sont affectés de façon uniforme aux briques. Ceci est traité par l’algorithme de hachage qui a été discuté précédemment.
Le mode « Distribué » permet la plus grande performance pour GlusterFS car les fichiers peuvent être situés en linéaire et la lecture et l’écriture se produire alors sur le noeud qui abrite le fichier.
Cela signifie que si une seule brique devient indisponible, il perdra avec elle environ 1/N de tous les fichiers disponibles, où N est le nombre de briques dans le volume.

Répliqué

gluster-rv

Le mode « Répliqué » est un mode de fonctionnement dans lequel les fichiers sont répliqués de manière synchrone à N nœuds où N est une valeur configurable au moment de la création du volume.
Cela peut être considéré comme du RAID 1 vu qu’il copie des fichiers entre les nœuds, mais contrairement au RAID 1 il ne peut pas y avoir plus de 2 nœuds participants.
Ceci fournit une redondance pour les fichiers stockés dans Gluster au prix de performances en écriture, mais cela peut augmenter les performances de lecture.
Les écritures sont pénalisées parce que pour chaque écriture il faudra synchroniser l’écriture à toutes les briques répliquées.
Cela signifie qu’une écriture ne se termine pas tant qu’elle n’est pas stockée sur toutes les briques destinées à la réplication.
La lecture peut être plus rapide avec des volumes répliqués car plusieurs briques ont la capacité de retourner le même fichier, mais il y a une baisse de performance mineure lors des appels à « stat (man stat) »
car les briques doivent faire un « stat » sur tous les membres qui répliquent un fichier pour vous assurer que la dernière version est retournée.

Striped

gluster-sv

« NE PAS UTILISER » Cela étant dit, le mode « Striped » est un mode de fonctionnement qui peut être considéré comme un RAID 0.
Chaque fichier stocké dans Gluster sera cassé en morceaux et répartis entre les briques dans le volume.
Cela peut conduire à de meilleures performances pour certaines opérations de niches telles que l’hébergement de disques de machines virtuelles mais se traduira par une perte de données catastrophique si un seul nœud du cluster rencontre des problèmes.
Même Gluster conseille de ne pas utiliser le mode « Striped » sauf si vous savez vraiment ce que vous faites et que vous en comprenez pleinement les conséquences. Vous aurez probablement jamais besoin d’utiliser le mode « Striped »

Distribué et Répliqué (mode préféré)

gluster-drv

Les différents modes d’opérations peuvent se combiner de plusieurs façons. Cependant le mode « Distribué + Répliqué » est le plus commun et le mode préféré. Ceci peut être vu comme du RAID 10 vu que cela distribue les fichiers de façon uniforme (sorte de RAID 0) et que c’est répliqué sur les briques. Cela donne le meilleur compromis en performance lecture/écriture et du HA (high availability).

Striped Répliqué (en test)

Striped_Replicated_Volume

Ce type de volume éclate les données sur des briques répliquées. Pour de meilleur résultat, ceci doit être utilisé pour des environnemenst à fort accès concurrentiel où il y a beaucoup d’accès parallèle à de gros fichiers et que la performance est critique. Ceci est par exemple destiné à Map Reduce de Hadoop.

1 thought on “Présentation GlusterFS”

  1. Merci beaucoup pour l’information.
    Est-ce que il y a une méthode pour la gestion des données froides dans GlusterFS.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

16 + 3 =