88 votes

Performances du RAID logiciel et matériel et utilisation du cache

J'ai lu beaucoup de choses sur les contrôleurs et les configurations RAID et l'un des points qui revient souvent est que les contrôleurs matériels sans cache offrent les mêmes performances que le RAID logiciel. Est-ce vraiment le cas ?

J'ai toujours pensé que les cartes RAID matérielles offriraient de meilleures performances même sans cache. Je veux dire, vous avez du matériel dédié pour effectuer les tâches. Si c'est le cas, quel est l'avantage d'avoir une carte RAID sans cache, quelque chose comme une LSI 9341-4i qui n'est pas vraiment bon marché.

De plus, si un gain de performance n'est possible qu'avec le cache, existe-t-il une configuration du cache qui écrit immédiatement sur le disque mais conserve les données dans le cache pour les opérations de lecture, ce qui fait qu'une BBU n'est pas une priorité ?

161voto

shodanshok Points 42743

En bref : si vous utilisez une carte RAID bas de gamme (sans cache), faites-vous une faveur et passez au RAID logiciel. Si vous utilisez une carte moyen-haut de gamme (avec BBU ou NVRAM), le matériel est souvent (mais pas toujours ! voir ci-dessous) un bon choix.

Longue réponse : lorsque la puissance de calcul était limitée, les cartes RAID matérielles présentaient l'avantage considérable de décharger le calcul de la parité/du syndrome pour les schémas RAID les impliquant (RAID 3/4/5, RAID6, ecc).

Cependant, avec l'augmentation constante des performances des CPU, cet avantage a pratiquement disparu : même l'ancien CPU de mon ordinateur portable (Core i5 M 520, génération Westmere) a des performances XOR de plus de 4 Go/s et des performances de syndrome RAID-6 de plus de 3 Go/s. par noyau d'exécution unique .

L'avantage que le RAID matériel conserve aujourd'hui est la présence d'un cache DRAM protégé contre les pertes de puissance, sous forme de BBU ou de NVRAM. Ce cache protégé offre une latence très faible pour les accès en écriture aléatoire (et les lectures qui frappent) et transforme essentiellement les écritures aléatoires en écritures séquentielles. Un contrôleur RAID sans un tel cache est presque inutile. . De plus, certains contrôleurs RAID bas de gamme sont non seulement dépourvus de cache, mais désactivent de force le cache DRAM privé du disque, conduisant à des performances plus faibles que sans carte RAID du tout. Les cartes PERC H200 et H300 de DELL en sont un exemple : elles désactivent totalement le cache privé du disque et (si un firmware plus récent ne l'a pas modifié) interdisent activement de le réactiver. Faites-vous une faveur et faites pas, jamais, jamais acheter de tels contrôleurs. Même si les contrôleurs haut de gamme désactivent souvent le cache privé du disque, ils ont au moins leur propre cache protégé, ce qui rend le cache privé du disque dur (mais pas celui du disque SSD !) quelque peu redondant.

