VT2017 GlusterFS

=Présentation=

=Résumé= GlusterFS est un logiciel open-source utilisé dans un but de gérer des volumes de données distribuées entre différents serveurs. Des clients peuvent avoir accès à ces données, en laissant, pour eux, transparente la répartition des données sur ces différents serveurs. GlusterFS est une solution très flexible et modulable, car il est extrêmement simple de rajouter des nœuds au cluster de serveur. De plus de nombreuses options sont disponibles pour gérer les volumes de données créés, en pouvant par exemple gérer la résistance aux pannes grâce à de la redondance ou des techniques comme RAID 5.

Systèmes distribués, Base de données, Cloud, Cluster, disponibilité, open-source, client-serveur.
 * Mots clés :

=Abstract= GlusterFS is an open-source software used to manage distributed file systems. One specific file system can be distributed on multiple servers (a cluster). Clients will then have access to those data by mounting a specific volume in his own system file. He will be able to use those data regardless of the network layer and the locality of the servers. For a data volume, different settings can be set, such as redundancy and distribution between the servers.

Distributed Systems, Database, Cloud, Cluster, Disponibility, Open-Source, client-server architecture.
 * Keywords :

=Le projet GlusterFS= GlusterFS est un projet entièrement open-source chiffré à 136,000,000$, il était initialement développé par l'entreprise Gluster qui a rapidement été rachetée par Red Hat. GlusterFS est entièrement gratuit. Cependant, sa version pour entreprise Red Hat® Storage (basé sur GlusterFS) propose un service de support commercial.

But de GlusterFS
GlusterFS permet de gérer un système de fichier distribué avec de multiples serveurs. Un cluster de serveurs se partagent des briques de données (avec plus ou moins de redondances selon les paramètres choisis), les clients peuvent alors monter un volume distribué sur leur machine. Ce volume distribué apparaîtra dans le système de fichier du client, tel un dossier classique. Dans ce volume monté, la répartition des données sur les serveurs ainsi que la gestion réseau, seront entièrement transparents pour l'utilisateur : ce dernier pourra y accéder comme si le dossier se trouvait sur sa machine.

L'exemple décrit précédemment prend l'exemple d'une machine cliente classique, mais il faut avoir dans la tête que ce client peut-être un serveur ayant besoin de l'accès à ces données. GlusterFS peut être utilisé dans n'importe quel projet à grande échelle. Il permet de gérer des volumes allant jusqu'au pétaoctets.

'''GlusterFS permet de gérer de façon transparente et personnalisée (répartition, redondance...) des données sur de multiples serveurs. Des clients et des serveurs peuvent facilement et à n'importe quel moment se connecter aux volumes créés.'''

Utilisation

 * Groupe de confiance : les serveurs se découvrent mutuellement grâce à la fonction probe.
 * Un serveur initie un volume
 * N'importe quel serveur présent dans le groupe de confiance du serveur ayant initié le volume peut le rejoindre à tout moment.
 * Des bricks peuvent être montées sur un certain volume (à tout moment et par n'importe quel serveur), venant agrandir le volume distribué.

Caractéristiques principales des volumes
Les caractéristiques des bricks : redondance, répartition sur les serveurs peuvent entièrement être paramétrées.

Avec ces caractéristiques GlusterFS permet de répondre à la demande actuelle : la répartition permet des performances accrues, la redondance des données permet d'augmenter la disponibilité.

La caractéristique majeur qui fait de GlusterFS une solution de choix est sa facilité à scale-out, c'est à dire rajouter sans aucun problème à un volume, d'autres serveurs et donc des capacités, que cela soit de stockage, de performance, ou bien de disponibilité. On s'adapte alors facilement à la charge. Ce scaling n'a quasiment aucune limite, même si cela devient inutile passé une limite quand il s'agit de la parallélisation des requêtes sur différents serveurs. Ce scaling n'a également quasiment aucun coût...

Exemple d'un volume GlusterFS
Afin d'avoir un exemple plus concret, voici un volume qui utilise la redondance et la répartition.




 * Le client a monté le Distributed Volume
 * Il dépose deux fichiers File 1 et File 2 sur le volume qu'il a monté

On peut voir qu'avec les options choisies :
 * Redondance : chaque fichier se trouve sur deux serveurs différents : si l'un des serveurs lâche, le fichier sera directement copié sur un autre serveur afin d'assurer la redondance de 2.
 * Répartition : Les fichiers que le clients a déposés sont séparés sur deux "groupes de serveurs" différents. La logique est que lorsqu'il aura besoin de ces fichiers (probablement les deux en même temps), un serveur pourra lui envoyer le premier fichier et un deuxième serveur le deuxième. Sur des tailles plus élevés cette logique a totalement sont utilisation.

Des volumes "striped" sont également possibles, où des bouts de fichiers se trouvent sur des serveurs distincts. C'est utile sur de très gros fichiers pour améliorer les performances. Exemple :

Personnalisation des volumes
GlusterFS est capable d'utiliser toutes les technologies qui peuvent être nécessaires. Que cela soit de multiples systèmes de fichiers, les techniques de tolérance aux pannes (RAID ou autre...), faire de la géo-réplication (pour être entre autres résistant aux catastrophes naturelles) ... A vous de creuser selon vos besoins !

=Références= https://www.redhat.com/

https://gluster.readthedocs.io/en/latest/Administrator%20Guide/Setting%20Up%20Volumes/

http://docs.gluster.org/en/latest/Administrator%20Guide/Geo%20Replication/

https://fr.wikipedia.org/wiki/Red_Hat