Arrays RAID sur NVMe

Arrays RAID sur NVMe
Dans cet article, nous allons aborder les différentes manières d'organiser des ensembles RAID, ainsi que vous présenter l'un des premiers contrôleurs RAID matériels prenant en charge NVMe.

La diversité des applications de la technologie RAID se retrouve dans le segment des serveurs. Dans le segment client, on utilise le plus souvent des configurations RAID0 ou RAID1 sur deux disques.

Cet article offre un aperçu de la technologie RAID, un bref guide sur la création d'ensembles RAID à l'aide de trois outils différents et une comparaison des performances des disques virtuels selon la méthode utilisée.

Qu'est-ce que le RAID ?

Wikipedia donne une définition complète de la technologie RAID :

RAID (en anglais. Redundant Array of Independent Disks — un ensemble redondant de disques indépendants — une technologie de virtualisation des données qui permet de regrouper plusieurs dispositifs de stockage physiques en un module logique pour améliorer la tolérance aux pannes et les performances.

La configuration des ensembles de disques et les technologies utilisées dépendent du niveau RAID choisi. Niveau RAID. Les niveaux RAID sont standardisés dans la spécification Common RAID Disk Data Format. Elle décrit de nombreux niveaux RAID, mais les plus répandus sont généralement considérés comme étant RAID0, RAID1, RAID5 et RAID6.

RAID0, ou Stripes, — est un niveau RAID qui combine deux disques physiques ou plus en un seul disque logique. La capacité du disque logique est égale à la somme des capacités des disques physiques qui constituent l'ensemble. À ce niveau, il n'y a pas de redondance, et la défaillance d'un disque peut entraîner la perte de toutes les données du disque virtuel.

Niveau RAID1, ou Mirror, crée des copies identiques des données sur deux disques ou plus. La capacité du disque virtuel ne dépasse pas celle du disque physique le plus petit. Les données sur le disque virtuel RAID1 resteront accessibles tant qu'au moins un disque physique de l'ensemble fonctionne. L'utilisation de RAID1 ajoute de la redondance, mais c'est une solution relativement coûteuse, car, dans des ensembles de deux disques ou plus, seule la capacité d'un seul disque est disponible.

Niveau RAID5 résout le problème du coût. Pour créer un tableau avec un niveau RAID5, il faut au minimum 3 disques, ce qui rend le tableau résistant à la défaillance d'un disque. Les données dans RAID5 sont stockées par blocs avec des sommes de contrôle. Il n'y a pas de division stricte entre les disques de données et les disques de sommes de contrôle. Les sommes de contrôle dans RAID5 sont le résultat d'une opération XOR appliquée à N-1 blocs, chacun provenant de son propre disque.

Bien que les tableaux RAID augmentent la redondance et fournissent une sauvegarde, ils ne sont pas adaptés au stockage de sauvegardes.

Après un bref aperçu des types de tableaux RAID, nous pouvons passer aux dispositifs et aux programmes qui permettent de créer et d'utiliser des ensembles de disques.

Types de contrôleurs RAID

Il existe deux façons de créer et d'utiliser des tableaux RAID : matériel et logiciel. Nous examinerons les solutions suivantes :

  • RAID logiciel Linux.
  • Intel® Virtual RAID On CPU.
  • LSI MegaRAID 9460-8i.

Notons que la solution Intel® fonctionne sur un chipset, ce qui soulève la question de savoir s'il s'agit d'une solution matérielle ou logicielle. Par exemple, l'hyperviseur VMWare ESXi considère VROC comme logiciel et ne le prend pas en charge officiellement.

RAID logiciel Linux

Les tableaux RAID logiciels dans la famille des systèmes d'exploitation Linux sont une solution assez courante tant dans le segment client que serveur. Tout ce qu'il faut pour créer un tableau, c'est l'outil mdadm et quelques dispositifs de blocs. La seule exigence que RAID logiciel Linux impose aux supports utilisés est d'être un dispositif de blocs accessible au système.

L'absence de coûts pour le matériel et les logiciels est un avantage évident de cette approche. RAID logiciel Linux organise les ensembles de disques avec un coût en temps processeur. La liste des niveaux RAID pris en charge et l'état des tableaux de disques actuels peuvent être consultés dans le fichier mdstat, qui se trouve à la racine de procfs :

root@grindelwald:~# cat /proc/mdstat
Personnalités : [linear] [multipath] [raid0] [raid1] [raid10]
dispositifs inutilisés :

Le support des niveaux RAID est ajouté en chargeant le module de noyau approprié, par exemple :

root@grindelwald:~# modprobe raid456
root@grindelwald:~# cat /proc/mdstat
Personnalités : [linear] [multipath] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
dispositifs inutilisés :

Toutes les opérations sur les tableaux de disques se font via l'outil en ligne de commande mdadm. La construction d'un tableau de disques se fait en une seule commande :

mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/nvme1n1 /dev/nvme2n1

Après l'exécution de cette commande, un périphérique de bloc /dev/md0 apparaîtra dans le système, représentant un disque virtuel.

Intel® Virtual RAID On CPU

Arrays RAID sur NVMeIntel® VROC Standard Hardware Key
Intel® Virtual RAID On CPU (VROC) est une technologie logiciel-matériel pour créer des ensembles RAID basés sur des chipsets Intel®. Cette technologie est principalement disponible pour les cartes mères prenant en charge les processeurs Intel® Xeon® Scalable. Par défaut, VROC n'est pas accessible. Pour l'activer, il est nécessaire d'installer une clé de licence matérielle VROC.

La licence standard VROC permet de créer des ensembles de disques avec des niveaux RAID 0, 1 et 10. La version premium étend cette liste en ajoutant le support du RAID 5.

La technologie Intel® VROC sur les cartes mères modernes fonctionne en collaboration avec Intel® Volume Management Device (VMD), qui permet le remplacement à chaud des disques avec une interface NVMe.

Arrays RAID sur NVMeIntel® VROC avec licence standard La configuration des ensembles se fait via l'Utilitaire de Configuration lors du démarrage du serveur. Dans l'onglet Avancé le point Intel® Virtual RAID on CPU apparaît, où il est possible de configurer les ensembles de disques.

Arrays RAID sur NVMeCréation d'un ensemble RAID1 sur deux disques
La technologie Intel® VROC a ses « atouts ». Les ensembles de disques créés avec VROC sont compatibles avec Linux Software RAID. Cela signifie que l'état des ensembles peut être suivi dans /proc/mdstat, et administré via mdadm. Cette « fonctionnalité » est officiellement supportée par Intel. Après avoir assemblé un RAID1 dans l'Utilitaire de Configuration, on peut observer la synchronisation des disques dans l'OS :

root@grindelwald:~# cat /proc/mdstat 
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md126 : raid1 actif nvme2n1[1] nvme1n1[0]
      1855832064 blocs super externe:/md127/0 [2/2] [UU]
      [>....................]  resync =  1.3% (24207232/1855832064) finish=148.2min speed=205933K/sec
      
md127 : inactif nvme1n1[1](S) nvme2n1[0](S)
      10402 blocs super externe:imsm
       
devices non utilisés: <aucun>

Notons qu'il n'est pas possible de créer des ensembles sur VROC via mdadm (les ensembles créés seront des Linux SW RAID), mais il est possible de remplacer les disques et de démonter des ensembles.

LSI MegaRAID 9460-8i

Arrays RAID sur NVMeApparence du contrôleur LSI MegaRAID 9460-8i
Le contrôleur RAID est une solution matérielle autonome. Le contrôleur fonctionne uniquement avec des disques connectés directement à lui. Ce contrôleur RAID supporte jusqu'à 24 disques avec une interface NVMe. C'est justement le support de NVMe qui distingue ce contrôleur des autres.

Arrays RAID sur NVMeMenu principal du contrôleur matériel
Dans le mode UEFI, les paramètres du contrôleur sont intégrés dans l'Utilitaire de configuration. Comparé à VROC, le menu du contrôleur matériel semble beaucoup plus complexe.

Arrays RAID sur NVMeCréation d'un RAID1 sur deux disques
L'explication de la configuration des ensembles de disques sur un contrôleur matériel est un sujet assez délicat et pourrait donner lieu à un article complet. Ici, nous nous limiterons simplement à créer un RAID0 et un RAID1 avec les paramètres par défaut.

Les disques connectés au contrôleur matériel ne sont pas visibles par le système d'exploitation. Au lieu de cela, le contrôleur « masque » tous les ensembles RAID sous des disques SAS. Les disques connectés au contrôleur mais ne faisant pas partie de l'ensemble de disques ne seront pas accessibles au système d'exploitation.

root@grindelwald:~# smartctl -i /dev/sda
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-48-generic] (version locale)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org

