Verteilte Dateisysteme unter Linux

Wofür braucht man verteilte Dateisysteme? In Zeiten von Big Data, Cloud Computing und High Performance Clustern können Daten nicht mehr lokal auf einzelnen Systemen gespeichert werden. Die Daten müssen jederzeit auf allen Systemen zur Verfügung stehen und dort auch von allen Systemen bearbeitet werden können. Aus Gründen der Ausfallsicherheit und vor allem der Performance und des parallelen Zugriffs reicht auch ein einfacher Netzwerkspeicher wie z.B. NFS bei Weitem nicht aus. Also verwendet man verteilte bzw. parallele Dateisysteme. Vereinfacht gesagt kann man sich verteilte Dateisysteme wie einen RAID-Verbund im Netzwerk vorstellen. Die Daten werden dabei zwischen den einzelnen Servern verteilt und redundant gespeichert. Verschiedene Mechanismen sorgen dafür, dass die Daten jederzeit konsistent und redundant sind. Aufgrund der Verteilung steigt auch die Performance und je nach Skalierbarkeit der verschiedenen Implementierung können hier I/O-Bandbreiten von mehreren Gigabyte/s erreicht werden.

In der Linux-Welt existieren verschiedene Implementierungen verteilter Dateisysteme, die entweder nativ für und unter Linux entwickelt wurden oder von anderen Plattformen portiert wurden. Die wichtigsten und am häufigsten eingesetzten werden im Folgenden kurz vorgestellt.

Ceph

Das unter der freien Lizenz LGPL lizensierte Dateisystem Ceph wurde im Zuge einer Doktorarbeit entwickelt und ist seit März 2010 Bestandteil des Linux-Kernels (ab 2.6.34). Der Fokus liegt hier auf Hochverfügbarkeit und hoher Skalierung bis zu mehreren Petabytes. Nutz- und Metadaten können über mehrere Server repliziert werden. Kernkomponente von Ceph ist der Datenspeicher RADOS mit dem Crush-Algorithmus, der die Aufteilung und Verteilung der angelieferten Daten steuert.

Der RADOS-Speicher kann auf den Verbund-Systemen als Block-Device angesprochen werden, was hohe Performance und einfache Administration verspricht. Alternativ kann auch über CephFS, ein POSIX-kompatibles Dateisystem auf den RADOS-Speicher zugegriffen werden. Da der CephFS-Client Bestandteil des Linux-Kernels ist, liegt auch hier im Vergleich zu einer FUSE-Anbindung höhere Performance vor.​ ​

GlusterFS

GlusterFS wurde 2006 von der Firma Z Research Inc. erstmalig veröffentlicht und steht unter der freien Lizenz GPL v3. 2011 wurde GlusterFS von RedHat gekauft. Die Anbindung im System wird über FUSE realisiert, ein dediziertes Kernel-Modul ist nicht nötig. Vergleichbar ist das Ganze mit einem RAID-Verbund, nur dass die Daten hier nicht lokal, sondern über mehrere Server im Netzwerk verteilt über TCP/IP oder Infiniband verteilt gespeichert werden. GlusterFS ist beliebig skalierbar, mit jedem weiteren Server im Verbund erhöht sich der Datendurchsatz im Dateisystem. Der Aufbau ist modular und bietet diverse Betriebsmodi. Hier die wichtigsten:

  • Standalone Storage 
    Hier stellt ein einzelner Server das FS im Netz bereit, die Funktion entspricht der eines NFS-Servers.
  • Striped Storage 
    Die Daten werden zwischen mehreren Servern gestriped.
  • Replicated Storage 
    Die Daten werden zwischen mehreren Servern gespiegelt.
  • Distributed Storage 
    Die Daten werden auf mehrere Server verteilt.
  • Distributed Replicated Storage 
    Hier werden die Daten verteilt und gespiegelt.
