GlusterFS – Brick aus Distributed Volume entfernen

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.