# BeeGFS

BeeGFS (ehemals FhGFS) ist ein quelloffenes paralleles Dateisystem, das hinsichtlich Datendurchsatz speziell für Hochleistungsrechner („High Performance Computing“) entwickelt und optimiert wird. Besonders viel Wert wurde bei der Entwicklung auf eine einfache Handhabung sowie eine hohe Flexibilität und Skalierbarkeit gelegt.
BeeGFS wurde ursprünglich am Fraunhofer Center für High Performance Computing implementiert unter der Leitung von Sven Breuner, der später die Geschäftsführung von ThinkParQ übernahm. Die ThinkParQ GmbH wurde im Jahr 2014 als Spin-off gegründet, um das Dateisystem professionell zu pflegen und Dienstleistungen wie Support anzubieten.
Die Software BeeGFS kann kostenlos von der Projektwebseite heruntergeladen werden.

## Geschichte

BeeGFS startete 2005 als intern entwickeltes Dateisystem am Fraunhofer Center für High Performance Computing, um das bisherige genutzte Dateisystem auf dem neuen Cluster des Instituts zu ersetzen.
2007 wurde dann die erste Betaversion der Software während der ISC 07 in Dresden angekündigt und während der SC 07 in Reno, Nevada der Öffentlichkeit vorgestellt. Ein Jahr später kam die erste Major Release auf den Markt.
Im Jahr 2014 gründete sich das Fraunhofer Spin-off ThinkParQ, das den Vertrieb, den Kundenservice und den professionellen Support der Software übernahm sowie die Entwicklung unterstützt. Gleichzeitig wurde das FhGFS umbenannt in BeeGFS. Während ThinkParQ seitdem hauptsächlich für Vertrieb und Support zuständig ist, entwickelt und optimiert Fraunhofer ITWM auch weiterhin die Software in Kooperation mit ThinkParQ.
Ein weiterer Meilenstein für BeeGFS wurde Anfang 2016 erreicht, als bekannt gegeben wurde, dass BeeGFS nun als open source zur Verfügung steht.
Da BeeGFS den Nutzern kostenlos zur Verfügung steht, weiß man nicht genau wie viele Installationen bisher getätigt wurden. Jedoch gibt es inzwischen über 250 Kunden, die professionell durch ThinkParQ unterstützt werden. Darunter befinden sich sowohl zahlreiche wissenschaftliche Einrichtungen, wie Universitäten und Forschungsanstalten weltweit, als auch kommerzielle Firmen aus den Bereichen Life Sciences, Finanzen, der Automobilbranche sowie aus dem Energiesektor.
BeeGFS wird zurzeit in mehreren Supercomputing-Einrichtungen eingesetzt, darunter auch einige der schnellsten Hochleistungsrechner der Welt (entsprechend der Top 500 Klassifizierung). Beispiele: Das Loewe-CSC Cluster an der Goethe-Universität Frankfurt, Deutschland (#22 bei Installation), das Vienna Scientific Cluster der Technischen Universität Wien, Österreich (#56 bei Installation), und das Abel Cluster der Universität Oslo, Norwegen (#96 bei Installation).

## Konzept & Features

Bei der Entwicklung von BeeGFS waren den Entwicklern besonders drei Schwerpunkte wichtig: Leichte Handhabung, hohe Flexibilität und hohe Skalierbarkeit.
BeeGFS läuft auf jedem Linuxsystem und besteht aus mehreren Komponenten: den Client Services, den Metadata Servern und Storage Servern sowie dem Management Service.
Um BeeGFS zu nutzen, wird wenigstens eine Instanz des Metadatenservers und des Storageservers benötigt. Allerdings ist es beim BeeGFS möglich, beliebig viele Instanzen von Metadaten- und Storageservern zu starten, um die Last bei einer großen Anzahl Clients zu verteilen.
Der Zugriff auf Nutzdaten wird parallelisiert, indem die Daten in sogenannte Chunks zerteilt werden. Die Chunks werden unabhängig voneinander auf mehreren Servern verteilt gespeichert. Die Größe der Chunks kann dabei vom Administrator bestimmt werden. Die Verwaltung der Daten sowie die Zuordnung einer Datei zu den entsprechenden Chunks übernehmen spezielle Metadatenserver. BeeGFS unterstützt auf mehrere Server verteilte Metadaten, wodurch Dateizugriffe sehr gut skalierbar sind. Die Verbindung der einzelnen Server erfolgt entweder mittels RDMA (z. B. InfiniBand, Omni-Path, RoCE) oder über TCP/IP-Verbindungen (z. B. Ethernet).
Sowohl Clients als auch Metadaten- und Storageserver können ohne Unterbrechung in ein bereits bestehendes System eingefügt werden. Der Client-Service ist dabei ein leichtgewichtiges Modul für den Linux-Kernel, das keinerlei Kernel-Patches erfordert. Mit dem BeeGFS besteht die Möglichkeit, Server auch über einem bereits vorhandenen lokalen Linux Dateisystem (z. B. ext4, xfs, zfs) laufen zu lassen, wobei es egal ist, um welches Dateisystem es sich handelt, solange es POSIX unterstützt. Empfohlen wird ext4 für die Metadatenserver und xfs für die Storageserver zu nutzen. Beide Server-Arten laufen dabei im Userspace.
Es gibt keine strengen Hardwarevorgaben, dadurch erlaubt das Softwaredesign dem Administrator die Freiheit, die Server in jeder Kombination auf den Maschinen zu nutzen. Eine sehr beliebte Möglichkeit unter den BeeGFS Nutzern ist es daher, Metadatenserver und Storageserver auf der gleichen Maschinen laufen zu lassen, um dadurch Hardwarekosten einzusparen.
BeeGFS unterstützt gleichzeitig verschiedene Netzwerkverbindungen mit dynamischem Failover wie z. B. Ethernet oder InfiniBand und unterschiedlichste Linux-Distributionen und Linux-Kernel (ab Linux-Kernel 2.6.18 bis hin zu den jeweils aktuellen verfügbaren Kernelversionen). Das BeeGFS nutzt init scripts zum einfachen Setup und Start, man kann aber auch ein grafisches Interface, die Java-basierte GUI (AdMon für "Administration & Monitoring") nutzen. Hierdurch wird es einem ermöglicht, das BeeGFS zu überwachen und zu managen oder aber Performanceprobleme ausfindig zu machen.

## BeeOND (BeeGFS on-demand)

BeeOND ermöglicht das Erstellen eines BeeGFS innerhalb eines Nodesets mit nur einer Kommandozeile. Die Anwendungsmöglichkeiten erstrecken sich dabei von einem zweckbestimmten Dateisystem für einen bestimmen Cluster-Job bis hin zum Cloud-Computing oder dem schnellen und einfachen Schaffen von Testumgebungen.

## Benchmarks

Die folgenden Benchmarks wurden auf den internen SSDs der Compute Knoten des Fraunhofer Seislab gemacht. Das Fraunhofer Seislab ist ein Entwicklungscluster des Fraunhofer ITWM mit 25 Knoten (20 Compute + 5 Storage) und einem 3-stufigen Speicher: 1 TB RAM, 20 TB SSD, 120 TB HDD erstellt. Die Performance für die internen SSDs eines einzelnen Knoten auf dem lokalen Dateisystem ohne BeeGFS liegt bei 1.332 MB/s (write) und 1.317 MB/s (read).
Die Knoten sind ausgestattet mit 2× Intel Xeon X5660, 48 GB RAM, 4× Intel 510 Series SSD (RAID 0), ext4, QDR InfiniBand und laufen mit Scientific Linux 6.3, Kernel 2.6.32-279 und FhGFS 2012.10-beta1.
* Read/Write Throughput
* File Creates
* IOPS