Nachfolgend geht es darum ein Distributed GlusterFS Volume von 3 Bricks auf 2 Bricks zu verkleinern. Der Speicher vom 3. Brick wird nicht mehr benötigt, sodass nur noch 2 Bricks laufen müssen. Während des eigentlichen Vorgangs, wird GlusterFS ein Rebalance durchführen und die Daten die auf dem zu entfernenden Brick liegen, auf die anderen beiden Bricks im Volume, aufteilen.
Konfiguration
- GlusterFS Version # gluster –version: 3.13.2 bis 5.4 durchgeführt
- Gluster Filesystem: Distributed
- Server: Brick1, Brick2, Brick3
- Volume: Vol1
GlusterFS Volume Informationen
# gluster volume info
Volume Name: vol1
Type: Distribute
Volume ID: xxx-xxx-xxx-xxx-xxx
Status: Started
Snapshot Count: 0
Number of Bricks: 3
Transport-type: tcp
Bricks:
Brick1: brick1:/media/brick1/vol1
Brick2: brick2:/media/brick2/vol1
Brick3: brick3:/media/brick3/vol1
Options Reconfigured:
performance.client-io-threads: on
storage.reserve: 0
performance.parallel-readdir: off
performance.readdir-ahead: off
auth.allow: 192.168.0.*
nfs.disable: off
transport.address-family: inet
mehr Details gibtes mit dem Befehl
# gluster volume status <volume> detail
GlusterFS shrink Volume
Nachdem also alle Voraussetzungen geklärt sind, genug Speicher auf den anderen Bricks ist frei und das Volume ist aktiv und läuft ohne Probleme, kann der 3. Brick entfernt werden. Der allgemeine Befehl dazu lautet:
# gluster volume remove-brick <VOLNAME> <BRICKNAME> start
Am obigen Beispiel dann:
# gluster volume remove-brick vol1 brick3:/media/brick3/vol1 start
Wenn der Vorgang zum verkleinern des Bricks ausgeführt wurde, kann der Status wie folgt beobachtet werden:
# gluster volume remove-brick vol1 brick3:/media/brick3/vol1 status
Der Status ist währendessen „in progress“ und sollte bei Erfolg in „complete“ enden. Dann kann das shrinken wie folgt abgeschlossen werden:
# gluster volume remove-brick vol1 brick3:/media/brick3/vol1 commit
Nun nochmal den Volume Status aufrufen und kontrollieren:
# gluster volume info
Gluster Stop shrink Volume
Muss das Verkleinern des Volumes abgebrochen werden so ist der remove-brick Befehl mit einem „stop“ auszuführen. Der Prozess wird abgebrochen, jedoch das Rebalance nicht rückgängig gemacht.
# gluster volume remove-brick <VOLNAME> <BRICKNAME> stop
Log auf dem Node/Brick der entfernt wird: /var/log/glusterfs/<volume>-rebalance.log
Fehler dht-rebalance.c:1052:__dht_check_free_space] 0-vol4-dht: Could not find any subvol with space accomodating the file … Write will cross min-free-disk for file … Looking for new subvol …
GlusterFS Bug bis min Version 5.4
An dieser Stelle möchte ich auf einen Bug in Gluster hinweisen. Ich habe ihn in allen Versionen von 3.x bis 5.x festgestellt. Das Problem ist die Option storage.reserve. Diese ist im Default mit 3% eingestellt. Bei meinem obigen verkleindern des Clusters, wurde meine Einstellung von 0% jedoch ignoriert und sich auf die 3% berufen. Das führte dazu, dass die verbleibenden Bricks nicht über 3% freien Speichers befüllt wurden, der Status auf complete Stand, das rebalance.log jedoch Fehler anzeigte.
Interessiert in verschiedenste IT Themen, schreibe ich in diesem Blog über Software, Hardware, Smart Home, Games und vieles mehr. Ich berichte z.B. über die Installation und Konfiguration von Software als auch von Problemen mit dieser. News sind ebenso spannend, sodass ich auch über Updates, Releases und Neuigkeiten aus der IT berichte. Letztendlich nutze ich Taste-of-IT als eigene Dokumentation und Anlaufstelle bei wiederkehrenden Themen. Ich hoffe ich kann dich ebenso informieren und bei Problemen eine schnelle Lösung anbieten. Wer meinen Aufwand unterstützen möchte, kann gerne eine Tasse oder Pod Kaffe per PayPal spenden – vielen Dank.