Relevanz? -- Der Bischof mit der E-Gitarre 02:20, 16. Jan. 2009 (CET)
GlusterFS ist ein verteiltes Dateisystem, das Speicherelemente von mehreren Servern als einheitliches Dateisystem präsentiert. Die verschiedenen Server, auch Cluster-Nodes (Node engl. Knoten) genannt, sind über TCP/IP verbunden. Das Dateisystem besteht aus einer Client-Server Architektur. Weiterhin können Storage-Medien auch direkt über Infiniband in das Dateisystem eingebunden werden. Die Daten auf allen Cluster-Nodes können gleichzeitig eingesehen sowie geändert werden. Alle Änderungen an Dateien werden auf allen Servern instantan umgesetzt. Das Dateisystem wird über das FUSE-Kernel-Modul eingebunden und wird von allen 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.
Die Entwicklung von GlusterFS begann durch das GlusterOS Entwicklerteam von Z Research Inc. mitte 2005, ein erstes Release des Dateisystems wurde im Juli 2006 veröffentlicht.
Funktionalität
GlusterFS ist modular gestaltet und unterstützt mehrere Betriebsmodi:
- Standalone Storage (ähnlich NFS)
- Ein einzelner Server der das Dateisystem über das Netzwerk bereitstellt.
- 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 Replicates Storage
- NFS Like Standalone Storage Server-2
- Wie Standalone Storage, allerdings werden 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 einem modularem Aufbau so dass aus wenigen Komponenten alle beschriebenen Funktionen abgebildet werden können. Die Komponenten sind Datenpartitionen (volumes), Transport Gruppen (transport groups) und Übersetzer (translator). Die Übersetzer bieten die Möglichkeit das Filesystem um Funktionen zu erweitern. Insbesondere ob dieses über Infiniband, TCP oder einer Mischung aus beidem kommunizieren sein soll, welche physikalischen Partitionen oder Verzeichnisse eingebunden werden sollen und welche Raid-Level verwendet werden. Es existiert derzeit auch ein Übersetzer zum Verschlüsseln des Dateisystems, dieser verwendet allerdings ROT-13 und dient nur zur Veranschaulichung der Möglichkeiten des modularen Konzepts. Weitere Übersetzer für Verschlüsselung mit starken Kryptographie-Algorithmen können jedoch leicht implementiert werden.
Anwendungsmöglichkeiten
Mit GlusterFS lässt sich also eine Art Netzwerk-RAID erstellen, von welchem aus mehrere Rechner gleichzeitig auf ein gemeinsames Dateisystem zugreifen können. Es unterliegt hierbei nicht den Limitierungen wie z.B. DRBD von maximal zwei Server. Zudem hat GlusterFS nicht das Problem einer einzelner Fehlerstelle wie z.B. Lustre, da bei GlusterFS auch Metadaten und Namespace verteilt gespeichert werden können. Durch jeden weiteren Cluster-Node erhöht sich der maximale Datendurchsatz des Dateisystems so dass hier I/O-Bandbreite von einigen GB/Sekunde keine Seltenheit sind.
Bei Prozessoren gilt das Moorsche Gesetz, was jedoch bei Speichermedien und Storage-Lösungen leider 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 durch die Möglichkeit beliebig zu Skalieren abhilfe.
GlusterFS ist unter der GPL Version 3 lizenziert. Optional kann man kostenpflichtigen Support der Entwickler in Anspruch nehmen.