Inhaltsverzeichnis
Hochverfügbarkeit GlusterFS
GlusterFS ist eine „OpenSource“ Dateisystem-Replikationsmethode, welche in der Lage ist, eine Skalierung auf mehrere Petabyte (aktuell, 72 BrontoBytes!) zu verwirklichen und die parallele Nutzung durch tausende von Clients, bewerkstelligen kann.
GlusterFS-Cluster nutzt Storage Building Blocks über Infiniband RDMA oder TCP/IP-Interconnect, aggregieren Festplatte und Speicher-Ressourcen und verwalten Daten in einem einzigen globalen Namensraum.
Vorbereitung
Nachfolgende vorbereitende Schritte sind notwendig, um ein GlusterFS-Dateisystem zu betreiben.
- Eintragung der beteiligtne Server bzw. Knoten in die Namensauflösung DNS, bzw.
/etc/hosts
. - Freischaltung der benötigten Paketfilter-Regeln, hier
iptables
. - Einbindung des externen, benötigten Repositorys, hier das von EPEL
um anschließend die
- Installation der benötigten Server-Software-Komponenten.
- Installation der benötigten Client-Software-Komponenten.
- Einrichten von
Mount-Points
auf den nutzenden Clients.
durchführen zu können.
/etc/hosts
In der nachfolgend gezeigten Installation eines GlusterFS-Dateisystems, werden zusätzlich zu möglichen Eintragungen im DNS, nachfolgende Eintragungen in allen beteiligten Servern Knoten, durchgeführt:
Server/Knoten 1 - IP-Adresse: 192.168.1.201:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.200 ha-manager ha-manager.intra.tachtler.net 192.168.1.201 ha-node-01 ha-node-01.intra.tachtler.net 192.168.1.202 ha-node-02 ha-node-02.intra.tachtler.net
Server/Knoten 2 - IP-Adresse: 192.168.1.202:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.200 ha-manager ha-manager.intra.tachtler.net 192.168.1.201 ha-node-01 ha-node-01.intra.tachtler.net 192.168.1.202 ha-node-02 ha-node-02.intra.tachtler.net
/etc/sysconfig/iptables-save
Damit die Server/Knoten auch erreichbar sind und nicht die Spiegelung der Festplatten vom Paketfilter iptables
blockiert wird, müssen nachfolgende Regel zum iptables
-Regelwerk auf allen Servern hinzugefügt werden.
Um die aktuellen iptables
-Regeln erweitern zu können, sollten diese erst einmal aufgelistet werden, was mit nachfolgendem Befehl durchgeführt werden kann:
# iptables -L -nv --line-numbers Chain INPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 23732 6343K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 3 12 693 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 4 6 360 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 86 2752 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT 22420 packets, 17M bytes) num pkts bytes target prot opt in out source destination
Nachfolgende Befehle, fügen folgende iptables
-Regeln dem iptables
-Regelwerk nach der Position 4 hinzu, ohne das der Paketfilter angehalten werden muss:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 24007:24041 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 38465:38467 -j ACCEPT
und hier die Befehle:
# iptables -I INPUT 5 -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT # iptables -I INPUT 6 -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT # iptables -I INPUT 7 -m state --state NEW -m tcp -p tcp --dport 24007:24041 -j ACCEPT # iptables -I INPUT 8 -m state --state NEW -m tcp -p tcp --dport 38465:38467 -j ACCEPT
HINWEIS - Nachfolgende Ports sind wie folgt zu setzen:
24007:24041
- Port 24007, 24008 und 24009, danach für jeden Knoten +1 (24009-24041 = max. 32 Knoten)38465:38467
- Port 38465 bis 38467, nur bei verwendung von NFS-Mount-Points nötig.
Eine erneute Abfrage des iptables
-Regelwerks, sollte dann nachfolgend dargestellte Ausgabe ergeben, was mit folgendem Befehl durchgeführt werden kann:
# iptables -L -nv --line-numbers Chain INPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 119 9860 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 3 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 4 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:111 6 0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:111 7 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpts:24007:24041 8 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpts:38465:38467 9 1 32 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT 6 packets, 936 bytes) num pkts bytes target prot opt in out source destination
Die neuen Zeilen sind an Position 5 bis Postition 8 zu sehen, hier nachfolgend zur Verdeutlichung noch einmal dargestellt (nur relevanter Ausschnitt):
... 5 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:111 6 0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:111 7 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpts:24007:24041 8 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpts:38465:38467 ...
Um diese iptables
-Regeln dauerhaft, auch nach einem Neustart des Server, weiterhin im iptables
-Regelwerk zu speichern, muss nachfolgend dargestellter Befehl, abschließend noch ausgeführt werden:
# service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
EPEL-Repository einbinden
Bevor externe Repository's auf den Servern/Knoten eingebunden werden, sollte sichergestellt werden, dass keine Pakete aus externen Repositorys, die der eigentlichen CentOS-Repositorys überschreiben.
Dies kann durch die Installation des sogenannten
- Priorities-Plugin für den Paket-Manager
yum
erfolgen.
Die Installation des Priorities-Plugin für den Paket-Manager yum
wird durch nachfolgenden Befehl durchgeführt:
# yum install yum-plugin-priorities Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package yum-plugin-priorities.noarch 0:1.1.30-14.el6 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: yum-plugin-priorities noarch 1.1.30-14.el6 base 22 k Transaction Summary ================================================================================ Install 1 Package(s) Total download size: 22 k Installed size: 28 k Is this ok [y/N]: y Downloading Packages: yum-plugin-priorities-1.1.30-14.el6.noarch.rpm | 22 kB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : yum-plugin-priorities-1.1.30-14.el6.noarch 1/1 Verifying : yum-plugin-priorities-1.1.30-14.el6.noarch 1/1 Installed: yum-plugin-priorities.noarch 0:1.1.30-14.el6 Complete!
Der Inhalt des Paketes yum-plugin-priorities
kann mit nachfolgendem Befehl angezeigt werden:
# rpm -qil yum-plugin-priorities Name : yum-plugin-priorities Relocations: (not relocatable) Version : 1.1.30 Vendor: CentOS Release : 14.el6 Build Date: Fri 22 Jun 2012 02:23:05 PM CEST Install Date: Fri 07 Sep 2012 11:28:52 AM CEST Build Host: c6b8.bsys.dev.centos.org Group : System Environment/Base Source RPM: yum-utils-1.1.30-14.el6.src.rpm Size : 28555 License: GPLv2+ Signature : RSA/SHA1, Mon 25 Jun 2012 12:20:22 AM CEST, Key ID 0946fca2c105b9de Packager : CentOS BuildSystem <http://bugs.centos.org> URL : http://yum.baseurl.org/download/yum-utils/ Summary : plugin to give priorities to packages from different repos Description : This plugin allows repositories to have different priorities. Packages in a repository with a lower priority can't be overridden by packages from a repository with a higher priority even if repo has a later version. /etc/yum/pluginconf.d/priorities.conf /usr/lib/yum-plugins/priorities.py /usr/lib/yum-plugins/priorities.pyc /usr/lib/yum-plugins/priorities.pyo /usr/share/doc/yum-plugin-priorities-1.1.30 /usr/share/doc/yum-plugin-priorities-1.1.30/COPYING
Entscheidend ist nun, im Verzeichnis
/etc/yum.repos.d/
den dort enthaltenen Repository-Konfigurationsdateien, durch Ergänzung nachfolgender Zeile, eine Priorität zuzuweisen (nur relevanter Ausschnitt):
... priority=1 ...
Was im Beispiel der Konfigurationsdatei
/etc/yum.repos.d/Centos-Base-repo
dann wie folgt aussehen könnte (nur beispielhafter relevanter Ausschnitt):
# CentOS-Base.repo # # The mirror system uses the connecting IP address of the client and the # update status of each mirror to pick mirrors that are updated to and # geographically close to the client. You should use this for CentOS updates # unless you are manually picking other mirrors. # # If the mirrorlist= does not work for you, as a fall back you can try the # remarked out baseurl= line instead. # # [base] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 priority=1 ...
HINWEIS - Den eigenen Rpository's aus CentOS sollte eine höhere Priorität, durch Zuweisung einer kleineren Zahl gegeben werden!
Um EPEL auf den Servern/Knoten Nutzen zu können, muss nachfolgende Datei heruntergeladen werden, was mit nachfolgendem Befehl durchgeführt werden kann:
# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm --2012-09-07 13:06:13-- http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm Resolving dl.fedoraproject.org... 209.132.181.23, 209.132.181.24, 209.132.181.25, ... Connecting to dl.fedoraproject.org|209.132.181.23|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 14496 (14K) [application/x-rpm] Saving to: “epel-release-6-7.noarch.rpm” 100%[======================================>] 14,496 72.2K/s in 0.2s 2012-09-07 13:06:14 (72.2 KB/s) - “epel-release-6-7.noarch.rpm” saved [14496/14496]
Anschließend sollte zur Prüfung der Echtheit des soeben heruntergeladenen rpm
-Pakets
epel-release-6-7.noarch.rpm
dessen Schlüssel, mit dem das Paket signiert wurde, in die RPM-Paket-Verwaltung importiert werden:
# rpm --import https://fedoraproject.org/static/0608B895.txt
Danach kann das so heruntergeladene Paket, mit nachfolgendem Befehl auf dessen Echtheit, überprüft werden:
# rpm -K epel-release-6-7.noarch.rpm epel-release-6-7.noarch.rpm: rsa sha1 (md5) pgp md5 OK
Abschließend kann dann, mit nachfolgendem Befehl, das Paket installiert werden:
# yum localinstall epel-release-6-7.noarch.rpm Loaded plugins: fastestmirror, priorities Setting up Local Package Process Examining epel-release-6-7.noarch.rpm: epel-release-6-7.noarch Marking epel-release-6-7.noarch.rpm to be installed Loading mirror speeds from cached hostfile base | 3.7 kB 00:00 extras | 3.0 kB 00:00 updates | 3.5 kB 00:00 Resolving Dependencies --> Running transaction check ---> Package epel-release.noarch 0:6-7 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: epel-release noarch 6-7 /epel-release-6-7.noarch 22 k Transaction Summary ================================================================================ Install 1 Package(s) Total size: 22 k Installed size: 22 k Is this ok [y/N]: y Downloading Packages: Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : epel-release-6-7.noarch 1/1 Verifying : epel-release-6-7.noarch 1/1 Installed: epel-release.noarch 0:6-7 Complete!
Der Inhalt des Pakets epel-release-6-7.noarch
kann mit nachfolgendem Befehl angezeigt werden:
# rpm -qil epel-release Name : epel-release Relocations: (not relocatable) Version : 6 Vendor: Fedora Project Release : 7 Build Date: Wed 09 May 2012 05:58:17 PM CEST Install Date: Fri 07 Sep 2012 11:41:46 AM CEST Build Host: x86-03.phx2.fedoraproject.org Group : System Environment/Base Source RPM: epel-release-6-7.src.rpm Size : 22169 License: GPLv2 Signature : RSA/8, Thu 10 May 2012 05:00:09 PM CEST, Key ID 3b49df2a0608b895 Packager : Fedora Project URL : http://download.fedora.redhat.com/pub/epel Summary : Extra Packages for Enterprise Linux repository configuration Description : This package contains the Extra Packages for Enterprise Linux (EPEL) repository GPG key as well as configuration for yum and up2date. /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 /etc/rpm/macros.ghc-srpm /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel.repo /usr/share/doc/epel-release-6 /usr/share/doc/epel-release-6/GPL
HINWEIS - Abschließend sollte hier die Priorität des EPEL-Repositorys, eine niedrigere Priorität, durch Zuweisung einer größeren Zahl, als die der eigenen Rpository's aus CentOS gegeben werden!
Was im Beispiel der Konfigurationsdatei
/etc/yum.repos.d/epel.repo
dann wie folgt aussehen könnte (nur beispielhafter relevanter Ausschnitt):
[epel] name=Extra Packages for Enterprise Linux 6 - $basearch #baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch failovermethod=priority enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 priority=10 ...
Server: Installation
HINWEIS - Die Installation erfolgt NUR auf den Server/Knoten (ha-node-01 und ha-node-02) !!!
Um die Server-Komponenten von GlusterFS zu installieren, sollten nachfolgende Pakete mit nachfolgendem Befehl installiert werden:
glusterfs
–> Hauptkomponente (Original: core)glusterfs-server
–> Server-Komponenten (Startscripte usw.)glusterfs-fuse
–> API-Komponenten (Client-Unterstützung)
optional zusätzlich, je nach Einsatzzweck und Kompfort, wird emfpohlen die folgenden Pakete ebenfalls zu installieren:
glusterfs-rdma
–> Infiniband RDMA Datenaustausch-Paketglusterfs-geo-replication
–> Replication über Standorte und Netzwerkgrenzen hinwegglusterfs-vim
–> Editor-Schema fürvim
Nachfolgend werden hier, als Beispiel nachfolgende Pakete installiert:
# yum install glusterfs glusterfs-server glusterfs-fuse glusterfs-vim Loaded plugins: fastestmirror, priorities Loading mirror speeds from cached hostfile 84 packages excluded due to repository priority protections Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package glusterfs.x86_64 0:3.2.7-1.el6 will be installed ---> Package glusterfs-fuse.x86_64 0:3.2.7-1.el6 will be installed ---> Package glusterfs-server.x86_64 0:3.2.7-1.el6 will be installed ---> Package glusterfs-vim.x86_64 0:3.2.7-1.el6 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: glusterfs x86_64 3.2.7-1.el6 epel 1.8 M glusterfs-fuse x86_64 3.2.7-1.el6 epel 60 k glusterfs-server x86_64 3.2.7-1.el6 epel 22 k glusterfs-vim x86_64 3.2.7-1.el6 epel 26 k Transaction Summary ================================================================================ Install 4 Package(s) Total download size: 1.9 M Installed size: 7.0 M Is this ok [y/N]: y Downloading Packages: (1/4): glusterfs-3.2.7-1.el6.x86_64.rpm | 1.8 MB 00:00 (2/4): glusterfs-fuse-3.2.7-1.el6.x86_64.rpm | 60 kB 00:00 (3/4): glusterfs-server-3.2.7-1.el6.x86_64.rpm | 22 kB 00:00 (4/4): glusterfs-vim-3.2.7-1.el6.x86_64.rpm | 26 kB 00:00 -------------------------------------------------------------------------------- Total 8.0 MB/s | 1.9 MB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : glusterfs-3.2.7-1.el6.x86_64 1/4 Installing : glusterfs-fuse-3.2.7-1.el6.x86_64 2/4 Installing : glusterfs-server-3.2.7-1.el6.x86_64 3/4 Installing : glusterfs-vim-3.2.7-1.el6.x86_64 4/4 Verifying : glusterfs-vim-3.2.7-1.el6.x86_64 1/4 Verifying : glusterfs-fuse-3.2.7-1.el6.x86_64 2/4 Verifying : glusterfs-3.2.7-1.el6.x86_64 3/4 Verifying : glusterfs-server-3.2.7-1.el6.x86_64 4/4 Installed: glusterfs.x86_64 0:3.2.7-1.el6 glusterfs-fuse.x86_64 0:3.2.7-1.el6 glusterfs-server.x86_64 0:3.2.7-1.el6 glusterfs-vim.x86_64 0:3.2.7-1.el6 Complete!
Um zu überprüfen, ob die Installation erfolgreich durchgeführt werden konnte, ist nachfolgender Befehl, auf allen Server/Knoten (ha-node-01 und ha-node-02), mit ebenfalls nachfolgender Ausgabe auszuführen:
Server/Knoten 1 - IP-Adresse: 192.168.1.201:
# /usr/sbin/glusterfs -V glusterfs 3.2.7 built on Jun 11 2012 13:22:28 Repository revision: git://git.gluster.com/glusterfs.git Copyright (c) 2006-2011 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.
Server/Knoten 2 - IP-Adresse: 192.168.1.202:
# /usr/sbin/glusterfs -V glusterfs 3.2.7 built on Jun 11 2012 13:22:28 Repository revision: git://git.gluster.com/glusterfs.git Copyright (c) 2006-2011 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.
Server: Konfiguration
Nachfolgend soll eine grundlegende Konfiguration eines GlusterFS-Clusters mit
- zwei Knoten
durchgeführt werden.
/etc/init.d/clusterd
HINWEIS - Die Konfiguration erfolgt NUR auf den Server/Knoten (ha-node-01 und ha-node-02) !!!
Um die GlusterFS Server-Komponente auch nach einem Neustart (restart) des Servers/Knoten zu starten, sollten nachfolgende Schritte durchgeführt werden.
Nachfolgender Befehl, fügt das Start-Skript
/etc/init.d/glusterd
der austomatischen Ausführung (Start) beim Start oder Neustart des Servers/Knotens hinzu:
Server/Knoten 1 - IP-Adresse: 192.168.1.201:
# chkconfig glusterd on
Server/Knoten 2 - IP-Adresse: 192.168.1.202:
# chkconfig glusterd on
Ein Überpüfung, ob dies erfolgreich war, kann mit nachfolgendem Befehl durchgeführt werden:
Server/Knoten 1 - IP-Adresse: 192.168.1.201:
# chkconfig --list | grep glusterd glusterd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Server/Knoten 2 - IP-Adresse: 192.168.1.202:
# chkconfig --list | grep glusterd glusterd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Server: starten
HINWEIS - Der Start der Server/Knoten erfolgt NUR auf den Server/Knoten (ha-node-01 und ha-node-02) !!!
Mit nachfolgendem Befehl, sollten nun auf beiden Servern/Knoten (ha-node-01 und ha-node-02) der Dienst/Daemon der GlusterFS Server-Komponente gestartete werden:
Server/Knoten 1 - IP-Adresse: 192.168.1.201:
# service glusterd start Starting glusterd: [ OK ]
Server/Knoten 2 - IP-Adresse: 192.168.1.202:
# service glusterd start Starting glusterd: [ OK ]
Gluster Console Manager
Der „Gluster Console Manager - Command Line Utility“
gluster
ist ein shell
-basiertes Werkzeug und eine einfache Lösung, zur Konfiguration und Verwaltung einer Speicher-Umgebung.
Die Möglichkeiten des Gluster Console Managers - gluster
, können mit nachfolgendem Befehl aufgelistet werden:
# gluster help volume info [all|<VOLNAME>] - list information of all volumes volume create <NEW-VOLNAME> [stripe <COUNT>] [replica <COUNT>] [transport <tcp|rdma|tcp,rdma>] <NEW-BRICK> ... - create a new volume of specified type with mentioned bricks volume delete <VOLNAME> - delete volume specified by <VOLNAME> volume start <VOLNAME> [force] - start volume specified by <VOLNAME> volume stop <VOLNAME> [force] - stop volume specified by <VOLNAME> volume add-brick <VOLNAME> <NEW-BRICK> ... - add brick to volume <VOLNAME> volume remove-brick <VOLNAME> <BRICK> ... - remove brick from volume <VOLNAME> volume rebalance <VOLNAME> [fix-layout|migrate-data] {start|stop|status} - rebalance operations volume replace-brick <VOLNAME> <BRICK> <NEW-BRICK> {start|pause|abort|status|commit} - replace-brick operations volume set <VOLNAME> <KEY> <VALUE> - set options for volume <VOLNAME> volume help - display help for the volume command volume log filename <VOLNAME> [BRICK] <PATH> - set the log file for corresponding volume/brick volume log locate <VOLNAME> [BRICK] - locate the log file for corresponding volume/brick volume log rotate <VOLNAME> [BRICK] - rotate the log file for corresponding volume/brick volume sync <HOSTNAME> [all|<VOLNAME>] - sync the volume information from a peer volume reset <VOLNAME> [force] - reset all the reconfigured options volume geo-replication [<VOLNAME>] [<SLAVE-URL>] {start|stop|config|status|log-rotate} [options...] - Geo-sync operations volume profile <VOLNAME> {start|info|stop} - volume profile operations volume quota <VOLNAME> <enable|disable|limit-usage|list|remove> [path] [value] - quota translator specific operations volume top <VOLNAME> {[open|read|write|opendir|readdir] |[read-perf|write-perf bs <size> count <count>]} [brick <brick>] [list-cnt <count>] - volume top operations peer probe <HOSTNAME> - probe peer specified by <HOSTNAME> peer detach <HOSTNAME> - detach peer specified by <HOSTNAME> peer status - list status of peers peer help - Help command for peer quit - quit help - display command options
Der Gluster Console Managers - gluster
, kann (ähnlich wie lvm
) sowohl im direkten Befehlsmodus, wie z.B.
# gluster peer help peer probe <HOSTNAME> - probe peer specified by <HOSTNAME> peer detach <HOSTNAME> - detach peer specified by <HOSTNAME> peer status - list status of peers peer help - Help command for peer.
oder in einem interaktiven Modus
# gluster gluster> peer help peer probe <HOSTNAME> - probe peer specified by <HOSTNAME> peer detach <HOSTNAME> - detach peer specified by <HOSTNAME> peer status - list status of peers peer help - Help command for peer gluster> quit
genutzt werden.
Trusted Storage Pools
HINWEIS - Die Konfiguration ist NUR auf EINEN der Server/Knoten (ha-node-01 und ha-node-02) erforderlich !!!
Bevor mit der Konfiguration eines unter GlusterFS erstellten Volume (Speicherbereich auf physischen Festplatte(n)) begonnen werden kann, muss ein sogenannter Trusted Storage Pool (Vertrauenswürdiger Speicher Bereich), bestehend aus den Servern/Knoten, auch Bricks genannt, erstellt werden.
Server/Knoten hinzufügen
Um einen bzw. mehrere Servern/Knoten zu einem Trusted Storage Pool (Vertrauenswürdiger Speicher Bereich) hinzuzufügen, kann nachfolgender Befehl genutzt werden:
Server/Knoten 1 - IP-Adresse: 192.168.1.201:
# gluster peer probe ha-node-02.intra.tachtler.net Probe successful
HINWEIS - Es ist NICHT möglich und erforderlich, den Server/Knoten auf dem der oben genannte Befehl ausgeführt wird, ebenfalls hinzuzufügen !!!
Server/Knoten überprüfen
Eine Überprüfung, ob nun beide Server/Knoten einen Trusted Storage Pool (Vertrauenswürdiger Speicher Bereich) bilden, kann mit nachfolgendem Befehl überprüft werden:
Server/Knoten 1 - IP-Adresse: 192.168.1.201:
# gluster peer status Number of Peers: 1 Hostname: ha-node-02.intra.tachtler.net Uuid: 89ceff6c-25da-49d1-818c-d21897feb0f8 State: Peer in Cluster (Connected)
Server/Knoten 2 - IP-Adresse: 192.168.1.202:
# gluster peer status Number of Peers: 1 Hostname: 192.168.1.201 Uuid: 58a9154b-733a-477b-bb9b-9d9bfeb86966 State: Peer in Cluster (Connected)
Server/Knoten entfernen
Um einen bzw. mehrere Servern/Knoten von einem Trusted Storage Pool (Vertrauenswürdiger Speicher Bereich) zu entfernen, kann nachfolgender Befehl genutzt werden:
Server/Knoten 1 - IP-Adresse: 192.168.1.201:
# gluster peer detach ha-node-02.intra.tachtler.net Detach successful
GlusterFS Server Volume
Um nach, unter dem nachfolgendem internen Link innerhalb dieses DokuWiki –> Hochverfügbarkeit GlusterFS - Trusted Storage Pools gezeigten Erstellung eines Trusted Storage Pool (Vertrauenswürdiger Speicher Bereich), auch ein Volume (Speicherbereich auf physischen Festplatte(n)) zu erstellen, sind nachfolgende Informationen wichtig.
Es gibt nachfolgend aufgezählte Arten, eines Volume (Speicherbereich auf physischen Festplatte(n)):
- Distributed - Verteilung einer Datei, als ganzes, auf einen der Bricks (Server/Knoten)
- Replicated - Verteilung einer Datei, als ganzes - redundant - auf die Bricks (Server/Knoten)
- Striped - Verteilung einer Datei, in Teilen, auf die Bricks (Server/Knoten)
- Distributed Striped - Verteilung einer Datei, in Teilen, auf zwei oder mehr Bricks (Server/Knoten) innerhalb eines Clusters
- Distributed Replicated - Verteilung einer Datei, als ganzes, auf zwei oder mehr Bricks (Server/Knoten) innerhalb eines Clusters
- Striped Replicated - Verteilung einer Datei, in Teilen, auf die Bricks (Server/Knoten), innerhalb eines Clusters, welches sich jedoch replizieren
Sonderform:
- Distributed Striped Replicated Verteilung einer Datei, in Teilen, auf zwei oder mehr Bricks (Server/Knoten) innerhalb eines Clusters, welches sich jedoch replizieren
Hier noch einem die Arten eines Volume (Speicherbereich auf physischen Festplatte(n)) mit grafischer Beschreibung (wo möglich und sinnvoll):
Distributed Volume
Einsatz: Bei Speicher-Lösungen, bei denen es auf
- + Performance
- - Sicherheit
ankommt.
Zur Erstellung, kann nachfolgender Befehl genutzt werden (Verbindung über TCP):
# gluster volume create test-volume transfer tcp server1:/exp1 server2:/exp2 Creation of test-volume has been successful Please start the volume to access data.
Replicated Volume
Einsatz: Bei Speicher-Lösungen, bei denen es auf
- + hohe Verfügbarkeit
- + hohe Zuverlässigkeit
- - Performance
- - Speicherverbrauch
ankommt.
Zur Erstellung, kann nachfolgender Befehl genutzt werden (Verbindung über TCP):
# gluster volume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2 Creation of test-volume has been successful Please start the volume to access data.
Striped Volume
Einsatz: Bei Speicher-Lösungen, bei denen es auf
- + hohe Skalierbarkeit
- + paralleler Zugriff auf große Dateien
- - Sicherheit
ankommt.
Zur Erstellung, kann nachfolgender Befehl genutzt werden (Verbindung über TCP):
# gluster volume create test-volume stripe 2 transport tcp server1:/exp1 server2:/exp2 Creation of test-volume has been successful Please start the volume to access data.
Distributed Striped Volume
Einsatz: Bei Speicher-Lösungen, bei denen es auf
- + Performance
- + hohe Skalierbarkeit
- + paralleler Zugriff auf große Dateien
- - Sicherheit
ankommt.
Zur Erstellung, kann nachfolgender Befehl genutzt werden (Verbindung über TCP):
# gluster volume create test-volume stripe 4 transport tcp server1:/exp1 server2:/exp2 server1:/exp3 server2:/exp4 Creation of test-volume has been successful Please start the volume to access data.
Distributed Replicated Volume
Einsatz: Bei Speicher-Lösungen, bei denen es auf
- + hohe Verfügbarkeit
- + hohe Zuverlässigkeit
- + Performance (besonders Lese-Zugriffe)
- - Sicherheit
ankommt.
Zur Erstellung, kann nachfolgender Befehl genutzt werden (Verbindung über TCP):
# gluster volume create test-volume replica 2 transport tcp server1:/exp1 server1:/exp2 server2:/exp3 server2:/exp4 Creation of test-volume has been successful Please start the volume to access data.
Striped Replicated Volume
Einsatz: Bei Speicher-Lösungen, bei denen es auf
- + hohe Verfügbarkeit
- + hohe Zuverlässigkeit
- + Performance (besonders Lese-Zugriffe)
- + Sicherheit
- - Speicherverbrauch
ankommt.
Zur Erstellung, kann nachfolgender Befehl genutzt werden (Verbindung über TCP):
# gluster volume create test-volume stripe 2 replica 2 transport tcp server1:/exp1 server2:/exp2 server1:/exp3 server2:/exp4 Creation of test-volume has been successful Please start the volume to access data.
Volume: Replicated erstellen
HINWEIS - Die Konfiguration ist NUR auf EINEN der Server/Knoten (ha-node-01 und ha-node-02) erforderlich !!!
In dem hier als Beispiel behandelten Fall, soll nun ein GlusterFS Server Volume - Replicated Volume erstellt werden. Dies kann mit dem nachfolgend beschriebenen Befehl durchgeführt werden:
# gluster volume create httpd_data replica 2 transport tcp ha-node-01.intra.tachtler.net:/exp1 ha-node-02.intra.tachtler.net:/exp2 Creation of volume httpd_data has been successful. Please start the volume to access data.
Erklärung:
httpd_data
- Name des neuen Volumesreplica 2
- Replication über zwei Bricks (Server/Knoten)transport tcp
- Die Synchronisation erfolgt über des Protokolltcp
(Infiniband wärerdma
)ha-node-01.intra.tachtler.net:/exp1
- erster Brick (Server/Knoten)ha-node-02.intra.tachtler.net:/exp2
- zweiter Brick (Server/Knoten)
Zur Überprüfung, ob die Erstellung des GlusterFS Server Volume - Replicated Volume mit dem Namen
httpd_data
erfolgreich war, kann nachfolgender Befehl genutzt werden:
# gluster volume info Volume Name: httpd_data Type: Replicate Status: Created Number of Bricks: 2 Transport-type: tcp Bricks: Brick1: ha-node-01.intra.tachtler.net:/exp1 Brick2: ha-node-02.intra.tachtler.net:/exp2
Volume: starten
HINWEIS - Das Starten des Volume ist NUR auf EINEM der Server/Knoten (ha-node-01 und ha-node-02) erforderlich !!!
Abschließend muss nun das soeben unter dem internen DokuWiki-Eintrag –> Hochverfügbarkeit GlusterFS - Volume: Replicated erstellen angelegte Volume (Speicherbereich auf physischen Festplatte(n)) mit nachfolgendem Befehl noch gestartet werden:
# gluster volume start httpd_data Starting volume httpd_data has been successful
Client: Installation
HINWEIS - Die Installation erfolgt auf BEIDEN Client/Knoten (ha-node-01 und ha-node-02) !!!
Um die Client-Komponenten von GlusterFS zu installieren, sollten nachfolgende Pakete mit nachfolgendem Befehl installiert werden:
fuse-libs
–> Die Bibliotheken zu FUSE
Nachfolgend werden hier, als Beispiel nachfolgende Pakete installiert:
# yum install fuse fuse-libs Loaded plugins: fastestmirror, priorities Loading mirror speeds from cached hostfile 84 packages excluded due to repository priority protections Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package fuse.x86_64 0:2.8.3-4.el6 will be installed ---> Package fuse-libs.x86_64 0:2.8.3-4.el6 will be installed --> Finished Dependency Resolution Dependencies Resolved ========================================================================================== Package Arch Version Repository Size ========================================================================================== Installing: fuse x86_64 2.8.3-4.el6 base 71 k fuse-libs x86_64 2.8.3-4.el6 base 74 k Transaction Summary ========================================================================================== Install 2 Package(s) Total download size: 145 k Installed size: 438 k Is this ok [y/N]: y Downloading Packages: (1/2): fuse-2.8.3-4.el6.x86_64.rpm | 71 kB 00:00 (2/2): fuse-libs-2.8.3-4.el6.x86_64.rpm | 74 kB 00:00 ------------------------------------------------------------------------------------------ Total 3.5 MB/s | 145 kB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : fuse-2.8.3-4.el6.x86_64 1/2 Installing : fuse-libs-2.8.3-4.el6.x86_64 2/2 Verifying : fuse-libs-2.8.3-4.el6.x86_64 1/2 Verifying : fuse-2.8.3-4.el6.x86_64 2/2 Installed: fuse.x86_64 0:2.8.3-4.el6 fuse-libs.x86_64 0:2.8.3-4.el6 Complete!
Client: Konfiguration
HINWEIS - Die Konfiguration erfolgt auf BEIDEN Client/Knoten (ha-node-01 und ha-node-02) !!!
Die Konfiguration ist eigentlich nur das mounten (einhängen) des durch GlusterFS erstellte Volume auf einen neuen, oder auch bestehenden mount-point (Verzeichnis, in welches das Dateisystem eingehängt wird).
In dem nachfolgendem Beispiel, soll ein Verzeichnis mit dem Namen
/var/www
mit nachfolgendem Befehl erzeugt werden (Dies sollte noch nicht bestehen, da kein Apache Webserver HTTPD installiert worden sein sollte):
# mkdir /var/www
HINWEIS - Die Besitz- und Dateirechte, des soeben neu erstellten Verzeichnisses, sollten beim Standard, wie durch den Benutzer root
erzeugt, beibehalten werden.
Mount: glusterfs
Damit auch nach einem Start bzw. Neustart des Servers das Verzeichnis automatisch gemounted (eingehängt) wird, sollten bei beiden Clients/Knoten (ha-node-01 und ha-node-02) nachfolgende Änderungen an der Konfigurationsdatei
/etc/fstab
durchgeführt werden (nur relevanter Ausschnitt):
Server/Knoten 1 - IP-Adresse: 192.168.1.201:
... 192.168.1.201:/httpd_data /var/www glusterfs defaults,_netdev,log-level=WARNING,log-file=/var/log/glusterfs/gluster.log 0 0 ...
Server/Knoten 2 - IP-Adresse: 192.168.1.202:
... 192.168.1.202:/httpd_data /var/www glusterfs defaults,_netdev,log-level=WARNING,log-file=/var/log/glusterfs/gluster.log 0 0 ...
Dies bewirkt das mounten (einhängen) des durch GlusterFS erstellten Volume in das Dateisystem, via glusterfs:
WICHTIG - Jeder Client/Knoten (ha-node-01 und ha-node-02), mounted von SICH SELBST das Dateisystem /var/www
, da es sonst beim Start bzw. Neustart des Servers zu Problemen kommt !!!
Um den soeben durchgeführten Eintrag in die Konfigurationsdatei /etc/fstab
auch zu aktivieren und den mount-point (Verzeichnis, in welches das Dateisystem eingehängt wird) sofort nutzbar zu machen, kann nachfolgender Befehl genutzt werden, welcher das mounten (einhängen) aller in der Konfigurationsdatei /etc/fstab
definierten Einträge, durchführt:
Server/Knoten 1 - IP-Adresse: 192.168.1.201:
# mount -a
Server/Knoten 2 - IP-Adresse: 192.168.1.202:
# mount -a
Ob das mounten (einhängen) auch tatsächlich funktioniert hat, kann mit nachfolgendem Befehl dann abschließend überprüft werden:
Server/Knoten 1 - IP-Adresse: 192.168.1.201:
# df -h | grep /var/www -1 192.168.1.201:/httpd_data 3.5G 771M 2.6G 23% /var/www
Server/Knoten 2 - IP-Adresse: 192.168.1.202:
# df -h | grep /var/www -1 192.168.1.202:/httpd_data 3.5G 771M 2.6G 23% /var/www
Um zu überprüfen, ob die Replikation zwischen (ha-node-01 und ha-node-02) auch tatsächlich funktioniert, kann z.B. auf
- Server/Knoten 1 - IP-Adresse: 192.168.1.201:
mit nachfolgendem Befehl eine (leere) Datei erstellt werden:
# touch /var/www/test-datei
Anschließend sollte auf
- Server/Knoten 2 - IP-Adresse: 192.168.1.202:
mit nachfolgendem Befehl überprüft werden, ob die Datei ebenfalls existiert:
# ls -l /var/www/ total 0 -rw-r--r-- 1 root root 0 Sep 10 12:47 test-datei
Monitoring
Um ein mit GlusterFS erstelltes Volume zu überwachen, können nachfolgende Werkzeuge genutzt werden.
Monitoring: profile
Um die Überwachung im Modus profile zu aktivieren, ist nachfolgender Befehl notwendig:
# gluster volume profile httpd_data start Starting volume profile on httpd_data has been successful
Um die Werte aus der Überwachung im Modus profile anzuzeigen, ist nachfolgender Befehl notwendig:
# gluster volume profile httpd_data info Brick: ha-node-02.intra.tachtler.net:/exp2 Cumulative Stats: Block Size: 8b+ 32b+ 64b+ No. of Reads: 0 0 0 No. of Writes: 2 2 22 Block Size: 128b+ 256b+ 512b+ No. of Reads: 0 0 0 No. of Writes: 228 166 6 Block Size: 1024b+ 2048b+ 4096b+ No. of Reads: 0 0 0 No. of Writes: 10 16 37 Block Size: 8192b+ 32768b+ No. of Reads: 0 0 No. of Writes: 16 2 %-latency Avg-latency Min-Latency Max-Latency No. of calls Fop --------- ----------- ----------- ----------- ------------ ---- 0.00 0.00 us 0.00 us 0.00 us 534 RELEASE 0.00 0.00 us 0.00 us 0.00 us 77 RELEASEDIR 100.00 177.75 us 138.00 us 269.00 us 4 LOOKUP Duration : 1097 seconds Data Read : 0 bytes Data Written : 587693 bytes Brick: ha-node-02.intra.tachtler.net:/exp2 Interval 1 Stats: %-latency Avg-latency Min-Latency Max-Latency No. of calls Fop --------- ----------- ----------- ----------- ------------ ---- 100.00 152.00 us 145.00 us 159.00 us 2 LOOKUP Duration : 312 seconds Data Read : 0 bytes Data Written : 0 bytes Brick: ha-node-01.intra.tachtler.net:/exp1 Cumulative Stats: Block Size: 8b+ 32b+ 64b+ No. of Reads: 0 0 0 No. of Writes: 2 2 22 Block Size: 128b+ 256b+ 512b+ No. of Reads: 0 0 0 No. of Writes: 228 166 6 Block Size: 1024b+ 2048b+ 4096b+ No. of Reads: 0 0 0 No. of Writes: 10 16 37 Block Size: 8192b+ 32768b+ No. of Reads: 0 0 No. of Writes: 16 2 %-latency Avg-latency Min-Latency Max-Latency No. of calls Fop --------- ----------- ----------- ----------- ------------ ---- 0.00 0.00 us 0.00 us 0.00 us 1 FORGET 0.00 0.00 us 0.00 us 0.00 us 535 RELEASE 0.00 0.00 us 0.00 us 0.00 us 86 RELEASEDIR 100.00 185.50 us 153.00 us 222.00 us 4 LOOKUP Duration : 1425 seconds Data Read : 0 bytes Data Written : 587693 bytes Brick: ha-node-01.intra.tachtler.net:/exp1 Interval 1 Stats: %-latency Avg-latency Min-Latency Max-Latency No. of calls Fop --------- ----------- ----------- ----------- ------------ ---- 100.00 187.50 us 153.00 us 222.00 us 2 LOOKUP Duration : 313 seconds Data Read : 0 bytes Data Written : 0 bytes
Um die Überwachung im Modus profile zu deaktivieren, ist nachfolgender Befehl notwendig:
# gluster volume profile httpd_data stop Stopping volume profile on httpd_data has been successful
Monitoring: top
Nachfolgende Befehle geben die Nutzungsdaten eines mit GlusterFS erstelltes Volume aus:
open
- Anzahl der geöffneten Dateien und wie oft diese geöffnet wurden je Brick (Server/Knoten)read
- Anzahl der höchsten Lese-Zugriffe auf Dateien je Brick (Server/Knoten)write
- Anzahl der höchsten Schreib-Zugriffe auf Dateien je Brick (Server/Knoten)opendir
- Anzahl der genutzten Verzeichnisse und wie oft diese genutzt wurden, je Brick (Server/Knoten)readdir
- Anzahl der höchsten Lese-Zugriffe auf Verzeichnisse je Brick (Server/Knoten)
Der Befehl ist immer wie folgt aufgebaut:
# gluster volume top <VOLUME> <BEFEHL> brick <SERVER:/VOLUME> list-cnt <ANZAHL>
Mit nachfolgender Befehl, können z.B. die Dateien angezeigt werden, welche geöffnet wurden und zusätzlich wie oft diese geöffnet wurden.
(list-cnt 25
begrenzt die Anzeige auf die letzten 25 Einträge).
# gluster volume top httpd_data open brick ha-node-01.intra.tachtler.net:/exp1/ list-cnt 25 volume top successful Brick: ha-node-01.intra.tachtler.net:/exp1 Current open fds: 0, Max open fds: 3 Count filename ======================= 2 /error/include/top.html;504dca28 2 /error/include/spacer.html;504dca28 2 /error/include/bottom.html;504dca28 2 /error/contact.html.var;504dca28 2 /error/HTTP_VARIANT_ALSO_VARIES.html.var;504dca28 2 /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var;504dca28 2 /error/HTTP_UNAUTHORIZED.html.var;504dca28 2 /error/HTTP_SERVICE_UNAVAILABLE.html.var;504dca28 2 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var;504dca28 2 /error/HTTP_REQUEST_TIME_OUT.html.var;504dca28 2 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var;504dca28 2 /error/HTTP_PRECONDITION_FAILED.html.var;504dca28 2 /error/HTTP_NOT_IMPLEMENTED.html.var;504dca28 2 /error/HTTP_NOT_FOUND.html.var;504dca28 2 /error/HTTP_METHOD_NOT_ALLOWED.html.var;504dca28 2 /error/HTTP_LENGTH_REQUIRED.html.var;504dca28 2 /error/HTTP_INTERNAL_SERVER_ERROR.html.var;504dca28 2 /error/HTTP_GONE.html.var;504dca28 2 /error/HTTP_FORBIDDEN.html.var;504dca28 2 /error/HTTP_BAD_REQUEST.html.var;504dca28 2 /error/HTTP_BAD_GATEWAY.html.var;504dca28 1 /html/index.htm 1 /error/noindex.html;504dca01 1 /test3
Nachfolgende Befehle geben die Nutzungsdaten eines mit GlusterFS erstellten Volume aus:
read-perf
- Anzahl der höchsten Lese-Zugriffe, Performancedaten je Brick (Server/Knoten)write-perf
- Anzahl der höchsten Schreib-Zugriffe, Performancedaten je Brick (Server/Knoten)
Der Befehl ist immer wie folgt aufgebaut:
# gluster volume top <VOLUME> <BEFEHL> <BLOCK SIZE nnn> <COUNT n> brick <SERVER:/VOLUME> list-cnt <ANZAHL>
Mit nachfolgendem Befehl, können z.B. diese Performance Dateien angezeigt werden.
(list-cnt 25
begrenzt die Anzeige auf die letzten 25 Einträge).
# gluster volume top httpd_data write-perf bs 256 count 1 brick ha-node-01.intra.tachtler.net:/exp1/ list-cnt 25 volume top successful Brick: ha-node-01.intra.tachtler.net:/exp1 Throughput 10.67 MBps time 0.0000 secs MBps Filename Time ==== ======== ==== 0 /html/index.htm 2012-09-10 13:09:45.73440 0 /icons/world2.png;504dca01 2012-09-10 13:08:59.545589 0 /icons/world2.gif;504dca01 2012-09-10 13:08:59.526010 0 /icons/world1.png;504dca01 2012-09-10 13:08:59.508038 0 /icons/world1.gif;504dca01 2012-09-10 13:08:59.488039 0 /icons/uuencoded.png;504dca01 2012-09-10 13:08:59.468116 0 /icons/uuencoded.gif;504dca01 2012-09-10 13:08:59.447643 0 /icons/uu.png;504dca01 2012-09-10 13:08:59.430159 0 /icons/uu.gif;504dca01 2012-09-10 13:08:59.409694 0 /icons/up.png;504dca01 2012-09-10 13:08:59.391258 0 /icons/up.gif;504dca01 2012-09-10 13:08:59.371173 0 /icons/unknown.png;504dca01 2012-09-10 13:08:59.351983 0 /icons/unknown.gif;504dca01 2012-09-10 13:08:59.329190 0 /icons/transfer.png;504dca01 2012-09-10 13:08:59.310249 0 /icons/transfer.gif;504dca01 2012-09-10 13:08:59.289300 0 /icons/text.png;504dca01 2012-09-10 13:08:59.267286 0 /icons/text.gif;504dca01 2012-09-10 13:08:59.245740 0 /icons/tex.png;504dca01 2012-09-10 13:08:59.227291 0 /icons/tex.gif;504dca01 2012-09-10 13:08:59.205674 0 /icons/tar.png;504dca01 2012-09-10 13:08:59.181107 0 /icons/tar.gif;504dca01 2012-09-10 13:08:59.160701 0 /icons/sphere2.png;504dca01 2012-09-10 13:08:59.140483 0 /icons/sphere2.gif;504dca01 2012-09-10 13:08:59.119717 0 /icons/sphere1.png;504dca01 2012-09-10 13:08:59.99520 0 /icons/sphere1.gif;504dca01 2012-09-10 13:08:59.77777
Monitoring: Informationen
Mit nachfolgendem Befehl, können Informationen über die Beschaffenheit eines mitGlusterFS erstellten Volume abgefragt werden:
# gluster volume info httpd_data Volume Name: httpd_data Type: Replicate Status: Started Number of Bricks: 2 Transport-type: tcp Bricks: Brick1: ha-node-01.intra.tachtler.net:/exp1 Brick2: ha-node-02.intra.tachtler.net:/exp2
oder über alle, nicht explizit eines Volume:
# gluster volume info all Volume Name: httpd_data Type: Replicate Status: Started Number of Bricks: 2 Transport-type: tcp Bricks: Brick1: ha-node-01.intra.tachtler.net:/exp1 Brick2: ha-node-02.intra.tachtler.net:/exp2
Performance
Nachfolgend soll eine kleine Performance-Messung durchgeführt werden, in dem eine 100 MegaByte große Datei, einmal auf einem der beiden Client/Knoten (ha-node-01 und ha-node-02)
- lokalem
und auf dem
- GlusterFS
Dateisystem erstellt wird und eine Messung der dafür benötigten Zeit durchgeführt wird.
Erstellung einer 100 MegaByte großen Datei auf einem lokalem Dateisystem:
# time dd if=/dev/zero of=/tmp/100MBfile bs=1024 count=102400 102400+0 records in 102400+0 records out 104857600 bytes (105 MB) copied, 0.63121 s, 166 MB/s real 0m0.640s user 0m0.022s sys 0m0.570s
Erstellung einer 100 MegaByte großen Datei auf einem GlusterFS Dateisystem:
# time dd if=/dev/zero of=/var/www/100MBfile bs=1024 count=102400 102400+0 records in 102400+0 records out 104857600 bytes (105 MB) copied, 13.2261 s, 7.9 MB/s real 0m13.248s user 0m0.155s sys 0m0.902s