=== DÉBUT DE LA SECTION D'INFORMATION ===
Fournisseur :               AVAGO
Produit :                  MR9460-8i
Révision :                 5.14
Conformité :               SPC-3
Capacité utilisateur :      1,999,844,147,200 bytes [1.99 To]
Taille du bloc logique :    512 bytes
Vitesse de rotation :       Dispositif à état solide
Identifiant de l'unité logique : 0x000000000000000000000000000000
Numéro de série :          00000000000000000000000000000000
Type de dispositif :        disque
L'heure locale est :        dim. oct. 11 16:27:59 2020 MSK
Le support SMART est :      Indisponible - le dispositif n'a pas la capacité SMART.

Malgré le masquage en tant que disques SAS, les ensembles NVMe fonctionneront à la vitesse PCIe. Cependant, cette caractéristique permet de démarrer avec NVMe en mode Legacy.

Stand de test

Chaque méthode d'organisation des ensembles de disques présente ses propres avantages et inconvénients physiques. Mais y a-t-il une différence de performance lors de l'utilisation d'ensembles de disques?

Pour atteindre une équité maximale, tous les tests seront effectués sur le même serveur. Sa configuration :

  • 2x Intel® Xeon® 6240;
  • 12x DDR4-2666 16 Go;
  • LSI MegaRAID 9460-8i;
  • Intel® VROC Standard Hardware Key;
  • 4x Intel® SSD DC P4510 U.2 2 To;
  • 1x Samsung 970 EVO Plus M.2 500 Go.

