GlusterFS ist ein verteiltes Dateisystem für skalierbare Speicherlösungen. Es ermöglicht das Pooling von Storage über mehrere Server hinweg.
Installation
# Debian/Ubuntu
apt install glusterfs-server glusterfs-client
# RHEL/CentOS
dnf install glusterfs-server glusterfs-client
# Starten
systemctl enable glusterd
systemctl start glusterdCluster einrichten
Nodes verbinden
# Auf Node 1 (gluster1)
gluster peer probe gluster2
gluster peer probe gluster3
# Status prüfen
gluster peer status
# Pool-Liste
gluster pool listFirewall
# Ports öffnen
firewall-cmd --permanent --add-service=glusterfs
firewall-cmd --permanent --add-port=24007-24008/tcp
firewall-cmd --permanent --add-port=49152-49251/tcp
firewall-cmd --reload
# UFW
ufw allow from 192.168.1.0/24 to any port 24007:24008 proto tcp
ufw allow from 192.168.1.0/24 to any port 49152:49251 proto tcpVolume-Typen
Distributed (Standard)
# Daten verteilt ohne Redundanz
gluster volume create dist-vol \
gluster1:/data/brick1 \
gluster2:/data/brick2 \
gluster3:/data/brick3
gluster volume start dist-volReplicated
# Gespiegelte Daten (RAID 1-artig)
gluster volume create repl-vol replica 3 \
gluster1:/data/brick1 \
gluster2:/data/brick1 \
gluster3:/data/brick1
gluster volume start repl-volDistributed-Replicated
# Verteilt + Repliziert (für große Cluster)
gluster volume create dist-repl-vol replica 2 \
gluster1:/data/brick1 \
gluster2:/data/brick1 \
gluster3:/data/brick1 \
gluster4:/data/brick1
gluster volume start dist-repl-volDispersed (Erasure Coding)
# Ähnlich RAID 5/6
gluster volume create disp-vol disperse 3 redundancy 1 \
gluster1:/data/brick1 \
gluster2:/data/brick1 \
gluster3:/data/brick1
gluster volume start disp-volVolume verwalten
Status anzeigen
# Volume-Info
gluster volume info
# Bestimmtes Volume
gluster volume info vol-name
# Status
gluster volume status vol-name
# Detailliert
gluster volume status vol-name detailVolume erweitern
# Bricks hinzufügen (Distributed)
gluster volume add-brick vol-name \
gluster4:/data/brick1
# Bei Replica: Muss Vielfaches sein
gluster volume add-brick repl-vol replica 3 \
gluster4:/data/brick1 \
gluster5:/data/brick1 \
gluster6:/data/brick1Volume verkleinern
# Brick entfernen
gluster volume remove-brick vol-name \
gluster3:/data/brick1 start
# Status prüfen
gluster volume remove-brick vol-name \
gluster3:/data/brick1 status
# Abschließen
gluster volume remove-brick vol-name \
gluster3:/data/brick1 commitVolume stoppen/löschen
# Stoppen
gluster volume stop vol-name
# Löschen
gluster volume delete vol-nameClient-Zugriff
Native Client (FUSE)
# Mounten
mount -t glusterfs gluster1:/vol-name /mnt/gluster
# In /etc/fstab
gluster1:/vol-name /mnt/gluster glusterfs defaults,_netdev 0 0
# Mit Backup-Server
gluster1,gluster2:/vol-name /mnt/gluster glusterfs defaults,_netdev,backupvolfile-server=gluster2 0 0NFS (v3)
# NFS aktivieren
gluster volume set vol-name nfs.disable off
# Mounten
mount -t nfs -o vers=3 gluster1:/vol-name /mnt/glusterOptionen und Tuning
Häufige Optionen
# Performance
gluster volume set vol-name performance.cache-size 256MB
gluster volume set vol-name performance.io-thread-count 32
# Netzwerk
gluster volume set vol-name network.ping-timeout 10
# Sicherheit
gluster volume set vol-name auth.allow 192.168.1.*
# Quorum (für Replica)
gluster volume set vol-name cluster.quorum-type autoOptionen anzeigen
# Alle Optionen
gluster volume get vol-name all
# Bestimmte Option
gluster volume get vol-name performance.cache-sizeOption zurücksetzen
gluster volume reset vol-name performance.cache-sizeSelf-Heal
Status prüfen
# Heal-Info
gluster volume heal vol-name info
# Nur problematische Dateien
gluster volume heal vol-name info heal-failed
# Split-Brain
gluster volume heal vol-name info split-brainHeal starten
# Full Heal
gluster volume heal vol-name full
# Bestimmter Brick
gluster volume heal vol-name brick gluster1:/data/brick1Geo-Replikation
Einrichten
# SSH-Keys austauschen
gluster system:: execute gsec_create
gluster volume geo-replication vol-name gluster-dr::dr-vol create push-pem
# Starten
gluster volume geo-replication vol-name gluster-dr::dr-vol startStatus
gluster volume geo-replication vol-name gluster-dr::dr-vol statusSnapshots
Snapshot erstellen
# Snapshot
gluster snapshot create snap1 vol-name
# Mit Beschreibung
gluster snapshot create snap1 vol-name description "Vor Update"Snapshots verwalten
# Auflisten
gluster snapshot list vol-name
# Info
gluster snapshot info snap1
# Wiederherstellen
gluster snapshot restore snap1
# Löschen
gluster snapshot delete snap1Monitoring
Statistiken
# Volume-Profile aktivieren
gluster volume profile vol-name start
# Statistiken anzeigen
gluster volume profile vol-name info
# Deaktivieren
gluster volume profile vol-name stopTop-Statistiken
# Read/Write
gluster volume top vol-name read-perf
# Open-Aufrufe
gluster volume top vol-name openTroubleshooting
Brick offline
# Status prüfen
gluster volume status vol-name
# Brick prüfen
ls -la /data/brick1/.glusterfs
# Glusterd neustarten
systemctl restart glusterdSplit-Brain
# Split-Brain erkennen
gluster volume heal vol-name info split-brain
# Auflösen (größere Datei behalten)
gluster volume heal vol-name split-brain bigger-file /path/to/file
# Oder von bestimmtem Brick
gluster volume heal vol-name split-brain source-brick gluster1:/data/brick1 /path/to/fileVerbindungsprobleme
# Peer-Status
gluster peer status
# Logs prüfen
tail -f /var/log/glusterfs/glusterd.log
# TCP-Verbindungen
ss -tn | grep 24007Praktisches Beispiel
Hochverfügbarer Web-Storage
# Auf allen 3 Nodes
mkdir -p /data/brick1
mkfs.xfs /dev/sdb1
mount /dev/sdb1 /data/brick1
# Cluster bilden (auf Node 1)
gluster peer probe gluster2
gluster peer probe gluster3
# Repliziertes Volume
gluster volume create web-data replica 3 \
gluster1:/data/brick1/web \
gluster2:/data/brick1/web \
gluster3:/data/brick1/web
gluster volume start web-data
# Optionen setzen
gluster volume set web-data auth.allow 192.168.1.*
gluster volume set web-data performance.cache-size 256MB
# Auf Web-Servern mounten
mount -t glusterfs gluster1:/web-data /var/www/htmlStatus-Script
#!/bin/bash
# gluster-status.sh
echo "=== Cluster Status ==="
gluster peer status
echo ""
echo "=== Volume Status ==="
gluster volume status all
echo ""
echo "=== Heal Status ==="
for vol in $(gluster volume list); do
echo "--- $vol ---"
gluster volume heal $vol info summary
doneZusammenfassung
| Volume-Typ | Beschreibung | Min. Bricks | |------------|--------------|-------------| | Distributed | Verteilt ohne Redundanz | 1 | | Replicated | Gespiegelt | 2 | | Dispersed | Erasure Coding | 3 | | Dist-Repl | Verteilt + Gespiegelt | 4 |
| Befehl | Funktion | |--------|----------| | gluster peer probe | Node hinzufügen | | gluster volume create | Volume erstellen | | gluster volume info | Volume-Info | | gluster volume heal | Self-Heal |
| Port | Dienst | |------|--------| | 24007 | glusterd | | 24008 | Management | | 49152+ | Brick-Ports |
Fazit
GlusterFS bietet flexible verteilte Speicherlösungen. Replizierte Volumes sorgen für Ausfallsicherheit. Dispersed Volumes bieten Speichereffizienz. Self-Heal repariert inkonsistente Daten automatisch. Für sehr große Cluster oder S3-Zugriff ist Ceph oft besser geeignet.