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
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
- 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.
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.
GPFS (General Parallel File System)
Quellen
- Linux Magazin: Holger Gantikow - Leistungsfähige parallele Dateisysteme unter Linux
http://www.linux-magazin.de/ausgaben/2012/06/leistungsfaehige-paralleledateisysteme-unter-linux/ - Linux Magazin: Udo Seidel - Newcomer: Ceph und Gluster-FS
http://www.linux-magazin.de/ausgaben/2013/02/ceph-und-gluster/5/ - Linux Magazin: Udo Seidel - Verteilte Dateisysteme unter Linux im Vergleich
http://www.linux-magazin.de/ausgaben/2013/02/dateisystem-ueberblick/ - Erklärung Ceph-Software
https://en.wikipedia.org/wiki/Ceph_(software) - Erklärung Gluster-Software
https://en.wikipedia.org/wiki/Gluster - Erklärung Lustre file system
https://en.wikipedia.org/wiki/Lustre_(file_system) - Erklärung IBM General Parallel File System
https://en.wikipedia.org/wiki/IBM_General_Parallel_File_System
Kommentare
Bei Updates im Blog, informieren wir per E-Mail.