Dieses Tutorial zeigt, wie man einen eigenständigen Speicherserver auf Fedora 12 einrichtet. 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:
Der GlusterFS-Server ist als Paket für Fedora 12 verfügbar, daher können wir ihn wie folgt installieren:
yum installiere glusterfs-server
Der Befehl
glusterfs --version
sollte jetzt die GlusterFS-Version anzeigen, die Sie gerade installiert haben (in diesem Fall 2.0.9):
[[email protected] ~]# glusterfs --version
glusterfs 2.0.9 erstellt am 00:12:49 00:12:49
Repository-Revision: v2.0.9
Copyright (c) 2006- 2009 Gluster Inc.
GlusterFS kommt mit ABSOLUT KEINER GARANTIE.
Sie können Kopien von GlusterFS unter den Bedingungen der GNU General Public License weitergeben.
[[email protected]ver1 ~]#
Als nächstes erstellen wir ein paar Verzeichnisse:
mkdir /data/
mkdir /data/export
mkdir /data/export-ns
Jetzt erstellen wir die GlusterFS-Serverkonfigurationsdatei /etc/glusterfs/glusterfsd.vol (wir erstellen zuerst eine Sicherungskopie der ursprünglichen /etc/glusterfs/glusterfsd.vol-Datei), die definiert, welches Verzeichnis exportiert wird (/data/export) und was Client darf sich verbinden (192.168.0.101 =client1.example.com):
cp /etc/glusterfs/glusterfsd.vol /etc/glusterfs/glusterfsd.vol_orig
cat /dev/null> /etc/glusterfs/glusterfsd.vol
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).
Anschließend erstellen wir die Systemstartlinks für den GlusterFS-Server und starten ihn:
chkconfig --levels 35 glusterfsd on
/etc/init.d/glusterfsd start
3 Einrichten des GlusterFS-Clients
client1.beispiel.com:
Es gibt ein GlusterFS-Client-RPM-Paket für Fedora 12, aber das Problem dabei ist, dass Sie Fehler wie df:`/mnt/glusterfs':Software cause connection abort oder df:`/mnt/glusterfs':Transport endpoint is not connected erhalten wenn Sie versuchen, auf die GlusterFS-Freigabe zuzugreifen. Deshalb bauen wir den GlusterFS-Client aus den Quellen, um diese Probleme zu vermeiden.
Bevor wir den GlusterFS-Client bauen, installieren wir seine Voraussetzungen:
yum groupinstall 'Entwicklungstools'
yum groupinstall 'Entwicklungsbibliotheken'
yum installiere libibverbs-devel fuse-devel
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
[[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 19. Februar 2010 19:20:46
Repository-Revision: v2.0.9
Copyright ( c) 2006-2009 Gluster Inc.
GlusterFS kommt mit ABSOLUT KEINER GARANTIE.
Sie können 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] glusterfs-2.0.9]# mount
/dev/mapper/vg_server2-lv_root on / ext4 (rw) eingeben
proc on /proc proc (rw) eingeben
sysfs Geben Sie in /sys sysfs (rw)
devpts ein. Geben Sie in /dev/pts devpts (rw,gid=5,mode=620)
tmpfs ein. Geben Sie in /dev/shm tmpfs (rw) ein
/dev/sda1 auf /boot Typ ext4 (rw)
none auf /proc/sys/fs/binfmt_misc Typ binfmt_misc (rw)
sunrpc auf /var/lib/nfs/rpc_pipefs Typ rpc_pipefs (rw)
/etc/glusterfs/glusterfs.vol on /mnt/glusterfs type fuse.glusterfs (rw,allow_other,default_permissions,max_read=131072)
[[email protected] glusterfs-2.0.9]#
... und ...
df -h
[[email protected] glusterfs-2.0.9]# df -h
Dateisystem Größe Verwendet Avail Use% Gemountet auf
/dev/mapper/vg_server2-lv_root
29G 2.6G
tmpfs 185m 0 185m 0%/dev/shm
/dev/sda1 194m 23m 161m 13%/boot
/etc/gusterfs/glusterfs.vol
29G 2,7G 25G 10 % /mnt/glusterfs
[[email protected] glusterfs-2.0.9]#
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/
- Fedora:http://fedoraproject.org/