Das Global File System (GFS) ist ein Cluster-Dateisystem, das es mehreren Rechnern ermöglicht, gleichzeitig auf gemeinsamen Speicher zuzugreifen und das die Konsistenz der gespeicherten Daten gewährleistet. Häufig handelt es sich bei dem gemeinsam genutzten Speicher um ein Storage Area Network (SAN). Das Sperren von Dateien (englisch: locking), ohne das ein Cluster-Dateisystem nicht funktioniert, übernimmt ein Locking-Modul von GFS (meist lock_gulm oder etwas neuer lock_dlm).
GFS ist Teil des Linux-Kernels und wird in dessen Rahmen entwickelt. Treibende Kraft ist dabei die Firma Red Hat.
Geschichte
GFS ist ursprünglich als Teil einer Machbarkeitsstudie an der Universität von Minnesota entwickelt worden. Später wurde es von Sistina Software übernommen, die es als Open-Source-Projekt weiterentwickelte. 2001 entschied Sistina Software, GFS als proprietäre Software weiterzuentwickeln. 2003 kaufte Red Hat dann Sistina Software (und damit auch GFS) und veröffentlichte GFS 2004 mit anderen Cluster-Infrastruktur-Programmen unter der GPL.
Technisches
Zum Mounten von GFS wird das GFS-Kernel-Modul und eine Cluster-Konfiguration benötigt. Zusätzlich werden weitere Kernel-Module und Dienste für das Management (beispielsweise CMAN und ccsd), Locking (zum Beispiel lock_gulm und lock_dlm) und Fencing (zum Beispiel fenced) für das Ausschließen ausgefallener Knoten.
Die gemeinsam genutzten Blockspeichergeräte werden häufig via Global Network Block Device (GNBD) über ein Netzwerk zur Verfügung gestellt. Die Blockgeräte können mit gnbd_import auf dem Cluster-Knoten importiert und anschließend gemountet werden.
Mit GFS als Grundlage ist es möglich, einen Diskless Shared Root Cluster aufzusetzen.
Kernel Module und Dienste
- GFS 6.1 - Cluster-Dateisystem
- DLM - Distributed-Lock-Manager
- CMAN - Cluster-Manager
- CLVM - Cluster-Erweiterung zum LVM2 (Logical Volume Manager)
- CCS - Cluster-Konfigurations-System, welches die cluster.conf verwaltet
- Fence - I/O Fencing-System, Trennung von unterbrochenen oder fehlerhaften Nodes im Cluster (z. B. über iLO)
- GNBD - Global Network Block Device, Treiber der lokale Block Devices (Volumes) über das Netzwerk zur Verfügung stellt
- RGManager - Ressourcen-Monitor und Gruppen-Manager, überwacht, startet und stoppt Ressourcen, Dienste und Applikationen
- GULM - Reduntanter, Serverbasierter Cluster und Lock Manager für GFS 6.1 (Alternative zu CMAN und DLM)
- Magma - Cluster/Locking Bibliothek für Transaktionen zwischen GULM und CMAN/DLM
- GFS Deployment Tool - Ein grafisches Tool für das Ausrollen von GFS auf mehrere Rechner
- system-config-cluster - Grafisches Tool für das Verwalten des GFS-Cluster über mehrere Rechner
Export von Block Devices / Laufwerken über das Netzwerk
Global Network Block Device (GNBD) ist mit anderen Network-Block-Device-Treibern vergleichbar. Eine Partition auf einer Festplatte ist unter Linux/UNIX ein Block Device, da sie in Datenblöcken aufgeteilt ist. Partitionen werden meist logisch über Logical Volume Manager (LVM) oder Cluster Logical Volume Manager (CLVM) eingerichtet und über GNBD exportiert.
Das Exportieren von Block Devices oder Verzeichnissen (zum Beispiel mit Network File System, NFS) ist vergleichbar mit dem Freigeben von Verzeichnissen und Laufwerken unter Windows. Exportierte Block Devices können dann auf einem anderen System importiert und gemountet (eingebunden) werden.
Ziel ist es, dass mehrere Rechner auf dasselbe Dateisystem zugreifen und ihnen somit auch dieselben Daten zur Verfügung stehen. So können zum Beispiel auch mehrere Webserver ein und dieselbe Webseite im Internet anbieten und dabei die Leistung von mehreren Rechnern nutzen.
Meist werden so GFS Volumes (Partitionen mit Dateisystem) innerhalb eines GFS-Clusters exportiert und auf mehreren Servern importiert.
- GNBD besteht aus Kernel-Modulen und einigen Anwenderprogrammen.
- GNBD setzt ein funktionierendes Fencing (englisch für „einzäunen“, „abgrenzen“; siehe GFS) voraus. Meist kommt dazu der Dienst fenced zum Einsatz.
- In einem GFS-Cluster übernimmt das Locking-Protokoll von GFS das Sperren von Dateien und stellt somit die Konsistenz der Daten sicher.
Irrtümer in Verbindung mit GFS
Ein verbreiteter Irrtum ist die Annahme, Cluster-Dateisysteme könnten verwendet werden, um Daten über ein Netzwerk zu exportieren. Das Dateisystem verwendet Blockspeichergeräte (englisch: block device) um Daten zu speichern. Im Gegensatz zu konventionellen Dateisystemen gehen Cluster-Dateisysteme nicht von einer exklusiven Nutzung des Geräts aus. Auf welche Art und Weise mehrere Systeme gleichzeitig auf ein Blockspeichergerät zugreifen, ist für GFS unerheblich. Mögliche Techniken zur gemeinsamen Nutzung von Blockgeräten sind beispielsweise iSCSI und Serial Attached SCSI mit mehreren Initiatoren.
Ein weiterer Irrtum ist, Cluster-Dateisysteme würden durch Redundanz Datenverlust vorbeugen. Um die Fehlertoleranz zu erhöhen, müssen entsprechende Redundanzen auf unterliegenden Schichten implementiert werden. Beispielsweise können mehrere physikalische Speichermedien (Festplatten) via RAID zu einem logischen Gerät zusammengefasst werden.
Siehe auch
- OCFS2 (Oracle Cluster File System 2)