Mais ce n'est pas la fin. Même les contrôleurs les plus performants (ceux qui disposent d'une BBU ou d'un cache NVRAM) peuvent donner des résultats incohérents lorsqu'ils sont utilisés avec des SSD, essentiellement parce que les SSD sont vraiment besoin de un cache privé rapide pour une programmation/effacement efficace des pages FLASH. Et si certains contrôleurs (la plupart ?) vous permettent de réactiver le cache privé du disque (ex : PERC H700/710/710P), si ce cache privé est volatile, vous risquez de perdre des données en cas de coupure de courant. Le comportement exact dépend du contrôleur et du firmware (ex : sur un DELL S6/i avec 256 MB de cache WB et a activé le cache du disque J'avais pas de lors de tests multiples et planifiés de perte de puissance), ce qui donne lieu à des incertitudes et à de nombreuses inquiétudes.

Les RAID logiciels à source ouverte, en revanche, sont des bêtes beaucoup plus contrôlables - leur logiciel n'est pas enfermé dans un micrologiciel propriétaire, et ils ont des modèles et des comportements de métadonnées bien définis. Les RAID logiciels partent de l'hypothèse (juste) que le cache DRAM privé du disque n'est pas protégé, mais en même temps il est critique pour des performances acceptables - donc plutôt que de le désactiver, ils utilisent les commandes ATA FLUSH / FUA pour écrire les données critiques sur un stockage stable. Comme ils fonctionnent souvent à partir des ports SATA attachés au chipset SB, leur bande passante est très bonne et le support des pilotes est excellent.

Cependant, s'il est utilisé avec des disques durs mécaniques, les modèles d'accès en écriture synchronisés et aléatoires (ex : bases de données, machines virtuelles) souffriront grandement par rapport à un contrôleur RAID matériel avec cache WB. D'autre part, lorsqu'il est utilisé avec des SSD d'entreprise (c'est-à-dire avec un cache d'écriture protégé contre les pertes de puissance), le RAID logiciel excelle souvent et donne des résultats encore plus élevés que les cartes RAID matérielles. Malheureusement, les SSD grand public ne disposent que d'un cache d'écriture volatile, ce qui donne des IOPS très faibles dans les charges de travail d'écriture synchronisée (bien que très rapides en lecture et en écriture asynchrone).

Il faut également savoir que les RAID logiciels ne sont pas tous égaux. Le RAID logiciel Windows a une mauvaise réputation, en termes de performances, et même Storage Space ne semble pas trop différent. Le MD Raid de Linux est exceptionnellement rapide et polyvalent, mais la pile d'E/S de Linux est composée de multiples pièces indépendantes que vous devez comprendre soigneusement pour en extraire des performances maximales. ZFS parity RAID (ZRAID) est extrêmement avancé mais, s'il n'est pas correctement configuré, il peut vous donner muy faibles IOPs ; le mirroring+striping, par contre, fonctionne très bien. Quoi qu'il en soit, il faut un périphérique SLOG rapide pour la gestion synchrone des écritures (ZIL).

En résumé :

  1. si vos charges de travail ne sont pas sensibles aux écritures aléatoires synchronisées, vous n'avez pas besoin d'une carte RAID
  2. si vous avez besoin d'une carte RAID, faites no acheter un contrôleur RAID sans cache WB
  3. si vous prévoyez d'utiliser un SSD, le RAID logiciel est préférable mais gardez à l'esprit que pour des écritures aléatoires synchronisées élevées, vous avez besoin d'un SSD protégé contre les pertes de puissance (c'est-à-dire Intel S/P/DC, Samsung PM/SM, etc.). Pour des performances pures, le meilleur choix est probablement Linux MD Raid, mais aujourd'hui, j'utilise généralement des miroirs ZFS en bandes. Si vous ne pouvez pas vous permettre de perdre la moitié de l'espace à cause des miroirs et que vous avez besoin des fonctionnalités avancées de ZFS, optez pour ZRAID mais soigneusement pensez à la configuration de vos VDEVs.
  4. si, même en utilisant un SSD, vous avez vraiment besoin d'une carte RAID matérielle, utilisez des SSD avec des caches protégés en écriture.
  5. si vous avez besoin de RAID6 en utilisant des disques durs mécaniques normaux, envisagez d'acheter une carte RAID rapide avec 512 Mo (ou plus) de cache WB. RAID6 a une forte pénalité de performance en écriture, et un cache WB correctement dimensionné peut au moins fournir un stockage intermédiaire rapide pour les petites écritures synchrones (ex : journal du système de fichiers).
  6. si vous avez besoin de RAID6 avec des disques durs mais que vous ne pouvez pas / ne voulez pas acheter une carte RAID matérielle, réfléchissez bien à votre configuration RAID logicielle. Par exemple, une solution possible avec Linux MD Raid est d'utiliser deux matrices : une petite matrice RAID10 pour les écritures de journal / journaux de BD, et une matrice RAID6 pour le stockage brut (comme serveur de fichiers). D'autre part, le RAID5/6 logiciel avec les SSD est très rapide, donc vous n'avez probablement pas besoin d'une carte RAID pour une configuration tout-SSD.

7voto

ewwhite Points 193555

Vous aurez besoin d'une batterie ou d'une solution de cache sauvegardée par flash pour tout contrôleur matériel que vous achetez. La plupart regrettent de ne pas l'avoir fait .

Mais pour répondre à votre question, la plupart des contrôleurs ont des ratios de cache configurables... donc 100%... lire cache et 0 %. écrire cache rend inutile la protection de la BBU. Vos performances en écriture seront tout simplement nulles.

Je ne peux pas répondre à votre question sur le RAID logiciel car cela dépend. Linux MD RAID est différent de Windows Software RAID, qui est différent de quelque chose comme ZFS . Des solutions comme ZFS peut sont plus performants que le matériel car ils exploitent les ressources de la RAM et du CPU du serveur.

7voto

Cliff Points 9

Le contrôleur RAID que vous avez sous les yeux est bon marché et n'est qu'une contrefaçon. Il dépend même de votre carte mère pour fournir certaines fonctions comme la mémoire et peu de cartes mères le supportent, ce qui fait que vous ne pouvez pas charger le pilote.

