Système de fichier distribué GlusterFS
GlusterFS est un système de fichier distribué. Les fichiers sont stockés sur un cluster de serveurs reliés par une réseau local Ethernet ou InfiniBand. Les clients peuvent utiliser le système de fichier simplement avec la commande mount, comme pour n'importe quel système de fichier.
GlusterFS n'utilise pas de serveur central pour le stockage des metadata (sur quel serveur est situé quel fichier, etc.). Il n'y as 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.
Les serveurs
L'installation du serveur sur Ubuntu est très simple:
sudo apt-get install glusterfs-server
GlusterFS fonctionne grâce à des "translators" qui prennent en charge différentes fonctionnalités. Le fichier de configuration d'un server liste donc plusieurs "translators" afin d'obtenir la 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.
Pour l'exemple, imaginons une configuration avec 2 serveurs (192.168.1.10 et .11) qui stockent les données dans /var/glusterfs/store1. La commande correspondante sera:
glusterfs-volgen -n store1 192.168.1.10:/var/glusterfs/store1 192.168.1.11:/var/glusterfs/store1
glusterfs-volgen crée alors 3 fichiers: 1 pour chaque serveur, et 1 pour les clients. Il suffit alors de transférer les fichiers sur les serveurs respectifs, de les copier vers /etc/glusterfs/glusterfsd.vol et de redémarrer le serveur:
sudo mkdir -p /var/glusterfs/store1
sudo cp 192.168.1.10-store1-export.vol /etc/glusterfs/glusterfsd.vol
sudo /etc/init.d/glusterfs-server restart
Réplication
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.
Ou alors, il est également possible de configurer GlusterFS pour répliquer ET distribuer les fichiers au sein du cluster, comme sur la figure ci-dessus. Pour cela il suffit d'ajouter le paramètre --raid=1 à la commande glusterfs-volgen:
glusterfs-volgen -n store1 --raid=1 192.168.1.10:/var/glusterfs/store1 ...
Les clients
L'installation du client est également très simple:
sudo apt-get install glusterfs-client
Une fois le fichier de configuration store1-tcp.vol transféré vers le client (par exemple vers /etc/glusterfs/store1-tcp.vol), il suffit alors de monter le volume:
sudo mkdir /mnt/store1
sudo mount -t glusterfs /etc/glusterfs/store1-tcp.vol /mnt/store1
Pour que le client "monte" automatiquement le volume au démarrage, il faut ajouter la ligne suivante dans /etc/fstab:
/etc/glusterfs/store1-tcp.vol /mnt/store1 glusterfs defaults 0 0