Wie man GlusterFS unter Ubuntu installiert und konfiguriert

GlusterFS ist ein kostenloses, quelloffenes und skalierbares Netzwerk-Dateisystem, das zunächst von Gluster Inc. und später von Redhat entwickelt wurde. Es wurde speziell für datenintensive Workloads wie Cloud-Speicher, CDN und Medien-Streaming entwickelt. Es ist in der Lage, Petabytes an Daten zu verarbeiten und kann daher Tausende von Clients bedienen. Er unterstützt verschiedene Protokolle wie NFS, SMB, CIFS, HTTP und FTP. Mit GlusterFS kannst du verschiedene Plattenspeicherressourcen in einem einzigen globalen Namespace zusammenfassen.

In diesem Tutorial lernen wir, wie du ein repliziertes GlusterFS-Volume unter Ubuntu 18.04 einrichtest.

Voraussetzungen

  • Zwei Server mit Ubuntu 18.04 und je 2 GB externer Festplatte.
  • Eine statische IP-Adresse 172.20.10.5 ist auf Knoten1 und 172.20.10.6 auf Knoten2 konfiguriert.
  • Auf beiden Servern ist ein Root-Passwort eingerichtet.

Erste Schritte

Bevor du beginnst, musst du beide Server mit der neuesten Version aktualisieren. Du kannst sie aktualisieren, indem du den folgenden Befehl auf beiden Servern ausführst.

apt-get update -y
apt-get upgrade -y

Sobald beide Server aktualisiert sind, musst du sie neu starten, damit die Änderungen übernommen werden.

Als Nächstes musst du auf beiden Servern die Hostnamenauflösung einrichten, damit beide Server über ihren Hostnamen miteinander kommunizieren können. Dazu kannst du die Datei /etc/hosts auf beiden Servern bearbeiten:

nano /etc/hosts

Füge die folgenden Zeilen ein:

172.20.10.5 node1
172.20.10.6 node2

Speichere und schließe die Datei, wenn du fertig bist.

GlusterFS installieren

Zuerst musst du das GlusterFS-Paket auf beiden Servern installieren. Standardmäßig ist GlusterFS nicht im Standard-Repository von Ubuntu 18.04 verfügbar. Daher musst du das GlusterFS-Repository auf beiden Servern hinzufügen.

Installiere zunächst das benötigte Paket mit dem folgenden Befehl:

apt-get install software-properties-common -y

Als Nächstes fügst du das Repository mit dem folgenden Befehl hinzu:

add-apt-repository ppa:gluster/glusterfs-5

Als Nächstes installierst du den GlusterFS-Server mit dem folgenden Befehl:

apt-get install glusterfs-server -y

Wenn die Installation abgeschlossen ist, starte den GlusterFS-Dienst und aktiviere ihn mit folgendem Befehl, damit er beim Booten gestartet wird:

systemctl start glusterd
systemctl enable glusterd

Du kannst den Status des GlusterFS-Dienstes auch mit dem folgenden Befehl überprüfen:

systemctl status glusterd

Du solltest die folgende Ausgabe sehen:

? glusterd.service - GlusterFS, a clustered file-system server
   Loaded: loaded (/lib/systemd/system/glusterd.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2019-11-07 12:51:15 UTC; 48s ago
 Main PID: 7199 (glusterd)
    Tasks: 8 (limit: 505)
   CGroup: /system.slice/glusterd.service
           ??7199 /usr/sbin/glusterd -p /var/run/glusterd.pid --log-level INFO

Nov 07 12:51:06 ubuntu systemd[1]: Starting GlusterFS, a clustered file-system server...
Nov 07 12:51:15 ubuntu systemd[1]: Started GlusterFS, a clustered file-system server.

GlusterFS-Speicher erstellen

Als Nächstes musst du auf beiden Servern eine Partition auf der externen Festplatte (/dev/sdb) erstellen.

Um eine neue Partition auf /dev/sdb zu erstellen, führe den folgenden Befehl aus:

fdisk /dev/sdb

Du solltest die folgende Ausgabe sehen:

Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x06091fe8.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-4194303, default 2048): 
Last sector, +sectors or +size{K,M,G,T,P} (2048-4194303, default 4194303): 

Created a new partition 1 of type 'Linux' and of size 2 GiB.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Als Nächstes formatierst du die Partition mit dem folgenden Befehl:

mkfs.xfs /dev/sdb1

Du solltest die folgende Ausgabe sehen:

meta-data=/dev/sdb1              isize=512    agcount=4, agsize=131008 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=0, rmapbt=0, reflink=0
data     =                       bsize=4096   blocks=524032, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

Als Nächstes erstellst du auf beiden Servern ein Verzeichnis für den GlusterFS-Speicher mit folgendem Befehl:

mkdir /glusterdata

Als Nächstes mountest du die Festplatte /dev/sdb1 in das Verzeichnis /glusterdata.

mount.xfs /dev/sdb1 /glusterdata

Als Nächstes sorgst du dafür, dass der Mount über einen Neustart hinweg bestehen bleibt, indem du die Datei /etc/fstab bearbeitest:

nano /etc/fstab

Füge die folgende Zeile hinzu:

/dev/sdb1 /glusterdata xfs defaults 0 0

Speichere und schließe die Datei und führe dann den folgenden Befehl aus, um die Änderungen zu übernehmen:

mount -a

Jetzt kannst du das gemountete Verzeichnis mit dem folgenden Befehl überprüfen:

df -h

Du solltest die folgende Ausgabe sehen:

