Filesystem/RaidOverIP/GlusterFS
Introduction
<package>GlusterFS</package> est un logiciel libre de système de fichiers distribué en parallèle, capable de monter jusqu'à plusieurs pétaoctets.
<package>GlusterFS</package> est un système de fichiers de cluster/réseaux. GlusterFS est livré avec deux éléments, 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.
<package>GlusterFS</package> 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 <package>GlusterFS</package> 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 fichier 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 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.
Mise en oeuvre
A partir de la version 3.1, les fichiers de configuration sont obsolètes. Tout passe par l'interface CLI ( donc modifiable à chaud sans redémarrage du daemon gluster )
La configuration est sauvegardée automatiquement ( dans le répertoire /etc/glusterd ) en cas de reboot.
Sur chaque nœud, on va d'abord créer le répertoire de stockage
# mkdir -p /var/lib/glusterfs/datastore
Glusterfs utilise maintenant le port 24007.
Aperçu des commandes d'administration
On peut obtenir de l'aide en tapant help à la fin de la commande ( gluster peer help montre les options possibles pour les peers)
Ajouter un nœud
# gluster peer probe 192.168.0.xxx
Détacher un nœud
# gluster peer detach 192.168.0.xxx
Ajouter un volume
datastore est le nom du volume. On peut mettre ce que l'on veux ( caractère ASCII ANSI seulement, sans espace et en minuscule si possible, ça fait plus Linux ), mais le répertoire doit déjà exister.
# gluster volume create datastore replica 2 transport tcp \ 192.168.0.xxx:/var/lib/glusterfs 192.168.0.xxx:/var/lib/glusterfs
Supprimer un volume
# gluster volume delete datastore
Activer le volume
# gluster volume start datastore
Désactiver un volume
# gluster volume stop datastore
Vérifier tous les volumes
# gluster volume info
Partie serveur
Les manipulations ne sont à faire que sur le premier nœud, tout sera répliqué sur le pool de serveur que l'on va définir.
Définition du pool ( ajout de nœuds dans le pool )
exemple avec deux serveurs : 192.168.0.132 et 192.168.0.133.
On se place sur un des deux nœuds et l'on rajoute le nœud distant. En effet il est inutile de rajouter le nœud local ( localhost ). Ici on lance les commandes suivantes sur 192.168.0.132.
# gluster peer probe 192.168.0.133
Définition du volume ( ajout d'un volume )
Les deux exemples suivants montre la création d'un volume :
- Le premier est une simple réplication du volume sur deux hôtes.
- Le deuxième montre l'aggrégation et la réplication sur six hôtes.
Exemple 1
Définition d'un volume répliqué et distribué sur 2 serveurs de stockage. Le paramètre replica sert à définir le nombre de serveurs. Ce sera ici les deux premiers de la liste. Le nombre de nœuds doit être un multiple du nombre de serveurs. Comme on a 2 nœuds, on va prendre 2 serveurs. et on démarre notre espace de stockage.
# gluster volume create datastore replica 2 transport tcp \ 192.168.0.132:/var/lib/glusterfs/datastore 192.168.0.133:/var/lib/glusterfs/datastore
Exemple 2
On peut aussi créer un volume de stockage répliqué sur 3 serveurs et 6 clients. On disposera donc de cet espace libre multiplié par 2 ( par aggrégation ).
Exemple sur chaque serveur, la partition /var fait 4Go. Notre partition glusterfs sera vue comme une partition de 8Go.
# gluster volume create datastore replica 3 transport tcp \ 192.168.0.132:/var/lib/glusterfs/datastore \ 192.168.0.133:/var/lib/glusterfs/datastore \ 192.168.0.134:/var/lib/glusterfs/datastore \ 192.168.0.135:/var/lib/glusterfs/datastore \ 192.168.0.136:/var/lib/glusterfs/datastore \ 192.168.0.137:/var/lib/glusterfs/datastore
Activation du volume
# gluster volume start datastore
Partie cliente
On créer le point de montage et on monte la partition glusterfs
Sur le premier serveur
# mkdir -p /mnt/replicated # mount -t glusterfs 192.168.0.132:/datastore /mnt/replicated
ou dans le fichier /etc/fstab
192.168.0.132:/datastore /mnt/replicated glusterfs defaults,_netdev 0 0
Sur le deuxième serveur
# mkdir -p /mnt/replicated # mount -t glusterfs 192.168.0.133:/datastore /mnt/replicated
ou dans le fichier /etc/fstab
192.168.0.133:/datastore /mnt/replicated glusterfs defaults,_netdev 0 0
Si le volume ne se monte pas, vérifier la bonne installation de fuse :
# yum install fuse-libs fuse