Questo blog illustra le caratteristiche salienti di Dell EMC Ready Solutions for HPC BeeGFS Storage , annunciate di recente. Questo è il terzo blog della serie sulla soluzione di storage ad alte prestazioni BeeGFS. Il primo blog ha annunciato il rilascio della soluzione. Il secondo blog ha parlato della scalabilità di Dell EMC Ready Solutions for HPC BeeGFS Storage. Ha fornito dettagli sulle configurazioni di base, le configurazioni scalabili flessibili e le prestazioni di lettura/scrittura sequenziale misurate effettive delle varie configurazioni, dimostrando che la scalabilità è lineare rispetto al numero di server nella soluzione. Il blog attuale evidenzia l'utilizzo di "StorageBench", il benchmark di destinazione dello storage integrato di BeeGFS.
BeeGFS è un file system open source che può essere scaricato da www.beegfs.io. Si tratta di un file system parallelo che distribuisce i dati tra più destinazioni di storage. Si tratta di un software-defined storage che separa il file system logico dall'hardware di storage sottostante, consentendo all'utente di definire come e dove vengono archiviati i dati. Il software del file system include funzionalità aziendali come high availability, applicazione delle quote ed elenchi di controllo dell'accesso. Le caratteristiche principali di BeeGFS sono la facilità d'uso, la scalabilità e la flessibilità. La sua facilità d'uso deriva dal fatto che tutti i componenti lato server sono daemon di spazio utente, mentre il client è un modulo kernel che non richiede patch al kernel stesso. Tutti i componenti di BeeGFS possono essere installati e aggiornati senza riavviare il server. In questo modo possiamo aggiungere client e server al sistema esistente senza downtime. Aggiungendo server e unità, è possibile aumentare le prestazioni e la capacità del file system nel blog disponibile qui. BeeGFS supporta più distribuzioni Linux ed è progettato per funzionare con qualsiasi file system locale conforme a POSIX. BeeGFS supporta inoltre l'esecuzione di più istanze di un determinato servizio sullo stesso server.
Dell EMC Ready Solutions for HPC BeeGFS Storage sfrutta tutte le funzionalità principali del file system BeeGFS ed è progettato per prestazioni elevate. La soluzione utilizza i server PowerEdge R740xd per lo storage e l'elaborazione di metadati e dati. Ogni server PowerEdge R740xd dispone di 24 SSD Intel P4600 NVMe da 1,6 TB considerati come il secondo grande passo avanti nella tecnologia delle unità: le SSD sono le prime. Negli ambienti HPC, lo spazio scratch può spesso essere un fattore limitante. Può essere troppo piccola o troppo lenta. Dell EMC Ready Solutions for HPC BeeGFS Storage è progettato per essere utilizzato come soluzione scratch e serve lo storage scratch utilizzando il file system BeeGFS.
BeeGFS include due strumenti di benchmarking integrati che possono aiutare a caratterizzare o valutare rispettivamente NetBench e StorageBench di rete o storage. Quando la modalità NetBench è abilitata, i server scaricheranno le richieste di scrittura ricevute anziché scrivere i dati. Analogamente, in caso di richieste di lettura, invece di leggere dal file system sottostante, verranno inviati ai client solo i buffer di memoria. La modalità NetBench è destinata al test del throughput di streaming di rete indipendentemente dai dischi sottostanti. D'altro canto, StorageBench ha lo scopo di misurare il throughput di streaming del file system sottostante indipendentemente dalle prestazioni di rete. StorageBench è un benchmark di destinazione dello storage che non utilizza la rete. Il comando storage-bench invia semplicemente la richiesta alle destinazioni di storage per avviare la scrittura/lettura dei dati. In questo modo, eliminiamo l'impatto della rete. L'output che otteniamo dal banco di storage è le migliori prestazioni che il sistema può ottenere se le prestazioni di rete sono ideali. Questo blog illustra come Utilizzare StorageBench per confrontare le prestazioni delle diverse destinazioni di storage e quindi identificare destinazioni difettose o non configurate correttamente.
StorageBench non utilizza il file system montato. Quando eseguiamo StorageBench, c'è solo una destinazione per file. Storagebench crea una directory su ogni destinazione di storage nel sistema in cui vengono creati file di test uguali al numero di thread di test. I dati vengono trasmessi direttamente a questo per mostrare il throughput a basso livello disponibile per ogni destinazione di storage. Senza alcuna comunicazione di rete, lo striping dei file non può essere simulato. Pertanto, i risultati del benchmark dello storage sono piuttosto paragonabili all'I/O del client con striping disabilitato. Quando vengono eseguiti benchmark effettivi, il file viene sottoposto a striping su 4 destinazioni di storage se viene adottato il modello di striping predefinito.
Allo scopo di testare diverse destinazioni di storage, sono state utilizzate le configurazioni di piccole e medie dimensioni descritte nel blog sulla scalabilità della soluzione di storage BeeGFS di Dell EMC. Entrambe le configurazioni hanno lo stesso numero di destinazioni di metadati configurate in RAID 1. Si differenziano nella configurazione RAID delle destinazioni di storage. Mentre la configurazione di piccole dimensioni include lo storage, le destinazioni configurate in RAID 0 di 6 unità, la configurazione di medie dimensioni ha le destinazioni di storage configurate in RAID 10 di 6 unità. Le destinazioni di storage configurate nella configurazione small e medium sono tabulate di seguito:
Tabella 1 Configurazione del banco di prova | ||
---|---|---|
Configurazione | Medio - RAID 10 per destinazioni di storage | Piccolo: RAID 0 per destinazioni di storage |
Numero di destinazioni di metadati | 6 | 6 |
Numero di istanze del servizio di metadati | 6 | 6 |
Numero di storage server | 5 | 2 |
Numero di destinazioni di storage | 22 | 10 |
Numero di servizi di storage per server | 4 | 4 |
Numero di servizi di storage per zona NUMA | 2 | 2 |
Numero di destinazioni per istanza del servizio di storage | 2 | 2 |
Nota: La configurazione di cui sopra della configurazione di medie dimensioni è solo allo scopo di testare il throughput delle destinazioni di storage configurate in configurazioni RAID diverse utilizzando lo strumento StorageBench.
Il benchmark di storage viene avviato e monitorato con lo strumento beegfs-ctl. Il pacchetto beegfs-utils fornisce lo strumento della riga di comando beegfs-ctl che può essere utilizzato per eseguire il benchmark delle destinazioni di storage. Nell'esempio seguente viene avviato un benchmark di scrittura su tutte le destinazioni di tutti gli storage server BeeGFS con una dimensione del block di I/O di 512 KB, utilizzando 16 thread per destinazione, ognuno dei quali scriverà 200 Gb di dati nel proprio file.
[root@stor1 ~]# beegfs-ctl --storagebench --alltargets --write --blocksize=512K --size=200G --threads=16
È stato avviato il benchmark di scrittura dello storage.
È possibile eseguire una query sullo stato con l'argomento --status di beegfs-ctl.
Stato del benchmark del server:
In esecuzione: 10
Il messaggio "Running: L'output da 10" indica che sono presenti in totale 10 destinazioni di storage configurate nel sistema.
Per eseguire una query sullo stato/i risultati del benchmark di tutte le destinazioni, è possibile eseguire il comando seguente:
[root@stor1 ~]# beegfs-ctl --storagebench --alltargets --status
Server benchmark status:
Finished: 10
Risultati del benchmark di scrittura:
Throughput minimo: 4692435 KiB/s nodeID: stor1-numa0-2 [ID: 6], targetID: 50
Throughput massimo: 5368537 KiB/s nodeID: meta-stor-numa1-2 [ID: 2], targetID: 48
throughput medio: throughput aggregato di 4907091 KiB/s
: 49070915 KiB/s
L'aggiunta dettagliata al comando precedente mostra l'elenco di tutte le destinazioni e il rispettivo throughput.
[root@meta-stor ~]# beegfs-ctl --storagebench --alltargets --status --verbose
Server benchmark status:
Finished: 10
Risultati del benchmark di scrittura:
Throughput minimo: 4692435 KiB/s nodeID: stor1-numa0-2 [ID: 6], targetID: 6
Throughput massimo: 5368537 KiB/s nodeID: meta-stor-numa1-2 [ID: 2], targetID: 2
throughput medio: throughput aggregato di 4907091 KiB/s
: 49070915 KiB/s
Elenco di tutte le destinazioni:
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]
Il throughput medio per destinazione di storage configurato in RAID 0 è 5,02 GB/s.
Nell'esempio seguente viene avviato un benchmark di scrittura su tutte le destinazioni di tutti gli storage server BeeGFS con una dimensione del block di I/O di 512 KB, utilizzando 16 thread per destinazione, ognuno dei quali scriverà 200 Gb di dati nel proprio file.
[root@node001 ~]# beegfs-ctl --storagebench --alltargets --write --blocksize=512K --size=200G --threads=16
È stato avviato il benchmark di scrittura dello storage.
È possibile eseguire una query sullo stato con l'argomento --status di beegfs-ctl.
Stato del benchmark del server:
In esecuzione: 22
L'aggiunta dettagliata al comando precedente mostra l'elenco di tutte le destinazioni e il rispettivo throughput.
[root@node001 ~]# beegfs-ctl --storagebench --alltargets --status --verbose
Server benchmark status:
Finished: 22
Risultati del benchmark di scrittura:
Throughput minimo: 2705987 KiB/s nodeID: node006-numa0-1 [ID: 19], targetID: 1
Throughput massimo: 3364311 KiB/s nodeID: node001-numa1-1 [ID: 1], targetID: 1
throughput medio: throughput aggregato di 3212845 KiB/s
: 70682603 KiB/sElenco di tutte le destinazioni:
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]
Il throughput medio per destinazione di storage è di 3,29 GB/s.
Dall'output dei test di benchmark StorageBench eseguiti su due configurazioni BeeGFS diverse, una con destinazioni di storage configurate in RAID 0 e un'altra con destinazioni di storage configurate in RAID 10, è evidente che le prestazioni di scrittura sono migliori con le destinazioni di storage configurate in RAID 0 anziché IN RAID 10. Quando è stato utilizzato il comando dd per scrivere un file 10G con dimensioni block di 1 M e "oflag=direct", la media era di circa 5,1 GB/s per il sistema di piccole dimensioni configurato in RAID 0, mentre il throughput medio era di circa 3,4 GB/s per il sistema medio configurato in RAID 10, il che è paragonabile ai risultati ottenuti utilizzando lo strumento storagebench.
[root@node001 ~]# beegfs-ctl --storagebench --alltargets --status --verbose
Server benchmark status:
Finished: 33
Leggi i risultati del benchmark:
Throughput minimo: 2830479 KiB/s nodeID: node003-numa1-2 [ID: 14], targetID: 14
Throughput massimo: 3025500 KiB/s nodeID: node005-numa0-1 [ID: 22], targetID: 22
throughput medio: throughput aggregato di 2917836 KiB/s
: 96288596 KiB/s
Elenco di tutte le destinazioni:
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]
Dall'output precedente, è evidente che tutte le destinazioni di storage funzionano uniformemente e che non ci sono destinazioni difettose nel sistema.