Filesystem      Size  Used Avail Use% Mounted on
udev            211M     0  211M   0% /dev
tmpfs            49M 1016K   48M   3% /run
/dev/sda2        30G  4.3G   25G  16% /
tmpfs           241M   12K  241M   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           241M     0  241M   0% /sys/fs/cgroup
/dev/loop0       87M   87M     0 100% /snap/core/4486
tmpfs            49M     0   49M   0% /run/user/0
/dev/loop1       90M   90M     0 100% /snap/core/7917
/dev/sdb1       2.0G   35M  2.0G   2% /glusterdata

GlusterFS-Volumen konfigurieren

Zuerst musst du einen vertrauenswürdigen Speicherpool erstellen, indem du node2 auf node1 hinzufügst. Dazu führst du den folgenden Befehl auf node1 aus:

gluster peer probe node2

Du kannst den Speicherpool mit dem folgenden Befehl auflisten:

gluster pool list

Du solltest die folgende Ausgabe erhalten:

UUID					Hostname 	State
d049b519-9210-4bfa-a1c6-0d1454a88ea0	node2    	Connected 
dbb9252e-6082-4d31-aaef-1b99e0e0c369	localhost	Connected 

Als Nächstes erstellst du auf beiden Knoten ein Brick-Verzeichnis mit dem folgenden Befehl:

mkdir /glusterdata/vol1

Als Nächstes erstellst du ein Volume namens vol1 mit zwei Replikaten:

gluster volume create vol1 replica 2 node1:/glusterdata/vol1 node2:/glusterdata/vol1

Starte das Volume mit folgendem Befehl:

gluster volume start vol1

Du kannst den Status des erstellten Volumes mit dem folgenden Befehl überprüfen:

gluster volume status

Du solltest die folgende Ausgabe erhalten:

Status of volume: vol1
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick node1:/glusterdata/vol1               49152     0          Y       7987 
Brick node2:/glusterdata/vol1               49152     0          Y       18565
Self-heal Daemon on localhost               N/A       N/A        Y       8010 
Self-heal Daemon on node2                   N/A       N/A        Y       18588
 
Task Status of Volume vol1
------------------------------------------------------------------------------
There are no active volume tasks

Du kannst die Informationen über das erstellte Volume auch mit folgendem Befehl einsehen:

gluster volume info vol1

Du solltest die folgende Ausgabe erhalten:

Volume Name: vol1
Type: Replicate
Volume ID: e093ae7a-70ac-42b8-ab3f-a8bd186c5740
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: node1:/glusterdata/vol1
Brick2: node2:/glusterdata/vol1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off

Als Nächstes mountest du das erstellte Volume im Verzeichnis /mnt auf beiden Knoten, indem du die Datei /etc/fstab bearbeitest, damit dein Volume nach dem Booten des Servers verfügbar ist.

nano /etc/fstab

Füge die folgende Zeile hinzu:

localhost:/vol1 /mnt glusterfs defaults,_netdev 0 0

Speichere und schließe die Datei, wenn du fertig bist. Führe dann den folgenden Befehl aus, um die Änderungen zu übernehmen:

mount -a

Replikation testen

Der GlusterFS-Server ist nun installiert und konfiguriert. Jetzt ist es an der Zeit, die Replikation zwischen zwei Knoten zu testen.

Erstelle zunächst zwei Dateien auf Knoten1:

touch /mnt/file1 /mnt/file2

Gehe nun zu Knoten2 und führe den folgenden Befehl aus:

ls -l /mnt/

Du solltest die gleichen Dateien sehen, die du auf Node1 erstellt hast:

total 0
-rw-r--r-- 1 root root 0 Nov  7 13:42 file1
-rw-r--r-- 1 root root 0 Nov  7 13:42 file2

Beende nun den GlusterFS-Dienst auf Knoten2 mit folgendem Befehl:

service glusterd stop

Als Nächstes gehst du zu node1 und überprüfst den Peer-Status:

gluster peer status

Du solltest sehen, dass Node2 abgekoppelt worden ist:

Number of Peers: 1

Hostname: node2
Uuid: d049b519-9210-4bfa-a1c6-0d1454a88ea0
State: Peer in Cluster (Disconnected)

Du kannst auch den Volume-Status mit folgendem Befehl überprüfen:

gluster volume status

Du solltest die folgende Ausgabe sehen:

Status of volume: vol1
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick node1:/glusterdata/vol1               49152     0          Y       7987 
Self-heal Daemon on localhost               N/A       N/A        Y       8010 
 
Task Status of Volume vol1
------------------------------------------------------------------------------
There are no active volume tasks

Als Nächstes erstellst du zwei weitere Dateien auf node1:

touch /mnt/file3 /mnt/file4

Gehe nun zu Node2 und starte den GlusterFS-Dienst mit dem folgenden Befehl:

service glusterd start

Überprüfe nun das Verzeichnis /mnt auf node2:

ls -l /mnt/

Du solltest sehen, dass alle Dateien von Knoten1 repliziert wurden und jetzt verfügbar sind.

total 0
-rw-r--r-- 1 root root 0 Nov  7 13:42 file1
-rw-r--r-- 1 root root 0 Nov  7 13:42 file2
-rw-r--r-- 1 root root 0 Nov  7 13:44 file3
-rw-r--r-- 1 root root 0 Nov  7 13:44 file4

Fazit

Herzlichen Glückwunsch! Du hast erfolgreich ein repliziertes Glusterfs-Volumen mit zwei Knoten auf einem Ubuntu 18.04 Server installiert und konfiguriert. Du kannst auch Distributed Glusterfs Volume, Distributed Replicated Glusterfs Volume, Striped Glusterfs Volume und Distributed Striped Glusterfs Volume einrichten.

Das könnte dich auch interessieren …