GlusterFS est un système de fichiers distribué open source développé par Red Hat, capable d'agréger des disques de plusieurs serveurs en un volume unique accessible via le réseau. Son architecture peer-to-peer (pas de métadonnées centralisées) le rend scalable horizontalement sans point de défaillance unique. Il supporte nativement ReadWriteMany (RWX), ce qui en fait une option pour les workloads Kubernetes nécessitant du stockage partagé entre plusieurs pods.
Note sur l'intégration Kubernetes : Red Hat a déprécié Heketi (le gestionnaire d'API REST pour GlusterFS sur K8s) en 2021 et a arrêté son développement actif. L'intégration K8s via CSI repose maintenant sur des drivers communautaires (
gluster-csi-driver) moins activement maintenus. Pour de nouveaux déploiements nécessitant du RWX, Rook/Ceph CephFS, Longhorn (NFS) ou JuiceFS sont aujourd'hui plus recommandés.
Informations essentielles
Origine : Gluster Inc. → Red Hat · Licence : GPL v2 / LGPL v3 · Architectures : x86_64, ARM64
Liens : Site officiel · Documentation · GitHub · Releases
Support : Communauté active (v11.2 en juillet 2025). Red Hat a arrêté son support commercial de Gluster Storage fin 2024 - le projet continue sous maintenance communautaire.
Stack par défaut
| Composant | Valeur |
|---|---|
| Architecture | Peer-to-peer (pas de métadonnées centralisées) |
| Protocoles clients | FUSE (glusterfs mount), NFS (via ganesha), SMB, REST |
| Réplication | Configurable (1x distribué à 3x répliqué) |
| Access modes K8s | ReadWriteOnce, ReadWriteMany |
| Prérequis nœuds | Package glusterfs-server sur chaque nœud de stockage |
Types de volumes
| Type | Description | Usage |
|---|---|---|
| Distributed | Fichiers répartis sur les briques sans réplication | Capacité maximale, pas de HA |
| Replicated | Copies identiques sur N briques | HA, lecture rapide |
| Distributed-Replicated | Distribution + réplication (ex: 2x3 = 6 briques) | Capacité + HA (recommandé prod) |
| Dispersed | Erasure coding (économe en espace vs réplication) | Grandes capacités avec protection |
| Distributed-Dispersed | Distribution + erasure coding | Très grande capacité + protection |
Prérequis
| Ressource | Valeur |
|---|---|
| Nœuds | 2 minimum (3+ pour HA) |
| OS | RHEL/CentOS 7+, Ubuntu 18.04+, Fedora |
| Réseau | Dédié recommandé (1 Gbps minimum, 10 Gbps recommandé) |
| Disques | Partitions ou disques dédiés par brique |
| Ports | 24007 (daemon), 24008 (management), 49152+ (un par volume) |
Installer GlusterFS
# Ubuntu 22.04 / Debian 12
sudo apt-get install -y software-properties-common
sudo add-apt-repository ppa:gluster/glusterfs-11
sudo apt-get update
sudo apt-get install -y glusterfs-server
sudo systemctl enable --now glusterd
# Rocky Linux 9 / AlmaLinux 9
sudo dnf install -y centos-release-gluster
sudo dnf install -y glusterfs-server
sudo systemctl enable --now glusterd
Créer un cluster GlusterFS
Peer probe (depuis le premier nœud)
# Ajouter les autres nœuds au cluster (exécuter depuis node1)
gluster peer probe node2
gluster peer probe node3
# Vérifier
gluster peer status
Créer un volume répliqué (3 nœuds)
# Créer le répertoire de brique sur chaque nœud
sudo mkdir -p /data/gluster/vol1
# Depuis node1 : créer le volume
gluster volume create vol1 \
replica 3 \
node1:/data/gluster/vol1 \
node2:/data/gluster/vol1 \
node3:/data/gluster/vol1
# Démarrer le volume
gluster volume start vol1
# Vérifier
gluster volume info vol1
gluster volume status vol1
Créer un volume distributed-replicated (6 briques = 3 paires)
gluster volume create vol2 \
replica 2 \
node1:/data/gluster/vol2a \
node2:/data/gluster/vol2a \
node3:/data/gluster/vol2b \
node4:/data/gluster/vol2b \
node5:/data/gluster/vol2c \
node6:/data/gluster/vol2c
gluster volume start vol2
Vérification du cluster
# État des pairs (tous doivent être "Connected")
gluster peer status
# État du volume (toutes les briques doivent être Online)
gluster volume status vol1
# Informations détaillées
gluster volume info vol1
# Test d'écriture rapide depuis node1
sudo mkdir -p /mnt/gluster-test
sudo mount -t glusterfs node1:/vol1 /mnt/gluster-test
echo "GlusterFS OK $(date)" | sudo tee /mnt/gluster-test/test.txt
cat /mnt/gluster-test/test.txt
sudo umount /mnt/gluster-test
Pièges courants à l'installation
| Symptôme | Cause | Correction |
|---|---|---|
peer probe échoue | Résolution DNS impossible entre nœuds | Utiliser les IPs directement ou ajouter les nœuds dans /etc/hosts |
Transport endpoint not connected | Port 24007 bloqué | Ouvrir 24007/TCP et 24008/TCP entre tous les nœuds |
Brique "N/A" dans volume status | Répertoire de brique inexistant ou permissions | mkdir -p sur chaque nœud + vérifier le glusterd service |
| Performances dégradées | Réseau partagé avec d'autres services | Dédier une interface réseau à GlusterFS (transport.address-family) |
Monter un volume GlusterFS
Mount FUSE (client Linux)
# Installer le client
sudo apt-get install -y glusterfs-client
# Monter le volume
sudo mkdir -p /mnt/gluster/vol1
sudo mount -t glusterfs node1:/vol1 /mnt/gluster/vol1
# Permanent dans /etc/fstab
node1:/vol1 /mnt/gluster/vol1 glusterfs defaults,_netdev 0 0
Intégration Kubernetes (CSI)
Le driver CSI officiel (
gluster-csi-driver) n'est plus activement maintenu depuis la dépréciation de Heketi. Pour les clusters K8s existants qui utilisent GlusterFS, voici comment cela fonctionne.
Installation du CSI driver
# Cloner et déployer le driver
git clone https://github.com/gluster/gluster-csi-driver.git
cd gluster-csi-driver
kubectl apply -f deploy/kubernetes/
StorageClass
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: glusterfs
provisioner: org.gluster.glusterfs
parameters:
resturl: "http://<heketi-url>:8080"
restuser: admin
restuserkey: "<heketi-admin-key>"
volumetype: "replicate:3"
reclaimPolicy: Delete
allowVolumeExpansion: true
PVC GlusterFS (ReadWriteMany)
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: shared-data
namespace: production
spec:
accessModes:
- ReadWriteMany # Point fort de GlusterFS
storageClassName: glusterfs
resources:
requests:
storage: 10Gi
Mise à jour
# Ubuntu - mise à jour via PPA
sudo apt-get update
sudo apt-get install -y glusterfs-server glusterfs-client
# Redémarrer le daemon sur chaque nœud (rolling update)
sudo systemctl restart glusterd
gluster volume status vol1
# Rocky Linux
sudo dnf update -y glusterfs-server
sudo systemctl restart glusterd
Mettre à jour les nœuds un par un pour les volumes répliqués. Vérifier
gluster volume heal <vol> infoaprès chaque redémarrage.
Troubleshooting
# État du cluster et des volumes
gluster peer status
gluster volume status
gluster volume info <vol>
# Self-heal (réparation des données en cas de nœud absent temporairement)
gluster volume heal <vol> info
gluster volume heal <vol>
# Logs
sudo journalctl -u glusterd -f
sudo tail -f /var/log/glusterfs/glusterd.log
sudo tail -f /var/log/glusterfs/<vol>.log
Volume en Split-brain
# Identifier les fichiers en split-brain
gluster volume heal <vol> info split-brain
# Résolution manuelle (choisir le fichier de référence)
gluster volume heal <vol> split-brain source-brick <nœud>:<brique> <fichier>
Brique hors ligne
gluster volume status <vol>
# Repérer les briques Offline
# Après récupération du nœud, relancer le heal
gluster volume heal <vol>
gluster volume heal <vol> info healed
Commandes utiles
# Cluster
gluster peer status # Membres du cluster
gluster pool list # Tous les nœuds
# Volumes
gluster volume list # Lister les volumes
gluster volume info <vol> # Configuration d'un volume
gluster volume status <vol> # État des briques
gluster volume top <vol> read-perf # Performances en lecture
# Capacité
gluster volume status <vol> detail # Espace utilisé / disponible
# Ajouter une brique (scale-out)
gluster volume add-brick <vol> replica 3 node4:/data/gluster/vol1
gluster volume rebalance <vol> start # Rééquilibrer les données
Ressources
- Documentation officielle : https://docs.gluster.org/en/latest/
- Guide d'administration : https://docs.gluster.org/en/latest/Administrator-Guide/
- GitHub : https://github.com/gluster/glusterfs
- Releases : https://github.com/gluster/glusterfs/releases
- GlusterFS CSI Driver : https://github.com/gluster/gluster-csi-driver