Les composants testés sont les P4510, dont la moitié est connectée à la carte mère et l'autre à un contrôleur RAID. Sur M.2, le système d'exploitation Ubuntu 20.04 est installé, et les tests seront réalisés à l'aide de fio version 3.16.

Test

Nous allons d'abord vérifier les latences lors des opérations sur le disque. Le test est effectué en un seul fil, avec une taille de bloc de 4 Ko. Chaque test dure 5 minutes. Avant de commencer, le planificateur I/O est défini sur none pour le dispositif de bloc approprié. La commande fio est la suivante :

fio --name=test --blocksize=4k --direct=1 --buffered=0 --ioengine=libaio  --iodepth=1 --loops=1000 --runtime=300  --rw= --filename=

Nous prenons clat 99.00% des résultats de fio. Les résultats sont présentés dans le tableau ci-dessous.

Lecture aléatoire, µs
Écriture aléatoire, µs

Disque
112
78

Linux SW RAID, RAID0
113
45

VROC, RAID0
112
46

LSI, RAID0
122
63

Linux SW RAID, RAID1
113
48

VROC, RAID1
113
45

LSI, RAID1
128
89

En plus des latences d'accès aux données, nous souhaitons voir les performances des dispositifs virtuels et les comparer avec celles des disques physiques. La commande pour exécuter fio :

fio --name=test --blocksize=4k --direct=1 --buffered=0 --ioengine=libaio --loops=1000 --runtime=300 --iodepth= --rw= --filename=

Les performances sont mesurées en nombre d'opérations d'entrée-sortie. Les résultats sont présentés dans le tableau ci-dessous.

Lecture aléatoire 1 thread, IOPS
Écriture aléatoire 1 thread, IOPS
Lecture aléatoire 128 threads, IOPS
Écriture aléatoire 128 threads, IOPS

Disque
11300
40700
453000
105000

Linux SW RAID, RAID0
11200
52000
429000
232000

VROC, RAID0
11200
52300
441000
162000

LSI, RAID0
10900
44200
311000
160000

Linux SW RAID, RAID1
10000
48600
395000
147000

VROC, RAID1
10000
54400
378000
244000

LSI, RAID1
11000
34300
229000
248000

Il est facile de constater que l'utilisation d'un contrôleur matériel entraîne une augmentation des latences et une baisse de performances par rapport aux solutions logicielles.

Conclusion

L'utilisation de solutions matérielles pour créer des ensembles de disques à partir de deux disques semble peu rationnelle. Toutefois, il existe des tâches où l'utilisation de contrôleurs RAID est justifiée. Avec l'apparition de contrôleurs prenant en charge l'interface NVMe, les utilisateurs ont la possibilité d'utiliser des SSD plus rapides dans leurs projets.

Arrays RAID sur NVMe

Seuls les utilisateurs enregistrés peuvent participer au sondage. Connectez-vous, s'il vous plaît.

Utilisez-vous des solutions RAID ?

  • 29,6%Oui, solutions matérielles32

  • 50,0%Oui, solutions logicielles54

  • 16,7%Non18

  • 3,7%RAID non nécessaire4

108 utilisateurs ont voté. 14 utilisateurs se sont abstenus.

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster