Stockage

GlusterFS

Système de fichiers distribué Red Hat, scalable horizontalement. Volumes répliqués, distribués ou erasure coding. ReadWriteMany natif. Intégration K8s via CSI.

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

ComposantValeur
ArchitecturePeer-to-peer (pas de métadonnées centralisées)
Protocoles clientsFUSE (glusterfs mount), NFS (via ganesha), SMB, REST
RéplicationConfigurable (1x distribué à 3x répliqué)
Access modes K8sReadWriteOnce, ReadWriteMany
Prérequis nœudsPackage glusterfs-server sur chaque nœud de stockage

Types de volumes

TypeDescriptionUsage
DistributedFichiers répartis sur les briques sans réplicationCapacité maximale, pas de HA
ReplicatedCopies identiques sur N briquesHA, lecture rapide
Distributed-ReplicatedDistribution + réplication (ex: 2x3 = 6 briques)Capacité + HA (recommandé prod)
DispersedErasure coding (économe en espace vs réplication)Grandes capacités avec protection
Distributed-DispersedDistribution + erasure codingTrès grande capacité + protection

Prérequis

RessourceValeur
Nœuds2 minimum (3+ pour HA)
OSRHEL/CentOS 7+, Ubuntu 18.04+, Fedora
RéseauDédié recommandé (1 Gbps minimum, 10 Gbps recommandé)
DisquesPartitions ou disques dédiés par brique
Ports24007 (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ômeCauseCorrection
peer probe échoueRésolution DNS impossible entre nœudsUtiliser les IPs directement ou ajouter les nœuds dans /etc/hosts
Transport endpoint not connectedPort 24007 bloquéOuvrir 24007/TCP et 24008/TCP entre tous les nœuds
Brique "N/A" dans volume statusRépertoire de brique inexistant ou permissionsmkdir -p sur chaque nœud + vérifier le glusterd service
Performances dégradéesRéseau partagé avec d'autres servicesDé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> info aprè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

Newsletter · 2 000+ abonnés

Reste au courant de ce qui bouge en prod

RudeOps veille devops hebdo, droit au but.

Gratuit · Sans spam · Désinscription en un clic