Mit GlusterFS kann man einen Hochverfügbaren Speicher aufbauen. Für den Versuch brauchen wir drei Server mit Ubuntu 18.04 (bionic). Ubuntu ist auf Laufwerk /dev/sda1 installiert und eine Datenpartition /dev/sdb1.

Wir erstellen eine GPT Partitionstabelle.

sudo parted /dev/sdb mklabel gpt

Legen ein Primäre Patition an.

sudo parted -a opt /dev/sdb mkpart primary ext4 0% 100%

Formatieren diese mit dem Dateisystem Ext4.

sudo mkfs.ext4 /dev/sdb1

Legen zwei Verzeichnisse an.

sudo mkdir /mnt/{data,gluster}

Fügen den Mount hinzu.

echo "/dev/sdb1 /mnt/data ext4 defaults 0 0" | sudo tee -a /etc/fstab

Unsere drei Server können wir in der Hosts Datei hinterlegen.

sudoedit /etc/hosts

192.168.56.101	hostA
192.168.56.102	hostB
192.168.56.103	hostC

Jetzt kann die Installation von GlusterFS beginnen.

sudo apt-get install glusterfs-server

Der Dienst sollte jetzt laufen.

sudo systemctl status glusterfs-server

Jetzt verbinden wir HostA mit HostB und HostC.

hostA$ sudo gluster peer probe hostB
hostA$ sudo gluster peer probe hostC

Die Anzahl der Peers ist jetzt zwei Stück.

sudo gluster peer status

Auf dem Datenlaufwerk legen wir ein Verzeichnis für das Gluster Volume an.

sudo mkdir -p /mnt/data/gv0

Jetzt erzeugen wir von HostA auf allen drei Server (A,B,C) das Gluster Volume.

hostA$ sudo gluster volume create gv0 192.168.56.101:/mnt/data/gv0 192.168.56.102:/mnt/data/gv0 192.168.56.103:/mnt/data/gv0

Das Volume gv0 müssen wir nur noch starten.

sudo gluster volume start gv0

Jetzt können wir uns weitere Informationen zu dem Volume ansehen.

sudo gluster volume info

Oder den Status überprüfen.

sudo gluster volume status

Oder ansehen, ob Dateien geöffnet sind.

sudo gluster volume top gv0 open

Der Mount von dem Gluster Volume erfolgt in das Verzeichnis /mnt/gluster.

sudo mount -t glusterfs 192.168.56.101:/gv0 /mnt/gluster/

Die Eintragung in Fstab macht es permanent.

hostA$ sudo vim /etc/fstab

192.168.56.101:/gv0  /mnt/gluster glusterfs  defaults,_netdev  0  0

Auf den Peers von HostB und HostC sieht die Konfiguration etwas anders aus.

hostB$ sudo vim /etc/fstab

192.168.56.101:/gv0  /mnt/gluster  glusterfs  defaults,_netdev,backupvolfile-server=192.168.56.102  0  0

hostC$ sudo vim /etc/fstab

192.168.56.101:/gv0  /mnt/gluster  glusterfs  defaults,_netdev,backupvolfile-server=192.168.56.103  0  0

Man kann auf jedem Host (A,B,C) lesen und schreiben. Die Daten werden zwischen allen Server syncron gehalten.

Man kann auch einen Peer wieder auf dem Cluster entfernen.

sudo gluster volume remove-brick gv0 192.168.0.102:/mnt/data/gv0

sudo gluster peer remove 192.168.56.102

Das ausgleichen von Daten im Volume kann man manuell starten.

sudo gluster volume rebalance gv0 start

Oder man Synchronisiert von einem Host alle anderen Peers.

sudo gluster volume sync 192.168.56.101 all

Quelle: Gluster Docs, Architektur