Aufgrund des verteilten Speicherns von Nutz- und Metadaten ist GlusterFS fehlertolerant und Daten können jederzeit auf allen beteiligten Systemen parallel gelesen und geschrieben werden. Im Vergleich zu anderen Implementierungen wird hier auf dedizierte Metadatenserver verzichtet, was eine bessere Skalierbarkeit verspricht. Durch die Anbindung ins System über FUSE ist die Performance im Vergleich zu anderen verteilten Dateisystemen, die direkt mit dem Kernel kommunizieren können, geringer, es eignet sich eher für kleinere Umgebungen, die mehr Wert auf Hochverfügbarkeit als auf Performance legen.

Lustre (Linux Cluster)

Lustre (Linux Cluster) ist ein hoch performantes und skalierbares parallel verteiltes Dateisystem, das hauptsächlich in großen Cluster-Umgebungen sowie im Umfeld von Supercomputern eingesetzt wird. Entwickelt wird Lustre seit 2003, ursprünglich als Forschungsprojekt an der Carnegie Mellon Universität, zwischenzeitlig von Sun und Oracle und inzwischen von der Firma Xyratex Ltd. Es steht unter der freien Lizenz GPL v2. Lustre setzt auf einen objektbasierten Storage-Ansatz mit eigenen Instanzen für Metadaten (Meta Data Server) und Nutzdaten (Object Storage Server) und einem Management-Server zur Verwaltung des Dateisystems. Dazu kommt noch die Lustre- Network-Komponente, die die Schnittstelle zwischen Meta Data Server und Object Storage Server darstellt. Die Server werden dabei häufig als Failover-Cluster realisiert.

Dies ist aus Gründen der Ausfallsicherheit vor allem beim Meta DataServer wichtig, da Lustre von sich aus nur einen MDS pro Verbund vorsieht. Lustre ist das am häufigsten eingesetzte Dateisystem in der Top500 der Supercomputer, was für seine Stabilität und Performance spricht. Für kleinere Umgebungen ist es aufgrund seiner Komplexität eher weniger geeignet.

GPFS (General Parallel File System)

GPFS (General Parallel File System) wurde 1998 von IBM offiziell vorgestellt und entstand aus diversen IBMForschungsprojekten zu parallelen Dateisystemen aus der Supercomputer-Welt. Ursprünglich für AIX eingeführt, existiert seit 2001 eine Linux-Implementierung, seit 2008 wird auch Windows unterstützt. 2015 wurde GPFS von IBM in IBM Spectrum Scale umbenannt. Da sich der Name "GPFS" aber über Jahre im Administrator-Wortschatz gefestigt hat, wird das Produkt auch hier weiter als GPFS bezeichnet. Im Gegensatz zu den bisher genannten Lösungen wird GPFS von IBM unter einer proprietären Lizenz vermarktet. Aufgrund der hohen Lizenzkosten ist GPFS unter Linux deshalb nur im kommerziellen Umfeld anzutreffen, hat aber aufgrund des Supports durch IBM Michael Hafner (Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!) und der bewährten Leistung hier durchaus seine Daseinsberechtigung.
Eine Besonderheit von GPFS ist die hohe Skalierbarkeit und Ausfallsicherheit im GPFS-Cluster. So können z.B. jederzeit im laufenden Betrieb Server zum GPFS-Cluster hinzugefügt oder entfernt werden. Volumes lassen sich von sehr vielen Clients parallel lesend und schreibend mounten, die Steuerung übernehmen verteilte Lock-Manager. Durch Striping lassen sich sehr hohe Durchsatzraten erzielen, wozu auch die Speicherung von Daten und Metadaten auf unterschiedlichen Datenträgern zählt. Zur einfacheren Administration beinhalten neuere GPFS-Versionen auch eine auf Java basierte GUI (IBM Spectrum Scale management GUI), es können aber natürlich auch weiterhin alle Administrationstasks in der Kommandozeile ausgeführt werden.

Quellen

0
Cloud Services 2018 im Vergleich
Die Datenverwaltung mit Business Time

Unsere Autoren

Technologie Blogs

Tutorials

4 members

Webentwicklung

3 members

Java

3 members

Archiv | Blog-Beiträge

Login