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 (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
- GFS ist ein Filesystem, das über das entsprechende GFS-Kernel-Modul und eine funktionierende Cluster-Konfiguration gemountet werden kann.
- GFS arbeitet mit Kernelmodulen und Diensten für das Management (z. B. CMAN, ccsd), Locking (lock_gulm oder lock_dlm) und Fencing (z. B. fenced für das Ausschließen von ausgefallenen Cluster Nodes).
- Exportiert werden die lokalen Blockdevices meist über GNBD (Global Network Block Device).
- Exportierte, GFS formatierte Blockdevices können über gnbd_import auf anderen Rechnern im GFS-Cluster importiert und lokal gemountet werden.
- Mit GFS ist es möglich, ein Single System Image (SSI) auf Dateisystemebene, einen sogenannten 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, ein Cluster-Dateisystem könne 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, man könnte durch ein Cluster-Dateisystem eine Redundanz der Daten erreichen. Auch das ist nicht seine Aufgabe. Das Storage Area Network selbst muss redundant sein, um die Verfügbarkeit der Daten zu gewährleisten. Das Cluster-Dateisystem "kennt" lediglich Mechanismen, um bei Problemen von A oder B selbständig für eine nahtlose Wiedereingliederung zu sorgen und eventuell noch nicht in das Storage Area Network übertragene Daten zu übertragen.
Diese Funktionalität versucht das mysqlfs bereitzustellen, welches versucht über FUSE ein Filesystem mit globalem Namensraum bereitzustellen, welches durch die mysql-ndb Engine Redundanz erhält.
Der Sinn eines Cluster-Dateisystems ist es, die Zugriffe auf ein Storage Area Network zu regeln, da es zu einem Desaster käme, wenn A und B gleichzeitig die gleiche Datei im Storage Area Network schreiben würden. Nicht mehr und nicht weniger.
Siehe auch
- OCFS2 (Oracle Cluster File System 2)