# GlusterFS

GlusterFS ist ein verteiltes Dateisystem, das Speicherelemente von mehreren Servern als einheitliches Dateisystem präsentiert. Die verschiedenen Server, auch Cluster-Nodes (englisch node ‚Knoten‘) genannt, bilden eine Client-Server-Architektur über TCP/IP. Als Besonderheit können NAS-Systeme über Infiniband direkt in den Cluster eingebunden werden, auch eine redundante Anbindung von Speichermedien über TCP/IP, Infiniband Verbs oder InfiniBand SDP (Socket Direct Protocol) ist möglich. Die Daten auf allen Cluster-Nodes können gleichzeitig gelesen und geschrieben werden, wobei alle Änderungen an Dateien auf allen Servern augenblicklich umgesetzt werden. Das Dateisystem wird über ein FUSE-Kernel-Modul eingebunden und wird von POSIX-fähigen Betriebssystemen unterstützt, zum Beispiel Linux, FreeBSD, OpenSolaris und Mac OS X. Um einen GlusterFS-Server zu starten, wird kein Kernel-Modul benötigt. Ein Server kann sowohl Client als auch Server gleichzeitig sein. Ein Client für Windows-Systeme ist in Planung, wird aber von den Entwicklern erst umgesetzt, sobald das WinFUSE-Projekt stabil läuft.
Die Entwicklung von GlusterFS begann Mitte 2005 durch das GlusterOS-Entwicklerteam von Z Research Inc., ein erstes Release des Dateisystems wurde im Juli 2006 veröffentlicht. GlusterFS ist unter der GPL in Version 3 lizenziert. Die Entwickler bieten kostenpflichtigen Support an. Ende 2011 wurde GlusterFS von Red Hat für 136 Millionen US-Dollar gekauft.

## Funktionalität

GlusterFS ist modular gestaltet und unterstützt mehrere Betriebsmodi:

### Standalone Storage

    ein einzelner Server, der das Dateisystem über das Netzwerk bereitstellt (ähnlich NFS)

### Distributed Storage

    mehrere Server, die die Daten untereinander verteilt speichern und diese den Clients bereitstellen

### Replicated Storage

    mehrere Server, die die Daten untereinander gespiegelt speichern und diese den Clients bereitstellen

### Distributed Replicated Storage

    mehrere Server, die die Daten untereinander verteilt und gespiegelt speichern

### Striped Storage

    mehrere Server, bei welchen die Daten gestriped werden, um eine höhere Performance und Disk-IO-Bandbreite zu liefern

### Cloud/HPC Storage

    siehe Distributed Replicated Storage

### NFS-like Standalone Storage Server-2

    ähnlich Standalone Storage, es wird mehr als nur ein Dateisystem bereitgestellt

### Aggregating Three Storage Servers with Unify

    drei Server, die ein einheitliches Dateisystem mittels Unify bereitstellen, ohne Redundanz

## Modularer Aufbau

GlusterFS bedient sich eines modularen Aufbaus, so dass mit wenigen Komponenten alle beschriebenen Funktionen abgebildet werden können. Die Komponenten sind Datenpartitionen (volumes), Transportgruppen (transport groups) und Übersetzer (translators). Die Übersetzer bieten die Möglichkeit, das Dateisystem um Funktionen zu erweitern, insbesondere ob dieses über Infiniband, TCP oder einer Mischung aus beidem kommunizieren soll, welche physischen Partitionen oder Verzeichnisse eingebunden werden sollen und welche RAID-Level verwendet werden. Zur Veranschaulichung des modularen Konzepts existiert ein ROT13-Übersetzer zum „Verschlüsseln“ des Dateisystems.

## Anwendungsmöglichkeiten

Mit GlusterFS lässt sich eine Art Netzwerk-RAID erstellen, von welchem aus mehrere Rechner gleichzeitig auf ein gemeinsames Dateisystem zugreifen können. Es unterliegt hierbei nicht Limitierungen wie der, maximal zwei Server nutzen zu können. GlusterFS ist fehlertolerant, da bei GlusterFS Nutzdaten, Metadaten und Namespace verteilt gespeichert werden können. Durch jeden weiteren GlusterFS-Server erhöht sich der maximale Datendurchsatz des Dateisystems, so dass hier I/O-Bandbreiten von einigen Gigabyte pro Sekunde erreicht werden können.
Bei Prozessoren (CPUs) gilt das Mooresche Gesetz, was jedoch bei Speichermedien und Storage-Lösungen nicht zutrifft, obwohl hier ebenfalls ein Bedarf nach größeren und schnelleren Speichern besteht. Oftmals ist nicht die CPU-Leistung eines Servers der Flaschenhals, sondern immer öfter die zu langsamen Datenspeicher des Systems. GlusterFS schafft hier Abhilfe durch die Möglichkeit, beliebig zu skalieren.