Ce blog présente les principales fonctionnalités des solutions Dell EMC Ready solutions for HPC BeeGFS Storage qui ont été annoncées récemment. Il s’agit du troisième blog de la série concernant la solution de stockage hautes performances BeeGFS. Le premier blog a annoncé la sortie de la solution. Le deuxième blog a abordé l’évolutivité des solutions Dell EMC Ready solutions for HPC BeeGFS Storage. Il fournit des informations sur les configurations de base, les configurations flexibles évolutives et les performances réelles mesurées en lecture/écriture séquentielles des différentes configurations, ce qui démontre que l’évolutivité est linéaire par rapport au nombre de serveurs dans la solution. Le blog actuel met en évidence l’utilisation de « StorageBench », l’analyse comparative des cibles de stockage intégrée de BeeGFS.
BeeGFS est un système de fichiers open source qui peut être téléchargé à partir de www.beegfs.io. Il s’agit d’un système de fichiers parallèle qui distribue les données sur plusieurs cibles de stockage. Il s’agit d’un stockage software-defined qui dissocie le système de fichiers logique du matériel de stockage sous-jacent, ce qui permet à l’utilisateur de définir comment et où les données sont stockées. Le logiciel du système de fichiers inclut des fonctionnalités d’entreprise telles que la haute disponibilité, l’application de quotas et les listes de contrôle d’accès. Les principales caractéristiques de BeeGFS sont sa facilité d’utilisation, son évolutivité et sa flexibilité. Sa facilité d’utilisation provient du fait que tous les composants côté serveur sont des processus d’espace utilisateur, tandis que le client est un module de noyau qui ne nécessite aucun correctif pour le noyau lui-même. Tous les composants BeeGFS peuvent être installés et mis à jour sans redémarrer le serveur. Nous pouvons donc ajouter des clients et des serveurs au système existant sans interruption de service. En ajoutant des serveurs et des disques, vous pouvez augmenter les performances et la capacité du système de fichiers dans le blog disponible ici. BeeGFS prend en charge plusieurs distributions Linux et est conçu pour fonctionner avec n’importe quel système de fichiers local conforme POSIX. BeeGFS prend également en charge l’exécution de plusieurs instances d’un service donné sur le même serveur.
Les solutions Dell EMC Ready Solutions for HPC BeeGFS Storage tirent parti de toutes les fonctionnalités clés du système de fichiers BeeGFS et sont conçues pour des performances élevées. La solution utilise les serveurs PowerEdge R740xd pour stocker et traiter les métadonnées et les données. Chaque serveur PowerEdge R740xd dispose de 24 disques SSD Intel P4600 NVMe de 1,6 To qui sont considérés comme le deuxième saut majeur en matière de technologie de disque, les disques SSD étant les premiers. Dans les environnements HPC, l’espace de travail peut souvent être un facteur limitatif. Il est peut-être trop petit ou trop lent. Les solutions Dell EMC Ready Solutions for HPC BeeGFS Storage sont conçues pour être utilisées en tant que solution de scratch et servent le stockage à rayures à l’aide du système de fichiers BeeGFS.
BeeGFS comprend deux outils d’analyse comparative intégrés qui peuvent aider à caractériser ou évaluer le réseau ou le stockage NetBench et StorageBench , respectivement. Lorsque le mode NetBench est activé, les serveurs ignorent les demandes d’écriture reçues au lieu d’écrire les données. De même, en cas de demandes de lecture, au lieu de lire à partir du système de fichiers sous-jacent, seules les mémoires tampons sont envoyées aux clients. Le mode NetBench est conçu pour tester le débit de streaming réseau indépendamment des disques sous-jacents. D’un autre côté, StorageBench est conçu pour mesurer le débit de streaming du système de fichiers sous-jacent indépendamment des performances du réseau. StorageBench est un point de référence des cibles de stockage qui n’utilise pas le réseau. La commande storage-bench envoie simplement la demande aux cibles de stockage pour commencer à écrire/lire des données. Ce faisant, nous éliminons l’impact du réseau. La sortie que nous obtenons du banc de stockage est la meilleure performance que le système peut obtenir si les performances réseau sont idéales. Ce blog explique comment StorageBench peut être utilisé pour comparer les performances des différentes cibles de stockage et identifier ainsi les cibles défectueuses ou mal configurées.
StorageBench n’utilise pas le système de fichiers monté. Lorsque nous exécutons StorageBench, il n’y a qu’une seule cible par fichier. Storagebench crée un répertoire sur chaque cible de stockage sur le système où les fichiers de test sont créés de la même manière que le nombre de threads de test. Les données y sont transmises directement pour afficher un faible débit disponible pour chaque cible de stockage. Sans aucune communication réseau, l’agrégation par bandes de fichiers ne peut pas être simulée. Par conséquent, les résultats de l’analyse comparative du stockage sont plutôt comparables aux E/S client avec segmentation désactivée. Lorsque des benchmarks réels sont exécutés, le fichier est réparti sur 4 cibles de stockage si le modèle de répartition par défaut est adopté.
Dans le but de tester différentes cibles de stockage, les configurations de petite et moyenne taille décrites dans le blog sur l’évolutivité de la solution de stockage Dell EMC BeeGFS ont été utilisées. Les deux configurations ont le même nombre de cibles de métadonnées configurées dans RAID 1. Ils diffèrent dans la configuration RAID des cibles de stockage. Bien que la petite configuration dispose du stockage, des cibles configurées en RAID 0 sur 6 disques, la configuration moyenne dispose des cibles de stockage configurées dans RAID 10 sur 6 disques. Les cibles de stockage configurées lors de la configuration de petite et moyenne taille sont présentées ci-dessous :
Tableau 1 : Configuration des bancs d’essai | ||
---|---|---|
Configuration | Moyen : RAID 10 pour les cibles de stockage | Petit : RAID 0 pour les cibles de stockage |
Nombre de cibles de métadonnées | 6 | 6 |
Nombre d’instances du service de métadonnées | 6 | 6 |
Nombre de serveurs de stockage | 5 | 2 |
Nombre de cibles de stockage | 22 | 10 |
Nombre de services de stockage par serveur | 4 | 4 |
Nombre de services de stockage par zone NUMA | 2 | 2 |
Nombre de cibles par instance de service de stockage | 2 | 2 |
Remarque : La configuration ci-dessus de la configuration moyenne est uniquement destinée à tester le débit des cibles de stockage configurées dans différentes configurations RAID à l’aide de l’outil StorageBench.
Le benchmark de stockage est démarré et surveillé à l’aide de l’outil beegfs-ctl. Le package beegfs-utils fournit l’outil de ligne de commande beegfs-ctl qui peut être utilisé pour exécuter l’analyse comparative des cibles de stockage. L’exemple suivant démarre un benchmark d’écriture sur toutes les cibles de tous les serveurs de stockage BeeGFS avec une taille de bloc d’E/S de 512 Ko, en utilisant 16 threads par cible, chacun d’eux écrivant 200 Go de données dans son propre fichier.
[root@stor1 ~]# beegfs-ctl --storagebench --alltargets --write --blocksize=512K --size=200G --threads=16
Write storage benchmark was started.
Vous pouvez interroger l’état à l’aide de l’argument --status beegfs-ctl.
État de l’analyse comparative du serveur :
En cours d’exécution : 10
Le message « Running : La sortie 10 » indique qu’il y a au total 10 cibles de stockage configurées dans le système.
Pour interroger l’état/les résultats de l’analyse comparative de toutes les cibles, vous pouvez exécuter la commande suivante :
[root@stor1 ~]# beegfs-ctl --storagebench --alltargets --status
État de l’analyse comparative du serveur :
Finished : 10
Résultats de l’analyse comparative en écriture :
Débit min. : 4692435 KiB/s nodeID : stor1-numa0-2 [ID : 6], targetID : Débit maximal de 50
: 5368537 KiB/s nodeID : meta-stor-numa1-2 [ID : 2], targetID : 48
Débit moyen : débit agrégé 4907091 KiB/s
: 49070915 Ko/s
L’ajout détaillé à la commande ci-dessus affiche la liste de toutes les cibles et leur débit respectif.
[root@meta-stor ~]# beegfs-ctl --storagebench --alltargets --status --verbose
Server benchmark status :
Finished : 10
Résultats de l’analyse comparative en écriture :
Débit min. : 4692435 KiB/s nodeID : stor1-numa0-2 [ID : 6], targetID : 6
Débit maximal : 5368537 KiB/s nodeID : meta-stor-numa1-2 [ID : 2], targetID : 2
Débit moyen : débit agrégé 4907091 KiB/s
: liste 49070915 KiB/s
de toutes les cibles :
1 5368477 KiB/s nodeID : meta-stor-numa1-1 [ID : 1]
2 nodeID 5368537 KiB/s : 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]
Le débit moyen par cible de stockage configuré en RAID 0 est de 5,02 Go/s.
L’exemple suivant démarre un benchmark d’écriture sur toutes les cibles de tous les serveurs de stockage BeeGFS avec une taille de bloc d’E/S de 512 Ko, en utilisant 16 threads par cible, chacun d’eux écrivant 200 Go de données dans son propre fichier.
[root@node001 ~]# beegfs-ctl --storagebench --alltargets --write --blocksize=512K --size=200G --threads=16
Write storage benchmark was started.
Vous pouvez interroger l’état à l’aide de l’argument --status beegfs-ctl.
État de l’analyse comparative du serveur :
En cours d’exécution : 22
L’ajout détaillé à la commande ci-dessus affiche la liste de toutes les cibles et leur débit respectif.
[root@node001 ~]# beegfs-ctl --storagebench --alltargets --status --verbose
Server benchmark status :
Finished : 22 Résultats de l’analyse comparative d’écriture
:
débit min. : 2705987 KiB/s nodeID : node006-numa0-1 [ID : 19], targetID : 1
Débit maximal : 3364311 KiB/s nodeID : node001-numa1-1 [ID : 1], targetID : 1
Débit moyen : débit agrégé 3212845 KiB/s
: 70682603 Ko/sListe de toutes les cibles :
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]
Le débit moyen par cible de stockage est de 3,29 Go/s.
À partir de la sortie des tests d’analyse comparative StorageBench effectués sur deux configurations BeeGFS différentes, l’une avec des cibles de stockage configurées en RAID 0 et une autre avec des cibles de stockage configurées en RAID 10, il est évident que les performances d’écriture sont meilleures avec les cibles de stockage configurées en RAID 0 plutôt qu’en RAID 10. Lorsque la commande dd était utilisée pour écrire un fichier 10G avec une taille de bloc de 1 Million et « oflag=direct », la moyenne était d’environ 5,1 Go/s pour le petit système configuré en RAID 0, tandis que le débit moyen était d’environ 3,4 Go/s pour le système moyen configuré en RAID 10, ce qui est comparable aux résultats obtenus à l’aide de l’outil Storagebench.
[root@node001 ~]# beegfs-ctl --storagebench --alltargets --status --verbose
Server benchmark status :
Finished : 33
Résultats de l’analyse comparative de lecture :
débit min. : 2830479 KiB/s nodeID : node003-numa1-2 [ID : 14], targetID : Débit maximal de 14
: 3025500 KiB/s nodeID : node005-numa0-1 [ID : 22], targetID : 22
Débit moyen : débit agrégé 2917836 KiB/s
: liste 96288596 KiB/s
de toutes les cibles :
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]
Dans la sortie ci-dessus, il est évident que toutes les cibles de stockage s’exécutent uniformément et qu’il n’y a aucune cible défectueuse dans le système.