GlusterFS – neue Bricks und neuen Stripe Count mit neuem Volume erstellen

System ist ein Debian Wheezy mit GlusterFS 3.4 und einem Volume Vol1 über 2 Bricks / Server vom Type Striped.
Ziel ist es vom Stripe Count 1*2=2 zu 1*4=4 durch hinzufügen 2 neuer Bricks / Server über ein neues Volume zu wechseln und mehr Performance zu erreichen. Würde ich zum 1*2=2, beide Bricks hinzufügen hätte ich ein 2*2=4, was bedeutet, dass nur auf 2 Server gleichzeitig beschrieben wird. Mit der Änderung auf 1*4=4 erfolgt der Schreibvorgang jedoch auf alle 4 Server gleichzeitig.

Grund hierfür ist einer meiner vorherigen Tests bei denen ich einfach den Stripe Count beim hinzufügen der Bricks zum selben Volume vergrößern wollte Link dorthin Das Ergebnis war immer ein voller Datenverlust, obwohl scheinbar alles gut lief und die Gesamtgrölße auch passte, aber Daten wurden keine angezeigt.

Nachfolgend beschreibe ich einen Weg der es im laufenden Betrieb, mit einer kleinen Unterbrechung, dennoch ermöglicht.

1. Kurzbeschreibung
– beide Bricks dem Trusted Pool hinzufügen
– auf allen 4 Bricks entsprechend neue Ordner für das neue Vol2 erstellen
– Vol2 erstellen und starten
– Vol2 zusätzlich auf einem Client mounten
– und alle Daten von Vol1 auf Vol2 verschieben oder bei ausreichend Platz gerne auch kopieren- abschließend die Daten kontrollieren und Vol1 stoppen und löschen

2. los gehts mit dem hinzufügen der 2 Bricks zum Trusted Pool – ausführen von Brick1 oder Brick2
# gluster peer probe glusternode3 && gluster peer probe glusternode4

2.1 Kontrolle mit
# gluster peer status
Number of Peers: 3
Hostname: glusternode1
Port: 24007
Uuid: 26ae02c1-5d95-4b4b-a29d-d645f57d441f
State: Peer in Cluster (Connected)

Hostname: glusternode3
Port: 24007
Uuid: e90e6261-79b9-4fc5-af34-6c1f923c597e
State: Peer in Cluster (Connected)

Hostname: glusternode4
Port: 24007
Uuid: 7088470c-955b-4d1b-bc83-ec3d1925adec
State: Peer in Cluster (Connected)

3. neue Ordner für die Daten auf jedem Brick erstellen – folgendes auf jedem Server ausführen
# mkdir -p /glusterfs/vol2

4. das neue Volume Vol2 mit Count 4 erstellen
# gluster volume create vol2 stripe 4 glusternode1:/glusterfs/vol2 glusternode1:/glusterfs/vol2 glusternode1:/glusterfs/vol2 glusternode1:/glusterfs/vol2
volume create: vol2: success: please start the volume to access data

5. das neue Volume 2 starten
# gluster volume start vol2
volume start: vol2: success

5.1 Kontrolle von Vol2
# gluster volume info vol2
Volume Name: vol2
Type: Stripe
Volume ID: b6adce45-ee99-4f2b-bd48-9d7e0fbcb827
Status: Started
Number of Bricks: 1 x 4 = 4
Transport-type: tcp
Bricks:
Brick1: glusternode1:/glusterfs/vol2
Brick2: glusternode2:/glusterfs/vol2
Brick3: glusternode3:/glusterfs/vol2
Brick4: glusternode4:/glusterfs/vol2

Das sieht doch gut aus.

6. das neue Volume auf einem Client mount (es kann irgendein Server für die Vebrindung gewählt werden), zuvor jedoch den Mountpunkt erstellen
# mkdir /mnt/gluster-vol2
# mount -t glusterfs glusternode1:/vol2 /mnt/gluster-vol2/

7. da hier bereits Vol1 gemounted ist kann nun das verschieben der Daten erfolgen
# mv /mnt/gluster-vol1/* /mnt/gluster-vol2

8. je nach Datenmenge dauert dies weniger oder länger, danach kann dann geprüft werden ob die Daten vorhanden sind und das alte Vol1 gestoppt und gelöscht werden
# gluster volume stop vol1
Stopping volume will make its data inaccessible. Do you want to continue? (y/n) y
glustervolume stop: vol1: success

# gluster volume delete vol1
Deleting volume will erase all information about the volume. Do you want to continue? (y/n) y
volume delete: vol1: success

So das war es – Ziel erreicht. 2 neue Bricks hinzugefügt, das Striping von 2 auf alle 4 geändert und die Daten erhalten.

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.