GlusterFS unter CentOS 7 installieren

GlusterFS ist ein verteilte Dateisystem, welches Dateisysteme von mehreren Servern als ein Dateisystem abbilden kann. Neben der Verteilung ist es auch möglich Redundanzen ähnlich eines RAID aufzubauen. Im folgenden Artikel wird die Installation unter CentOS 7 kurz vorgestellt.

In diesem Artikel wird von zwei Servern mit CentOS 7 ausgegangen. Installiert wird die zum jetzigen Zeitpunkt(31.10.2015) aktuelle Version 3.7 von GlusterFS.

  • Server 1: IP 192.168.0.1
  • Server 2: IP 192.168.0.2

Im weiteren Verlauf ist gekennzeichnet, auf welchem Server die jeweiligen Befehle ausgeführt werden müssen.

Server 1 + 2

Ein schnellen Blick in die Paketliste von CentOS 7 lässt zunächst Euphorie aufkommen, denn es scheint als sind die Pakete für den Betrieb von GlusterFS bereits vorhanden. Jedoch fehlt das alles entscheidende Server Paket. Somit ist es nur möglich ein vorhandenes GlusterFS als Client einzubinden, jedoch nicht aktiv daran teilzunehmen. Abhilfe schaffen hier die Pakete, welche direkt durch das GlusterFS Projekt bereitgestellt werden.

Bevor diese benutzt werden, sollte das EPEL Repository eingebunden werden. Anschießend kann das GlusterFS Paketrepository wie folgt eingebunden werden.

$ cd /tmp
$ wget http://download.gluster.org/pub/gluster/glusterfs/3.7/LATEST/CentOS/glusterfs-epel.repo
$ sudo mv glusterfs-epel.repo /etc/yum.repos.d/

Danach sollte sich das Server Paket installieren lassen.

$ sudo yum install glusterfs-server

Als Dateisystem für die Brick genannten Datenpartitionen wird XFS empfohlen. Sind die Tools dafür noch nicht installiert, sollte dies an dieser Stelle nachgeholt werden.

$ sudo yum install xfsprogs

Anschließend muss auf der gewünschten Partition ein XFS erzeugen.

Achtung: Es sollte darauf geachtet werden, dass wirklich die gewünschte Partition formatiert wird. Bei der Formatierung gehen alle Daten verloren.

$ sudo mkfs.xfs -i size=512 /dev/sdb1

Vor dem einhängen der Partition muss noch das entsprechende Verzeichnis angelegt werden. Welcher Ordner verwendet wird, ist prinzipiell egal und wird beim eigentlichen Anlegen des Dateisystemverbundes im weiteren Verlauf angegeben.

$ sudo mkdir -p /srv/glusterfs/brick1

Anschließend muss folgende Zeile in der Datei /etc/fstab ergänzt werden.

/dev/sdb1      /srv/glusterfs/brick1   xfs defaults 0 0

Jetzt kann die Partition eingehängt werden.

$ sudo mount -a

Anschließend sollte überprüft werden ob das Einhängen erfolgreich war.

$ mount

Falls noch nicht während der Installation geschehen sollte der GlusterFS Daemon aktiviert und gestartet werden.

$ sudo systemctl enable glusterd.service
$ sudo systemctl start glusterd.service
$ sudo systemctl status glusterd.service
glusterd.service - GlusterFS, a clustered file-system server
   Loaded: loaded (/usr/lib/systemd/system/glusterd.service; enabled)
   Active: active (running) since Fri 2015-10-31 13:54:39 CET; 5s ago
  Process: 27656 ExecStart=/usr/sbin/glusterd -p /var/run/glusterd.pid (code=exited, status=0/SUCCESS)
 Main PID: 27657 (glusterd)
   CGroup: /system.slice/glusterd.service
               └─27657 /usr/sbin/glusterd -p /var/run/glusterd.pid

Oct 31 13:54:39 server1 systemd[1]: Started GlusterFS, a clustered file-system server.

Anschließend kann noch ein Verzeichnis für das Gluster Volume angelegt werden.

$ sudo mkdir -p /srv/glusterfs/brick1/gv0

Damit die Server miteinander kommunizieren können, müssen folgende Ports geöffnet werden.

  • Port 111 TCP und UDP
  • Port 2049 und 24007 TCP
  • Port 49152 TCP für Brick 1, Port 49153 für Brick 2 ...

Server 1

Jetzt kann Server 1 mit Server 2 ...

$ sudo gluster peer probe 192.168.0.2

$ sudo gluster peer status
Number of Peers: 1

Hostname: 192.168.0.2
Uuid: 0a95fe4d-32c3-acb2-4fbd-7d0e03dafce8
State: Peer in Cluster (Connected)

Server 2

... und Server 2 mit Server 1 bekannt gemacht werden.

$ sudo gluster peer probe 192.168.0.1

Server 1

Danach ist es Zeit das Volume zu erstellen und zu starten. In diesem Beispiel, werden die Dateien redundant auf beiden Servern abgelegt.

$ sudo gluster volume create gv0 replica 2 192.168.0.1:/srv/glusterfs/brick1/gv0 192.168.0.2:/srv/glusterfs/brick1/gv0
volume create: gv0: success: please start the volume to access data

$ sudo gluster volume start gv0
volume start: gv0: success

Der Status der Volumes sollte anschließend dem folgenden entsprechen.

$ sudo gluster volume info

Volume Name: gv0
Type: Replicate
Volume ID: 3a059ae0-5ce7-44cb-b4ab-17b46d00241c
Status: Started
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: 192.168.0.1:/srv/glusterfs/brick1/gv0
Brick2: 192.168.0.2:/srv/glusterfs/brick1/gv0
Options Reconfigured:
performance.readdir-ahead: on

Server 1 + 2

Das Gluster Volume kann anschließend auf beiden Servern eingehängt werden. In diesem Fall kann hierfür auf beiden Servern localhost(127.0.0.1) verwendet werden.

$ sudo mount -t glusterfs 127.0.0.1:/gv0 /mnt
$ df -h
Filesystem                                  Size  Used Avail Use% Mounted on
[...]
127.0.0.1:/gv0                             1014M   33M  982M   4% /mnt

Verwandte Artikel