# Global File System

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.
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 Sistina Software und veröffentlichte GFS 2004 mit anderen Cluster-Infrastruktur-Programmen unter der GNU General Public License.

## Technisches

Zum Mounten von GFS wird das GFS-Kernel-Modul und eine Cluster-Konfiguration benötigt. Zusätzlich sind 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 erforderlich.
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.
GFS kann verschiedene Locking-Mechanismen verwenden. Empfohlen wird die Verwendung von Distributed Lock Manager (DLM). Red Hat Enterprise Linux vor Version 5 beinhaltete außerdem Grand Unified Lock Manager (GULM), von dessen Verwendung abgeraten wird. Für lokale Dateisysteme, auf die exklusiv zugegriffen werden kann, kann das Platzhalter-Modul Nolock verwendet werden.
Mit GFS als Grundlage ist es möglich, einen Diskless Shared Root Cluster aufzusetzen.

### Global Network Block Device

Global Network Block Device (GNBD) ist ein Dienst, der ein Blockgerät über das Netzwerk bereitstellt. So exportierte Geräte können von mehreren Rechnern gleichzeitig importiert werden. Diese mehrfach importierten Blockgeräte bilden oft die Grundlage für GFS. Blockgeräte, die GNBD exportiert, sind beispielsweise Festplatten, Partitionen und Logical Volumes des Logical Volume Managers (LVM).
GNDB besteht aus Kernel-Modulen und Dienstprogrammen. Es setzt ein funktionierendes fencing (engl. für einzäunen, abgrenzen) voraus. Fencing verhindert E/A-Operationen von Knoten, die aus Sicht des Clusters ein Fehlverhalten aufweisen. Meist kommt dazu der Dienst fenced zum Einsatz.

## 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 (engl. 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.