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.