Dezentrale Archivierung über vier Nodes mit GlusterFS auf CentOS 5.4

Version 1.0

Autor: Falko Timme <ft [at] falkotimme [dot] com>

Folge mir auf Twitter!

Diese Anleitung zeigt wie man vier einzelne Archivserver auf denen CentOS läuft, kombiniert um einen großen Server für die Archivierung zu erhalten, die mittels GlusterFS dezentrale Archivierung erlaubt. Dem Client System (ebenfalls CentOS 5.4) wird es ermöglicht auf das Archiv zuzugreifen, als ob es ein lokales Dateisystem wäre.

GlusterFS ist ein gebündeltes Dateisystem, das auf mehrere Petabytes vergrößert werden kann. Es verbindet diverse Archivierungsbausteine über  Infiniband RDMA oder TCP/IP Zusammenschlatung in ein großes, paralleles Netzwerk-Dateisystem. Die Archivierungsbausteine können aus jeglicher Hardware bestehen wie x86 Servers mit SATA-II RAID und Infiniband HBA.

Es sei zu vermerken, dass diese Art der Archivierung (dezentrale Archivierung) keine  Zusätze für eine hohe Verfügbarkeit beinhaltet, wie es der Fall bei einer replizierten Archivierung ist.

Diese Anleitung kommt ohne Gewähr.

1 Vorbemerkung

In dieser Anleitung verwende ich fünf Systeme, vier Server  und ein Client:

  • server1.example.com: IP Adresse 192.168.0.100 (Server)
  • server2.example.com: IP Adresse 192.168.0.101 (Server)
  • server3.example.com: IP Adresse 192.168.0.102 (Server)
  • server4.example.com: IP Adresse 192.168.0.103 (Server)
  • client1.example.com: IP Adresse 192.168.0.104 (Client)

Alle fünf Systeme sollten in der Lage sein, die Hostnamen der anderen Systeme aufzulösen. Wenn das nicht durch DNS geschehen kann, solltest Du die  /etc/hosts Datei editieren, so dass es folgende Zeilen auf allen fünf Systemen enthält:

vi /etc/hosts

[...]
192.168.0.100   server1.example.com     server1
192.168.0.101   server2.example.com     server2
192.168.0.102   server3.example.com     server3
192.168.0.103   server4.example.com     server4
192.168.0.104   client1.example.com     client1
[...]

(Es ist auch möglich, IP Adressen anstatt Hostnamen zu verwenden. Wenn Du IP Adressen bevorzugst, kannst Du das Problem vernachlässigen ob die Hostnamen aufgelöst werden können oder nicht.)

2 Die GlusterFS Server einrichten

server1.example.com/server2.example.com/server3.example.com/server4.example.com:

GlusterFS ist nicht als Paket für CentOS verfügbar, daher müssen wir selbst eins erstellen. Zuerst installieren die Grundaustattung:

yum groupinstall ‚Development Tools‘

yum groupinstall ‚Development Libraries‘

yum install libibverbs-devel fuse-devel

Dann laden wir die aktuellste GlusterFS Version hier herunter: http://www.gluster.org/download.php und erstellen das Paket wie folgt:

cd /tmp

wget http://ftp.gluster.com/pub/gluster/glusterfs/2.0/LATEST/glusterfs-2.0.9.tar.gz

tar xvfz glusterfs-2.0.9.tar.gz

cd glusterfs-2.0.9

./configure

Am Ende des ./configure Befehls sollte man in etwa Folgendes sehen:

[…]

GlusterFS configure summary

===========================

FUSE client        : yes

Infiniband verbs   : yes

epoll IO multiplex : yes

Berkeley-DB        : yes

libglusterfsclient : yes

argp-standalone    : no

[root@server1 glusterfs-2.0.9]#

make &&
make install ldconfig

Überprüfe die GlusterFS Version hiernach, es sollte 2.0.9 sein:

glusterfs –version

[root@server1 glusterfs-2.0.9]# glusterfs –version

glusterfs 2.0.9 built on Mar 1 2010 15:34:50

Repository revision: v2.0.9

Copyright (c) 2006-2009 Gluster Inc. <http://www.gluster.com>

GlusterFS comes with ABSOLUTELY NO WARRANTY.

You may redistribute copies of GlusterFS under the terms of the GNU General Public License.

[root@server1 glusterfs-2.0.9]#

Als Nächstes erstellen wir einige Verzeichnisse:

mkdir /data/
mkdir /data/export
mkdir /data/export-ns
mkdir /etc/glusterfs

Nun erstellen wir die GlusterFS Konfigurationsdatei für den Server /etc/glusterfs/glusterfsd.vol , welche das Verzeichnis definiert, das exportiert werden soll (/data/export) und welcher Client sich verbinden darf (192.168.0.104 = client1.example.com):

vi /etc/glusterfs/glusterfsd.vol

volume posix
  type storage/posix
  option directory /data/export
end-volume

volume locks
  type features/locks
  subvolumes posix
end-volume

volume brick
  type performance/io-threads
  option thread-count 8
  subvolumes locks
end-volume

volume server
  type protocol/server
  option transport-type tcp
  option auth.addr.brick.allow 192.168.0.104
  subvolumes brick
end-volume

Es ist übrigens möglich, Platzhalter für die IP Adressen zu verwenden, z.B. 192.168.* und dass man mehrere IP Adressen spezifizieren kann, indem man sie mit einem Komma, z.B. 192.168.0.104,192.168.0.105 trennt.

Hiernach erstellen wir folgenden Symlink…

ln -s /usr/local/sbin/glusterfsd /sbin/glusterfsd

… und dann die System-Startuplinks für den GlusterFS Server, um ihn hiernach zu starten:

chkconfig –levels 35 glusterfsd on
/etc/init.d/glusterfsd start

Das könnte Dich auch interessieren …