# GlusterFS

GlusterFS est un système de fichiers distribué adapté aux tâches gourmandes en données telles que le stockage en nuage (en) et le streaming multimédia. Extensible, il peut se déployer sur une grappe de serveurs et peut stocker jusqu’à plusieurs pétaoctets (10$^{15}$ octets). Le paquet GlusterFS disponible sous GNU/Linux et BSD comprend un serveur et un client. Il est maintenu par RedHat depuis l'acquisition de la compagnie Gluster en octobre 2011. L'entreprise, ainsi nommée en référence à GNU et à la technologie Cluster, avait développé toute une gamme de produits (et de services) visant à démocratiser le calcul intensif qui évolua avec Red Hat sous différentes appellations, d'abord Red Hat Storage Server, puis en 2015 Red Hat Gluster Storage après l'acquisition de la technologie Ceph. Le système de fichiers n'est qu'une composante de la solution de stockage Red Hat. GlusterFS est un logiciel libre, sous licence GPL et LGPL.

## Histoire
### Z RESEARCH

L'origine du projet remonte à l'année 2005 et la création de l'entreprise Z RESEARCH par Anand Babu Periasamy et Hitesh Chellani dans le but de simplifier la création de fermes de calcul. Fort de leur expérience respective dans la conception et le déploiement du supercalculateur Thunder, et pour répondre aux besoins et aux attentes de leur premier client, le développement d'une solution entièrement nouvelle s'est imposée, la création d'un système de fichiers distribué étant probablement moins coûteuse et/ou complexe à réaliser que les diverses options existantes.
Les deux hommes changèrent le nom de l'entreprise en Gluster, fin 2007 ou début 2008, après leur premier déploiement finalisé en 2007 auprès de la compagnie pétrolière nationale vénézuélienne Petróleos de Venezuela S.A (PDVSA).

### Gluster

Gluster est une start-up indienne rachetée par Red Hat en 2011. Installée à Bangalore, l'entreprise fondée en 2005 par Anand Babu Periasamy et Hitesh Chellani avait développé un système de fichiers distribué inspiré de GNU Hurd. Le projet s'articulait autour de plusieurs modules (GlusterFS, GlusterHPC et GlusterEP) et se définissait alors comme la plateforme GNU de clustering, sans toutefois avoir obtenu le statut de paquet GNU$^,$. Après le rachat de Red Hat, le système évolua pour devenir en 2015 Red Hat Gluster Storage (en).

## Architecture

GlusterFS est une solution de stockage et d'accès aux données qui repose sur une architecture client-serveur. Les serveurs sont typiquement déployés comme des « briques de stockage », chaque serveur exécutant un daemon glusterfsd qui expose un système de fichiers local comme un « volume ». Le processus client glusterfs, qui se connecte aux serveurs avec un protocole spécifique (mis en œuvre au-dessus de TCP/IP, InfiniBand ou SDP (en)), 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 fichiers et le sur-débit induit par FUSE.
La plupart des fonctionnalités de GlusterFS sont implémentées comme traducteurs, incluant :
* duplication et réplication par fichier ;
* partage de charge par fichier ;
* gestion des pannes ;
* ordonnancement et cache disque ;
* quotas.
Le serveur GlusterFS server est conçu très simplement : il exporte un système de fichiers existant comme tel, laissant aux traducteurs côté client la tâche de structurer l’espace. Les clients eux-mêmes sont sans état, ne communiquent pas entre eux, et sont censés disposer de configurations de traducteurs cohérents entre eux. Cela peut poser des problèmes, mais permet à GlusterFS de monter jusqu’à plusieurs pétaoctets sur du matériel habituel en évitant les goulets d’étranglements qui affectent normalement les systèmes de fichiers distribués plus stricts.

## Mode opératoire

Le serveur de stockage (ou chaque serveur du 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.