In diesem Blog werden die wichtigsten Funktionen von Dell EMC Ready Solutions for HPC BeeGFS Storage erläutert, die vor Kurzem angekündigt wurden. Dies ist der dritte Blog in der Serie zur BeeGFS High Performance Storage Solution. Im ersten Blog wurde die Veröffentlichung der Lösung angekündigt. Im zweiten Blog wurde die Skalierbarkeit von Dell EMC Ready Solutions for HPC BeeGFS Storage erläutert. Es lieferte Details zu den Basiskonfigurationen, den flexiblen skalierbaren Konfigurationen und der tatsächlich gemessenen sequenziellen Lese-/Schreibleistung der verschiedenen Konfigurationen, die zeigen, dass die Skalierbarkeit in Bezug auf die Anzahl der Server in der Lösung linear ist. Im aktuellen Blog wird die Verwendung von "StorageBench", dem integrierten Speicherziel-Benchmark von BeeGFS, hervorgehoben.
BeeGFS ist ein Open-Source-Dateisystem, das von www.beegfs.io heruntergeladen werden kann. Es handelt sich um ein paralleles Dateisystem, das Daten über mehrere Speicherziele verteilt. Es handelt sich um einen Software Defined Storage, der das logische Dateisystem von der zugrunde liegenden Speicherhardware entkoppelt, sodass der Benutzer definieren kann, wie und wo die Daten gespeichert werden. Die Dateisystemsoftware umfasst Enterprise-Funktionen wie hohe Verfügbarkeit, Quotendurchsetzung und Zugriffskontrolllisten. Die wichtigsten Merkmale von BeeGFS sind Benutzerfreundlichkeit, Skalierbarkeit und Flexibilität. Seine Benutzerfreundlichkeit basiert auf der Tatsache, dass alle serverseitigen Komponenten Nutzer-Space-Daemons sind, während der Client ein Kernel-Modul ist, das keine Patches für den Kernel selbst benötigt. Alle BeeGFS-Komponenten können ohne Neustart des Servers installiert und aktualisiert werden. Wir können dem vorhandenen System also Clients und Server ohne Ausfallzeiten hinzufügen. Durch hinzufügen von Servern und Laufwerken können die Performance und Kapazität des Dateisystems im hier verlinkten Blog weiter nach oben skaliert werden. BeeGFS unterstützt mehrere Linux-Distributionen und ist für die Verwendung mit jedem POSIX-konformen lokalen Dateisystem konzipiert. BeeGFS unterstützt auch die Ausführung mehrerer Instanzen eines bestimmten Services auf demselben Server.
Dell EMC Ready Solutions for HPC BeeGFS Storage nutzt alle wichtigen Funktionen des BeeGFS-Dateisystems und wurde für hohe Performance entwickelt. Die Lösung verwendet PowerEdge R740xd-Server zum Speichern und Bedienen/Verarbeiten von Metadaten und Daten. Jeder PowerEdge R740xd-Server verfügt über Intel P4600 NVMe-SSDs mit 24 x 1,6 TB, die als zweiter großer Sprung in der Laufwerkstechnologie betrachtet werden, wobei die SSDs die ersten sind. In HPC-Umgebungen kann der Scratch-Bereich oft ein einschränkend sein. Es kann zu klein oder zu langsam sein. Dell EMC Ready Solutions for HPC BeeGFS Storage ist als Scratch-Lösung konzipiert und dient dem Scratch-Speicher mithilfe des BeeGFS-Dateisystems.
BeeGFS umfasst zwei integrierte Benchmarking-Tools, die dazu beitragen können, Netzwerk- oder Speicher-NetBench bzw. StorageBench zu charakterisieren oder zu bewerten. Wenn der NetBench-Modus aktiviert ist, verwerfen die Server empfangene Schreibanforderungen, anstatt die Daten zu schreiben. Auf ähnliche Weise werden bei Leseanforderungen nur die Speicherpuffer an die Clients gesendet, anstatt aus dem zugrunde liegenden Dateisystem zu lesen. Der NetBench-Modus ist für das Testen des Netzwerkstreamingdurchsatzes unabhängig von den zugrunde liegenden Festplatten vorgesehen. Andererseits soll StorageBench den Streamingdurchsatz des zugrunde liegenden Dateisystems unabhängig von der Netzwerkleistung messen. StorageBench ist ein Benchmark für Speicherziele, der das Netzwerk nicht verwendet. Der Befehl storage-bench sendet die Anforderung einfach an die Speicherziele, um mit dem Schreiben/Lesen von Daten zu beginnen. Dadurch eliminieren wir die Auswirkungen des Netzwerks. Die Ausgabe, die wir von der Speicherbank erhalten, ist die beste Performance, die das System erzielen kann, wenn die Netzwerkleistung ideal ist. In diesem Blog wird gezeigt, wie StorageBench verwendet werden kann, um die Performance verschiedener Speicherziele zu vergleichen und so defekte oder falsch konfigurierte Ziele zu identifizieren.
StorageBench verwendet das gemountete Dateisystem nicht. Wenn wir StorageBench ausführen, gibt es nur ein Ziel pro Datei. Storagebench erstellt ein Verzeichnis auf jedem Speicherziel auf dem System, in dem Testdateien erstellt werden, die der Anzahl der Testthreads entsprechen. Daten werden direkt zu diesem Stream gestreamt, um einen niedrigen Durchsatz anzuzeigen, der für jedes Speicherziel verfügbar ist. Ohne Netzwerkkommunikation kann Datei-Striping nicht simuliert werden. Die Ergebnisse der Speicherbenchmarks sind also eher mit Client-I/O mit deaktivierter Striping-Funktion vergleichbar. Wenn tatsächliche Benchmarks ausgeführt werden, wird die Datei über 4 Speicherziele verteilt, wenn das Standard-Striping-Muster übernommen wird.
Zum Testen verschiedener Speicherziele wurden die kleinen und mittleren Konfigurationen verwendet, die im Blog zur Skalierbarkeit der Dell EMC BeeGFS-Speicherlösung beschrieben werden. Beide Konfigurationen haben dieselbe Anzahl von Metadatenzielen, die in RAID 1 konfiguriert sind. Sie unterscheiden sich in der RAID-Konfiguration der Speicherziele. Während das kleine Setup über den Speicher verfügt, werden ziele in RAID 0 von 6 Laufwerken konfiguriert, in der mittleren Konfiguration sind die Speicherziele in RAID 10 von 6 Laufwerken konfiguriert. Die Speicherziele, die für das Setup "Small and Medium" konfiguriert wurden, werden unten tabulatoriert:
Tabelle 1: Testumgebungskonfiguration | ||
---|---|---|
Konfiguration | Mittel – RAID 10 für Speicherziele | Klein – RAID 0 für Speicherziele |
Anzahl der Metadatenziele | 6 | 6 |
Anzahl der Instanzen des Metadatenservice | 6 | 6 |
Anzahl der Speicherserver | 5 | 2 |
Anzahl der Speicherziele | 22 | 10 |
Anzahl der Speicherservices pro Server | 4 | 4 |
Anzahl der Speicherservices pro NUMA-Zone | 2 | 2 |
Anzahl der Ziele pro Instanz des Speicherservices | 2 | 2 |
Hinweis: Die obige Konfiguration des mittleren Setups dient nur zum Testen des Durchsatzes von Speicherzielen, die in verschiedenen RAID-Konfigurationen mithilfe des StorageBench-Tools konfiguriert wurden.
Der Speicher-Benchmark wird mit dem Tool beegfs-ctl gestartet und überwacht. Das Paket beegfs-utils bietet das Befehlszeilentool beegfs-ctl, das verwendet werden kann, um den Benchmark der Speicherziele auszuführen. Im folgenden Beispiel wird ein Schreib-Benchmark auf allen Zielen aller BeeGFS-Speicherserver mit einer E/A-Blockgröße von 512 KB mit 16 Threads pro Ziel gestartet, von denen jeder 200 GB Daten in eine eigene Datei schreibt.
[root@stor1 ~]# beegfs-ctl --storagebench --alltargets --write --blocksize=512K --size=200G --threads=16
Write storage benchmark wurde gestartet.
Sie können den Status mit dem Argument --status von beegfs-ctl abfragen.
Server-Benchmarkstatus:
Wird ausgeführt: 10
Der Befehl "Running: Die 10-Zoll-Ausgabe gibt an, dass insgesamt 10 Speicherziele im System konfiguriert sind.
Um den Benchmarkstatus/die Ergebnisse aller Ziele abzufragen, kann der folgende Befehl ausgeführt werden:
[root@stor1 ~]# beegfs-ctl --storagebench --alltargets --status
Serverbenchstatus:
Fertig: 10
Schreib-Benchmarkergebnisse:
Min. Durchsatz: 4692435 KiB/s NodeID: stor1-numa0-2 [ID: 6], targetID: Max. Durchsatz von 50
: 5368537 KiB/s NodeID: meta-stor-numa1-2 [ID: 2], targetID: Durchschnittlicher Durchsatz von 48
: 4907091 KiB/s Aggregierter
Durchsatz: 49070915 KiB/s
Wenn Sie dem obigen Befehl "verbose" hinzufügen, wird die Liste aller Ziele und deren jeweiliger Durchsatz angezeigt.
[root@meta-stor ~]# beegfs-ctl --storagebench --alltargets --status --verbose
Server benchmark status:
Finished: 10
Schreib-Benchmarkergebnisse:
Min. Durchsatz: 4692435 KiB/s NodeID: stor1-numa0-2 [ID: 6], targetID: Max. Durchsatz von 6
: 5368537 KiB/s NodeID: meta-stor-numa1-2 [ID: 2], targetID: 2
durchschn. Durchsatz: 4907091 KiB/s Aggregierter
Durchsatz: 49070915 KiB/s-Liste
aller Ziele:
1 5368477 KiB/s NodeID: meta-stor-numa1-1 [ID: 1]
2 5368537 KiB/s NodeID: meta-stor-numa1-2 [ID: 2]
3 4706368 KiB/s NodeID: stor1-numa0-1 [ID: 3]
4 4896077 KiB/s NodeID: stor1-numa1-1 [ID: 4]
5 4872876 KiB/s NodeID: stor1-numa1-2 [ID: 5]
6 4692435 KiB/s NodeID: stor1-numa0-2 [ID: 6]
7 4879054 KiB/s NodeID: stor2-numa1-2 [ID: 7]
8 4864737 KiB/s NodeID: stor2-numa1-1 [ID: 8]
9 4696152 KiB/s NodeID: stor2-numa0-1 [ID: 9]
10 4726202 KiB/s NodeID: stor2-numa0-2 [ID: 10]
Der durchschnittliche Durchsatz pro in RAID 0 konfiguriertes Speicherziel beträgt 5,02 GB/s.
Im folgenden Beispiel wird ein Schreib-Benchmark auf allen Zielen aller BeeGFS-Speicherserver mit einer E/A-Blockgröße von 512 KB mit 16 Threads pro Ziel gestartet, von denen jeder 200 GB Daten in eine eigene Datei schreibt.
[root@node001 ~]# beegfs-ctl --storagebench --alltargets --write --blocksize=512K --size=200G --threads=16
Write storage benchmark wurde gestartet.
Sie können den Status mit dem Argument --status von beegfs-ctl abfragen.
Server-Benchmarkstatus:
Wird ausgeführt: 22
Wenn Sie dem obigen Befehl "verbose" hinzufügen, wird die Liste aller Ziele und deren jeweiliger Durchsatz angezeigt.
[root@node001 ~]# beegfs-ctl --storagebench --alltargets --status --verbose
Server benchmark status:
Finished: 22
Benchmarkergebnisse für Schreibvorgänge:
Min. Durchsatz: 2705987 KiB/s NodeID: node006-numa0-1 [ID: 19], targetID: 1
Max. Durchsatz: 3364311 KiB/s NodeID: node001-numa1-1 [ID: 1], targetID: 1
durchschn. Durchsatz: 3212845 KiB/s Aggregierter
Durchsatz: 70682603 KiB/sListe aller Ziele:
1 3364311 KiB/s NodeID: node001-numa1-1 [ID: 1]
2 3361591 KiB/s NodeID: node001-numa1-2 [ID: 2]
3 3309530 KiB/s NodeID: node002-numa0-1 [ID: 3]
4 3312840 KiB/s nodeID: node002-numa0-2 [ID: 4]
5 3332095 KiB/s NodeID: node002-numa1-1 [ID: 5]
6 3323319 KiB/s NodeID: node002-numa1-2 [ID: 6]
7 3313000 KiB/s nodeID: node003-numa0-1 [ID: 7]
8 3321214 KiB/s NodeID: node003-numa0-2 [ID: 8]
9 3335072 KiB/s NodeID: node003-numa1-1 [ID: 9]
10 3339743 KiB/s NodeID: node003-numa1-2 [ID: 10]
11 3302175 KiB/s NodeID: node004-numa0-1 [ID: 11]
12 3309474 KiB/s nodeID: node004-numa0-2 [ID: 12]
13 3329879 KiB/s NodeID: node004-numa1-1 [ID: 13]
14 3328291 KiB/s NodeID: node004-numa1-2 [ID: 14]
15 3306132 KiB/s NodeID: node005-numa0-1 [ID: 15]
16 3307096 KiB/s NodeID: node005-numa0-2 [ID: 16]
17 3318436 KiB/s NodeID: node005-numa1-1 [ID: 17]
18 3329684 KiB/s NodeID: node005-numa1-2 [ID: 18]
19 2705987 KiB/s NodeID: node006-numa0-1 [ID: 19]
20 2716438 KiB/s NodeID: node006-numa0-2 [ID: 20]
21 2707970 KiB/s NodeID: node006-numa1-1 [ID: 21]
22 2708326 KiB/s NodeID: node006-numa1-2 [ID: 22]
Der durchschnittliche Durchsatz pro Speicherziel beträgt 3,29 GB/s.
Aus der Ausgabe der StorageBench-Benchmarktests, die an zwei verschiedenen BeeGFS-Setups durchgeführt wurden, einer mit in RAID 0 konfigurierten Speicherzielen und einer mit in RAID 10 konfigurierten Speicherzielen, ist offensichtlich, dass die Schreibleistung mit den in RAID 0 konfigurierten Speicherzielen und nicht in RAID 10 besser ist. Wenn der dd-Befehl zum Schreiben einer 10G-Datei mit einer Blockgröße von 1 M und "oflag=direct" verwendet wurde, lag der Durchschnitt für das kleine, in RAID 0 konfigurierte System bei etwa 5,1 Gbit/s, während der durchschnittliche Durchsatz für das in RAID 10 konfigurierte mittlere System bei etwa 3,4 GB/s lag, was mit den mit dem Storagebench-Tool erzielten Ergebnissen vergleichbar ist.
[root@node001 ~]# beegfs-ctl --storagebench --alltargets --status --verbose
Server benchmark status:
Finished: 33
Benchmarkergebnisse lesen:
Min. Durchsatz: 2830479 KiB/s NodeID: node003-numa1-2 [ID: 14], targetID: Max. Durchsatz von 14
: 3025500 KiB/s NodeID: node005-numa0-1 [ID: 22], targetID: 22
durchschn. Durchsatz: 2917836 KiB/s
Aggregierter Durchsatz: 96288596 KiB/s-Liste
aller Ziele:
1 2950039 KiB/s NodeID: node001-numa1-1 [ID: 1]
2 2956121 KiB/s NodeID: node001-numa1-2 [ID: 2]
3 2954473 KiB/s NodeID: node001-numa1-3 [ID: 3]
4 2957658 KiB/s NodeID: node002-numa0-1 [ID: 4]
5 2947109 KiB/s NodeID: node002-numa0-2 [ID: 5]
6 2969886 KiB/s NodeID: node002-numa0-3 [ID: 6]
7 2892578 KiB/s NodeID: node002-numa1-1 [ID: 7]
8 2886899 KiB/s NodeID: node002-numa1-2 [ID: 8]
9 2888972 KiB/s NodeID: node002-numa1-3 [ID: 9]
10 2861995 KiB/s NodeID: node003-numa0-1 [ID: 10]
11 2874314 KiB/s nodeID: node003-numa0-2 [ID: 11]
12 2879096 KiB/s NodeID: node003-numa0-3 [ID: 12]
13 2832635 KiB/s nodeID: node003-numa1-1 [ID: 13]
14 2830479 KiB/s NodeID: node003-numa1-2 [ID: 14]
15 2830971 KiB/s NodeID: node003-numa1-3 [ID: 15]
16 2986890 KiB/s NodeID: node004-numa0-1 [ID: 16]
17 2979197 KiB/s NodeID: node004-numa0-2 [ID: 17]
18 2983958 KiB/s NodeID: node004-numa0-3 [ID: 18]
19 2897974 KiB/s NodeID: node004-numa1-1 [ID: 19]
20 2900880 KiB/s NodeID: node004-numa1-2 [ID: 20]
21 2904036 KiB/s NodeID: node004-numa1-3 [ID: 21]
22 3025500 KiB/s NodeID: node005-numa0-1 [ID: 22]
23 3021558 KiB/s NodeID: node005-numa0-2 [ID: 23]
24 3017387 KiB/s NodeID: node005-numa0-3 [ID: 24]
25 2921480 KiB/s NodeID: node005-numa1-1 [ID: 25]
26 2930226 KiB/s NodeID: node005-numa1-2 [ID: 26]
27 2930548 KiB/s NodeID: node005-numa1-3 [ID: 27]
28 2900018 KiB/s NodeID: node006-numa0-1 [ID: 28]
29 2898520 KiB/s NodeID: node006-numa0-2 [ID: 29]
30 2907113 KiB/s NodeID: node006-numa0-3 [ID: 30]
31 2855079 KiB/s NodeID: node006-numa1-1 [ID: 31]
32 2853527 KiB/s NodeID: node006-numa1-2 [ID: 32]
33 2861480 KiB/s NodeID: node006-numa1-3 [ID: 33]
Aus der obigen Ausgabe geht hervor, dass alle Speicherziele gleichmäßig funktionieren und keine defekten Ziele im System vorhanden sind.