Dieses Tutorial zeigt, wie Sie einen eigenständigen Speicherserver unter CentOS 5.4 einrichten. Anstelle von NFS werde ich hier GlusterFS verwenden. Das Client-System kann auf den Speicher zugreifen, als wäre es ein lokales Dateisystem. GlusterFS ist ein geclustertes Dateisystem, das auf mehrere Petabyte skaliert werden kann. Es aggregiert verschiedene Speicherbausteine über Infiniband-RDMA- oder TCP/IP-Verbindungen zu einem großen parallelen Netzwerkdateisystem. Storage Bricks können aus jeder handelsüblichen Hardware wie x86_64-Servern mit SATA-II-RAID und Infiniband-HBA hergestellt werden.
Ich gebe keine Garantie dafür, dass dies bei Ihnen funktioniert!
1 Vorbemerkung
In diesem Tutorial verwende ich zwei Systeme, einen Server und einen Client:
- server1.example.com:IP-Adresse 192.168.0.100 (Server)
- client1.example.com:IP-Adresse 192.168.0.101 (Client)
Beide Systeme sollten in der Lage sein, den Hostnamen des anderen Systems aufzulösen. Wenn dies nicht über DNS möglich ist, sollten Sie die Datei /etc/hosts so bearbeiten, dass sie auf beiden Systemen die folgenden zwei Zeilen enthält:
vi /etc/hosts
[...]192.168.0.100 server1.example.com server1192.168.0.101 client1.example.com client1[...] |
(Es ist auch möglich, IP-Adressen anstelle von Hostnamen im folgenden Setup zu verwenden. Wenn Sie lieber IP-Adressen verwenden, müssen Sie sich nicht darum kümmern, ob die Hostnamen aufgelöst werden können oder nicht.)
2 Einrichten des GlusterFS-Servers
server1.beispiel.com:
GlusterFS ist nicht als Paket für CentOS 5.4 verfügbar, daher müssen wir es selbst erstellen. Zuerst installieren wir die Voraussetzungen:
yum groupinstall 'Entwicklungstools'
yum groupinstall 'Entwicklungsbibliotheken'
yum installiere libibverbs-devel fuse-devel
Dann laden wir die neueste GlusterFS-Version von http://www.gluster.org/download.php herunter und erstellen sie 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 sollten Sie etwa Folgendes sehen:
[...]
GlusterFS-Konfigurationszusammenfassung
=========================
FUSE-Client :ja
Infiniband-Verben : ja
epoll IO multiplex : ja
Berkeley-DB : ja
libglusterfsclient : ja
argp-standalone : nein
[[email protected] glusterfs-2.0.9]#
make &&make install
ldconfig
Überprüfen Sie anschließend die GlusterFS-Version (sollte 2.0.9 sein):
glusterfs --version
[[email protected] glusterfs-2.0.9]# glusterfs --version
glusterfs 2.0.9 erstellt am 1. März 2010 15:34:50
Repository-Revision:v2.0.9
Copyright ( c) 2006-2009 Gluster Inc.
Für GlusterFS gilt ABSOLUT KEINE GEWÄHRLEISTUNG.
Sie dürfen Kopien von GlusterFS unter den Bedingungen der GNU General Public License weitergeben.
[[email protected] glusterfs-2.0.9]#
Als nächstes erstellen wir ein paar Verzeichnisse:
mkdir /data/
mkdir /data/export
mkdir /data/export-ns
mkdir /etc/glusterfs
Jetzt erstellen wir die GlusterFS-Serverkonfigurationsdatei /etc/glusterfs/glusterfsd.vol, die definiert, welches Verzeichnis exportiert wird (/data/export) und welcher Client sich verbinden darf (192.168.0.101 =client1.example.com):
vi /etc/glusterfs/glusterfsd.vol
volume posix type storage/posix option directory /data/exportend-volumevolume locks type features/locks option required-locks on subvolumes posixend-volumevolume brick type performance /io-threads option thread-count 8 subvolumes locksend-volumevolume server type protocol/server option transport-type tcp option auth.addr.brick.allow 192.168.0.101 # Bearbeiten und fügen Sie hier eine Liste erlaubter Clients durch Kommas getrennte IP-Adressen(Namen) hinzu Subvolumes brickend-Volume |
Bitte beachten Sie, dass für die IP-Adressen Wildcards verwendet werden können (z. B. 192.168.*) und mehrere IP-Adressen durch Komma getrennt angegeben werden können (z. B. 192.168.0.101,192.168.0.102).
Danach erstellen wir den folgenden Symlink...
ln -s /usr/local/sbin/glusterfsd /sbin/glusterfsd
... und dann die Systemstartlinks für den GlusterFS-Server und starten Sie ihn:
chkconfig --levels 35 glusterfsd on
/etc/init.d/glusterfsd start
3 Einrichten des GlusterFS-Clients
client1.beispiel.com:
GlusterFS ist nicht als Paket für CentOS 5.4 verfügbar, daher müssen wir es selbst erstellen. Zuerst installieren wir die Voraussetzungen:
yum groupinstall 'Entwicklungstools'
yum groupinstall 'Entwicklungsbibliotheken'
yum installiere libibverbs-devel fuse-devel
Dann laden wir das Fuse-Kernel-Modul...
modprobe-Fuse
... und erstellen Sie die Datei /etc/rc.modules mit folgendem Inhalt, damit das Fuse-Kernel-Modul automatisch geladen wird, wenn das System bootet:
vi /etc/rc.modules
Modprobe-Fuse |
Machen Sie die Datei ausführbar:
chmod +x /etc/rc.modules
Dann laden wir die Quellen von GlusterFS 2.0.9 herunter (bitte beachten Sie, dass dies dieselbe Version ist, die auf dem Server installiert ist!) und bauen GlusterFS 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 sollten Sie etwa Folgendes sehen:
[...]
GlusterFS-Konfigurationszusammenfassung
=========================
FUSE-Client :ja
Infiniband-Verben : ja
epoll IO multiplex : ja
Berkeley-DB : ja
libglusterfsclient : ja
argp-standalone : nein
make &&make install
ldconfig
Überprüfen Sie anschließend die GlusterFS-Version (sollte 2.0.9 sein):
glusterfs --version
[[email protected] glusterfs-2.0.9]# glusterfs --version
glusterfs 2.0.9 erstellt am 1. März 2010 15:58:06
Repository-Revision:v2.0.9
Copyright ( c) 2006-2009 Gluster Inc.
Für GlusterFS gilt ABSOLUT KEINE GEWÄHRLEISTUNG.
Sie dürfen Kopien von GlusterFS unter den Bedingungen der GNU General Public License weitergeben.
[[email protected] glusterfs-2.0.9]#
Dann erstellen wir die folgenden zwei Verzeichnisse:
mkdir /mnt/glusterfs
mkdir /etc/glusterfs
Als nächstes erstellen wir die Datei /etc/glusterfs/glusterfs.vol:
vi /etc/glusterfs/glusterfs.vol
volume remote type Protokoll-/Client-Option transport-type tcp option remote-host server1.example.com # kann IP oder hostname option remote-subvolume brickend sein -volumevolume Writebehind-Typ Performance/Write-Behind-Option Window-Size 4 MB Subvolumes Remoteend-VolumeVolume-Cache-Typ Performance/io-Cache-Option Cache-Größe 512 MB Subvolumes WriteBehind-Volume |
Stellen Sie sicher, dass Sie den richtigen Server-Hostnamen oder die richtige IP-Adresse in der Option Remote-Host-Zeile verwenden!
Das ist es! Jetzt können wir das GlusterFS-Dateisystem mit einem der folgenden beiden Befehle in /mnt/glusterfs einhängen:
glusterfs -f /etc/glusterfs/glusterfs.vol /mnt/glusterfs
oder
mount -t glusterfs /etc/glusterfs/glusterfs.vol /mnt/glusterfs
Sie sollten nun die neue Freigabe in den Ausgaben von...
seheneinhängen
[[email protected] ~]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts auf /dev/pts geben Sie devpts (rw,gid=5,mode=620) ein
/dev/sda1 auf /boot geben Sie ext3 (rw) ein
tmpfs auf / dev/shm tippe tmpfs (rw)
keine auf /proc/sys/fs/binfmt_misc tippe binfmt_misc (rw)
sunrpc auf /var/lib/nfs/rpc_pipefs tippe rpc_pipefs (rw)
glusterfs#/etc/glusterfs/glusterfs.vol auf /mnt/glusterfs Typ Fuse (rw,allow_other,default_permissions,max_read=131072)
[[email protected] ~]#
... und ...
df -h
[[email protected] ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
29G 2.2G 25G br 9 %. / /dev/sda1 99m 13m 82m 14%/boot
tmpfs 187m 0 187m 0%/dev/shm
glusterfs#/etc/glusterfs/glusterfs.vol
28g 2,3G 25G 9%/ mnt/glusterfs
[[email protected] ~]#
Anstatt die GlusterFS-Freigabe manuell auf dem Client zu mounten, könnten Sie /etc/fstab so ändern, dass die Freigabe automatisch gemountet wird, wenn der Client startet.
Öffnen Sie /etc/fstab und fügen Sie die folgende Zeile an:
vi /etc/fstab
[...]/etc/glusterfs/glusterfs.vol /mnt/glusterfs glusterfs defaults 0 0 |
Um zu testen, ob Ihre modifizierte /etc/fstab funktioniert, starten Sie den Client neu:
Neustart
Nach dem Neustart sollten Sie die Freigabe in den Ausgaben von ...
findendf -h
... und ...
einhängen
4 Links
- GlusterFS:http://www.gluster.org/
- CentOS:http://www.centos.org/