À propos de HW vs SW-RAID lui-même. Je n'utilise plus de HW-RAID, sauf s'il s'agit d'une boîte avec un logo EMC par exemple. Pour tout le reste, je suis revenu au SW-RAID depuis des lustres pour quelques raisons très simples.

  1. Vous avez besoin de matériel supplémentaire et vous devez l'assortir. Vous devez également faire correspondre le firmware et le maintenir synchronisé. Beaucoup de disques ne fonctionneront pas correctement et vous aurez des pics dans votre latence d'E/S sans raison claire.

  2. Le matériel supplémentaire est coûteux, vous pouvez donc utiliser ces 1000 $ supplémentaires (un contrôleur décent avec deux/trois disques) pour une meilleure petite solution. Investissez-les dans plus de disques et de contrôleurs standard, de la mémoire ECC, un processeur plus rapide. Et un disque de rechange sur place si vous prévoyez de l'utiliser pendant une période plus longue que la période de garantie ou si vous ne voulez pas payer les frais de transport express.

  3. La mise à niveau est un véritable calvaire, car il faut suivre les correctifs du système d'exploitation et du micrologiciel pour le disque et le contrôleur. Cela peut aboutir à une situation où la mise à niveau/mise à jour n'est plus possible.

  4. Formats sur disque. De nombreux fournisseurs utilisent une disposition interne pour stocker les données liées à une révision de votre combinaison de matériel et de micrologiciel. Cela peut aboutir à une situation où le remplacement d'une pièce rend impossible l'accès à vos données.

  5. C'est un SPOF et un goulot d'étranglement. Le fait d'avoir un seul contrôleur derrière un seul pont PCI ne vous donne pas les performances et la redondance dont vous avez vraiment besoin. Cela signifie également qu'il n'existe aucun chemin de migration pour migrer les données vers un autre jeu de disques hors de portée du contrôleur.

La plupart de ces points ont été résolus avec les nouvelles générations de logiciels SW-RAID ou des solutions comme ZFS et BtrFS. Gardez à l'esprit qu'en fin de compte, vous voulez protéger vos données et non pas des déchets rapidement accessibles, mais redondants.

5voto

Brent Points 41

J'ai passé l'année dernière (par intermittence en 2014-2015) à tester plusieurs configurations parallèles CentOS 6.6 RAID 1 (en miroir) en utilisant 2 HBA LSI 9300 vers 2 contrôleurs RAID LSI 9361-8i avec des systèmes construits sur les bases suivantes : Châssis 2U Supermicro CSE-826BAC4-R920LPB, une carte mère ASUS Z9PE-D16, 2 processeurs Intel Xeon E5-2687W v2 Eight-Core 3.4 GHz, Seagate ST6000NM0014 6TB SAS 12Gbs en miroir, 512 GB RAM. Notez qu'il s'agit d'une configuration entièrement conforme à la norme SAS3 (12Gbps).

J'ai parcouru les articles écrits sur le logiciel de réglage et j'utilise le logiciel RAID de Linux depuis plus de 10 ans. Lors de l'exécution de tests d'E/S de base (dd-oflag=direct 5k to 100G files, hdparam -t, etc.), le RAID logiciel semble se comparer favorablement au RAID matériel. Le RAID logiciel est mis en miroir par des HBAs séparés. J'ai été jusqu'à faire des tests avec le noyau standard CentOS 6, les configurations kernel-lt et kernel-ml. J'ai également essayé divers réglages de mdadm, du système de fichiers, du sous-système de disque et du système d'exploitation suggérés par divers articles en ligne écrits sur le RAID logiciel Linux. Malgré les réglages, les tests, les réglages et les tests, lorsque je fonctionne dans un système de traitement des transactions en mode lecture (avec une base de données MySQL ou Oracle), j'ai constaté que l'utilisation d'un contrôleur RAID matériel permettait d'augmenter les performances de 50 fois. J'attribue cela au contrôle du cache optimisé par le RAID matériel.

Pendant de très nombreux mois, je n'étais pas convaincu que le RAID matériel pouvait être tellement meilleur, mais après des recherches exhaustives sur le RAID logiciel Linux, des tests et des réglages, voici mes résultats.

2voto

cyphun Points 53

La plupart des auteurs ici ignorent tout de la " trou d'écriture ". C'est la base qui permet de réclamer des unités de sauvegarde pour les RAID matériels, alors qu'il n'y en a pas pour les RAID logiciels. Par exemple, l'implémentation du RAID logiciel de Linux prend en charge les bitmaps des opérations d'écriture ou recalcule la "parité" complète en cas d'arrêt non propre. ZFS s'efforce toujours d'écrire sur des bandes complètes afin d'éviter cette incohérence ou de retarder le recalcul de la parité. Donc, en résumé, un RAID logiciel suffisamment intelligent de nos jours est souvent assez bon pour être utilisé à la place d'un soi-disant "RAID matériel" dont on ne sait pas ce qu'il contient.

Quant à la partie de la question concernant le cache, elle n'a pas vraiment d'importance, car le cache d'écriture du système d'exploitation lui-même peut être beaucoup plus grand que celui de l'adaptateur "matériel".

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X