Introduction
La plupart de ceux qui souhaitent créer un RAID s’intéressent d’abord aux performances. L’intégrité des données est rarement leur première préoccupation, et c’est pourquoi la majorité utilise une grappe composé de deux disques en RAID 0. Mais que se passe-t-il lorsqu’on augmente le nombre de disques utilisés dans ce type de configuration ? Est-ce efficace ? A quel moment arrive-t-on aux limites du RAID ? C’est ce que nous avons voulu déterminer dans cet article.
Notre but est simple, mais relativement ambitieux : passer au crible les modes de RAID les plus courants, en partant du plus petit nombre de disques possible et en allant jusqu’à 8 disques par grappe. Nous avons estimé que cela représentait le nombre maximum pour des machines d’utilisateurs avancés ou de petits serveurs, notamment parce qu’il est difficile de faire entrer plus de disques durs dans un boîtier normal sans avoir recours à l’eSATA. De plus, passer à un contrôleur RAID professionnel disposant de plus de huit ports nécessite d’utiliser des câbles à plusieurs canaux et des appareils très chers (type mini-SAS), au lieu d’un câble par disque.
Nous nous intéresserons aux modes RAID 0, RAID 1, et RAID 0+1, la plupart des cartes mères actuelles disposant de contrôleurs capables de créer des grappes de ce type.
Pourquoi ce test ?
Vous vous demandez peut-être pourquoi nous avons entrepris ces tests. D’une part, de plus en plus d’applications ont des besoins énormes en débit et en espace de stockage : pensez par exemple aux applications audio et vidéo utilisant des flux de données constants, comme l’enregistrement audio ou de vidéos HD. Il suffit de réduire ou d’abandonner la compression pour voir s’envoler le volume de données à enregistrer, et la même chose se produit lorsque l’on enregistre plusieurs canaux en même temps.
D’autre part, les serveurs de fichiers situés dans des réseaux de grande taille doivent pouvoir mettre à jour rapidement de nombreux ordinateurs simultanément. Pensez également aux serveurs d’enregistrement de données, qui doivent stocker les images provenant de dizaines de caméras de surveillance, ou des relevés de communication, ou encore les données produites par les capteurs d’un accélérateur de particules ou d’autres équipements scientifiques.
Et même dans ce type de cas, le débit ne fait pas tout : certaines applications nécessitent des centaines d’opérations d’entrée/sortie par seconde. Les bases de données de grande taille qui ne peuvent pas être stockées temporairement dans la mémoire du système ont besoin, elles aussi, de hautes performances d’entrée/sortie. Pensez par exemple aux virements bancaires, aux paiements par carte de crédit, aux systèmes de contrôle des inventaires, etc.
Nos tests vous permettront de déterminer combien de disques utiliser selon les besoins de votre application. Vous pourrez y trouver les temps d’accès, le débit de l’interface, et les taux de transfert minimums, moyens et maximums en lecture et en écriture. Nous avons également inclus des tests de performances en entrée/sortie dans des scénarios courants (station de travail notamment).
Les différents modes de RAID
Il est très simple de créer un RAID rapide, disposant à la fois de hautes performances en entrée/sortie et d’un débit excellent : il vous suffit de disposer d’autant de disques durs que nécessaire, ou d’autant que votre contrôleur peut en utiliser. Une carte mère classique dispose de 4 à 6 ports SATA et de fonctions RAID de base, tandis que les contrôleurs RAID professionnels offrent 8, 12, 16 ou même 24 ports. Faites tout de même attention : toutes les données d’un RAID 0 seront perdues si l’un de ses disques tombe en panne. Mieux vaut donc la réserver à des usages temporaires plutôt qu’à du stockage à long terme.
Pour obtenir des performances élevées tout en préservant l’intégrité des données, on utilise généralement soit le RAID 0+1 (mirroring de volumes en stripping, au moins 4 disques au total), soit le RAID 5 (au moins 3 disques). Ce dernier mode distribue les données sur tous les disques sauf un ; le contrôleur calcule ensuite les données de parité de tout le volume et les stocke sur le disque non utilisé. Pour éviter que ce disque ne ralentisse tout le système, les informations de parité sont également réparties circulairement sur l’ensemble des disques. (Si ce n’est pas le cas, il s’agit alors d’un RAID 3). Dans cet article, nous nous intéresserons cependant aux RAID 0, 1, et 0+1, les plus courants et performants hors serveurs.
RAID 0 : performances
A, B et C sont différents blocs d’un même fichier. Dans un volume RAID 0 (striping), le contrôleur répartira de manière circulaire des blocs d’une certaine taille (généralement de 8 à 32 Ko, le débit augmentant avec les tailles les plus faibles) sur tous les disques de la grappe. Tous les disques sont agrégés en un même disque logique, perçu par le système d’exploitation et les logiciels. On améliore ainsi les performances en lecture et en écriture (chaque disque disposant de son contrôleur), mais le RAID 0 reste entièrement vulnérable face à aux pannes de disques durs : si un disque meurt, l’ensemble des données sont inutilisables. Le RAID 0 utilise deux disques durs ou plus.
La capacité totale du disque logique est obtenue en multipliant le nombre de disques physiques à la capacité du plus petit de ces disques. Ainsi, trois disques 500 Go en RAID 0 formeront un disque de 1,5 To. Il est important d’utiliser des disques de même taille dans la mesure ou toute capacité supplémentaire par rapport au disque le plus petit de la grappe restera inutilisée.
RAID 1 : sécurité
Un RAID 1 nécessite deux disques durs. Le contrôleur écrira toutes les informations sur les deux disques en même temps, ce qui permet d’obtenir une redondance complète des données. Si l’un des deux disques tombe en panne, l’autre reste utilisable. Il suffit de remplacer le disque cassé pour que le contrôleur reconstruise le RAID 1. Certains contrôleurs sont même capables d’accélérer les temps de lecture en RAID 1, en accédant alternativement aux deux disques. En revanche, le débit en écriture n’est pas amélioré (il est même plutôt légèrement dégradé si un des disques s’avère un peu plus lent que l’autre), et la capacité maximale est limitée à celle du plus petit disque physique composant la grappe.
Le RAID 1 représente la méthode la plus simple et la plus efficace pour obtenir une solution de stockage assurant l’intégrité des données : il vous suffit de deux disques durs et d’un contrôleur prenant en charge les modes RAID les plus simples (ce qui est le cas d’à peu près toutes les cartes mères à partir de 80 euros). Lorsque vous installerez Windows, vous devrez installer en même temps un pilote RAID afin qu’il puisse accéder à votre grappe. Une fois cette étape franchie, votre volume RAID se comportera exactement comme un disque dur normal. Si vous voulez que votre configuration soit impeccable, nous vous recommandons d’investir 15 à 30 euros dans des tiroirs extractibles. Cela vous permettra de remplacer rapidement un disque en panne. Enfin, faites quand même attention de remplacer le bon disque !
Certains contrôleurs permettent un miroring sur plus d’un disque, jusqu’à trois ou même quatre. Mais si vous êtes paranoïaque à ce point, commencez par vous assurer que votre alimentation est de bonne qualité, utilisez un onduleur et placez votre machine dans un environnement de travail propice. En effet, garantir une température de fonctionnement optimale des disques durs aide à prolonger leur durée de vie. Et si ça n’est toujours pas suffisant pour vous, vous pouvez toujours essayer le RAID 5+1 (miroring des données d’une grappe RAID 5). Malgré tout, cela nous paraît un peu trop sophistiqué pour la majorité des utilisateurs, et nous ne nous intéresserons donc pas à des configurations aussi avancées.
RAID 0+1 : performance et sécurité
Un RAID 0+1 crée un volume en RAID 0 (striping) à partir d’au moins deux disques, puis réalise un mirroring de tout le volume sur le même nombre de disques. Le résultat est un mirroring de volume en striping. Un RAID 1+0 représente exactement l’inverse : il crée une grappe RAID 1, puis réparti plusieurs grappes RAID 1 au sein d’un volume en striping. Du point de vue des performances, il n’y a théoriquement pas de différence entre un RAID 0+1 et un 1+0. La plupart des contrôleurs prennent en charge le 0+1.
Cette solution apporte les performances d’un RAID 0, tout en offrant la sécurité d’un RAID 1. Il vous faudra par contre au moins quatre disques pour créer un RAID 0+1, et dans ce cas, la capacité sera limité au double de la capacité du plus petit disque. Nous avons testé cette configuration avec quatre, six et huit disques.
Une question de performances
En théorie, un RAID 0 permet d’additionner les taux de transfert de tous les disques utilisés. Dans la réalité, l’évolution ne sera pas parfaitement linéaire. Pour autant chaque nouveau disque améliorera nettement les performances, comme vous pourrez le constater dans les résultats des pages suivantes de cet article.
A l’évidence, utiliser un plus grand nombre de disques durs améliorera les taux de transfert et les performances en entrée/sortie, en combinant les performances de tous les disques. Malgré tout, il existe des limitations pratiques, la première étant le contrôleur RAID : tous ne sont pas capables de déplacer constamment des centaines de mégaoctets de données. De plus, il faut faire attention à l’interface du contrôleur : il existe des modèles PCI-X, fonctionnant jusqu’à 533 Mo/s, et des PCI Express x4 (1 Go/s bidirectionnel) ou x1 (250 Mo/s bidirectionnel). Assurez-vous que la bande passante théorique offerte par votre interface est supérieure d’au moins 50% aux besoins de votre grappe RAID, car les taux de transfert pratiques peuvent être nettement plus faibles.
Enfin, le nombre de disques utilisé a généralement une influence négative sur le temps d’accès : récupérer même de petites informations nécessitent souvent d’accéder à différents disques durs. Si les têtes de lecture de plusieurs disques doivent être repositionnées, le temps d’accès moyen finit par correspondre au temps d’accès maximum de tous les disques. A cela s’ajoute le protocole RAID en lui-même, qui fait généralement passer les temps d’accès de 12-14 ms à une bonne vingtaine de millisecondes.
Avec l’augmentation du nombre de requêtes d’entrée/sortie, la grappe deviendra rapidement plus performante que chacun des disques grâce à des fonctionnalités comme le Native Command Queuing (NCQ) ou grâce au cache du contrôleur. Pour les applications de bases de données, il est conseillé de choisir un contrôleur disposant d’une quantité assez importante de mémoire cache (et d’une batterie de secours), pour améliorer le débit et réduire le temps d’accès aux blocs les plus demandés.
Configuration du test : la machine
Nous avons choisi un système offrant suffisamment de puissance pour créer un RAID très performant. Même si cette entreprise n’existe plus, nous avons utilisé une carte mère IWill bi-Opteron, car elle dispose à la fois de connecteurs PCI-X et PCI Express. La DK88 est basée sur le chipset nForce 4 Professional de NVidia, et elle offre tout ce dont un serveur ou une station de travail peuvent avoir besoin : deux ports Gigabit Ethernet Broadcom avec moteur de déchargement TCP/IP, une puce graphique ATI, l’USB 2.0, et des connecteurs UltraATA/133 et SATA/300. Cette carte mère dispose de huit connecteurs DDR400 DIMM pour chaque processeur, soit une capacité maximale de 64 Go de mémoire ECC. Nous nous sommes contentés de 2 Go de RAM, nos benchmarks n’étant pas très gourmands en ressources. Le processeur que nous avons utilisé est un Opteron 875 Dual Core cadencé à 2,2 GHz, donc assez performant. Cela dit un processeur à un seul cœur et avec une fréquence moitié moindre aurait sans doute suffit.
Disques durs testés : huit Samsung HD321KJ
Nous voulions utiliser des disques durs relativement rapides pour ce projet, sans faire exploser les coûts afin de rester dans l’ordre du réalisable pour la majorité d’entre vous. Nous avons donc choisi des disques durs grands publics relativement rapides. Notre choix s’est arrêté sur les SpinPoint T166 de Samsung en raison de leur excellent rapport taux de transfert/prix/silence. Plutôt que la version 500 Go (HD501LJ), nous avons spécifiquement demandé des modèles 320 Go (HD321KJ). La raison est simple : nous voulions éviter que nos benchmarks ne durent pendant des semaines ! En particulier, le logiciel h2benchw, qui a été développé par Harald Bögeholz du magazine allemand c’t, a besoin de plus de temps lorsque les disques testés sont plus gros et plus lents.
Les SpinPoint T166 offrent une vitesse de 7200 tr/min, 8 Mo de cache, et une interface SATA 300 Mo/s avec prise en charge du NCQ.
Contrôleur RAID : Areca ARC-1220
Nous avons choisi le contrôleur qui nous paraissait le mieux répondre à ce que nous voulions faire au cours de ce test. L’ARC-1220 d’Areca possède 8 ports SATA 300 Mo/s avec prise en charge du NCQ, une mémoire cache de 256 Mo de DDR SDRAM, et dispose d’un processeur Intel IOP333 pour effectuer les calculs de parité et XOR. Il utilise une interface PCI Express x4 et la carte est en demi-hauteur, ce qui lui permet de s’adapter aux serveurs montés en rack.
Notre choix s’est porté sur cette carte en raison de sa simplicité d’utilisation et de sa capacité à initialiser rapidement les grappes RAID. Cela dit, nous sommes convaincus que la plupart des autres contrôleurs RAID SATA 8 ports s’en seraient tout aussi bien sortis.
Récapitulatif de la configuration
Processeur | AMD Opteron 875 (Egypt 90 nm, 2.2 GHz, 2×2 Mo L2 Cache) |
Carte mère | Iwill DK88 Dual Opteron Board, chipset Nvidia nForce Professional 2200, BIOS 1.4 |
RAM | 2×1024 MB DDR-400 (CL 3.0-3-3-8), Micron 18VDDF12872G-40BD3 |
Carte graphique | ATI Rage XL |
Disque dur système | 120 Go 7200 RPM, 8 Mo Cache, SATA 300, Samsung HD120IJ |
Disques durs testés | 8×320 Go 7200 RPM, 8 Mo Cache, SATA 300, Samsung HD321KJ |
Contrôleur RAID | Areca ARC-1220 8-Port PCIe RAID6-Controller, firmware V1.43 2007-4-17 |
DVD-ROM | Teac DV-W50D |
Pilote ATI | Pilote Windows |
Nvidia nForce Professional | Version 6.70 |
Système d’exploitation | Windows Server 2003 Enterprise Edition, Build 3790 SP2 |
Tests de performances | c’t h2benchw 3.6 |
Test d’entrée/sortie | IOMeter 2003.05.10, Fileserver, Webserver, Database, Workstation |
Tous les tests ont été effectués avec les paramètres par défaut du contrôleur. Ils ont été réalisés avec deux à huit Samsung HD321KJ, utilisés à seulement 80% de leur capacité maximale. Nous n’avons pas employé l’intégralité des 320 Go de chaque disque pour que la durée des tests reste relativement courte. De plus, cela a permis de nous assurer que les disques offraient des performances maximales, puisqu’ils n’ont jamais eu à utiliser les secteurs situés au centre des plateaux (qui offrent les taux de transfert les plus faibles).
Chaque session de test d’une configuration RAID a demandé quatre à six heures pour effectuer les tests de débit, de temps d’accès, et d’entrée/sortie. Toutes les grappes (à l’exception des RAID 0) ont également dû être initialisées, ce qui a demandé 20 minutes de plus à chaque fois.
Ces tests nous ont permis de faire une découverte intéressante concernant l’alimentation des disques durs : nous avons d’abord connecté tous les disques sur le même rail de l’alimentation. Cela semblait fonctionner : normalement, le lancement d’un disque nécessite une quantité d’énergie qui peut poser problème, mais tout semblait bien se passer. Pourtant, de temps à autre un disque disparaissait de la grappe RAID pendant les tests. La première fois, nous avons crû qu’il s’agissait d’un problème avec ce disque, et la seconde fois nous avons pensé que le contrôleur était problématique. Finalement, nous avons réparti les disques sur trois rails différents, ce qui résolu le problème.
Temps d’accès
Un HD321KJ seul a un temps d’accès moyen d’environ 14 ms, mais nous avons obtenu de meilleurs résultats en n’utilisant que 80% des 320 Go disponibles. Malgré tout, le protocole RAID et le temps de positionnement des têtes font une différence nette : les temps d’accès augmentent avec le nombre de disques. Avec deux disques, cela reste très bon, notamment en RAID 1, comme prévu. Ce temps d’accès baisse cependant significativement dès le passage à 3 disques, pour devenir médiocre avec 4 disques (20 ms). Il faut en effet attendre, en RAID 0, que tous les disques aient accès à la donnée, ce qui augmente les chances de se retrouver dans la pire situation. Dans ce cas, la donnée à lire se trouve juste avant la tête de lecture qui doit donc attendre une rotation complète du disque, soit 8,3 ms, avant de pouvoir la lire, contre 4,17 ms en moyenne avec un disque. Bien sûr, ce temps ne tient pas compte du temps nécessaire à la transmission de la requête jusqu’à la tête de lecture, à son déplacement sur le plateau, puis à la reconstitution des données finales à partir de chaque bloc (c’est ici que le contrôleur RAID entre en jeu). D’où les temps obtenus.
De façon assez logique, les performances en RAID 0+1 se calent sur celles du RAID 0, puisqu’il n’y a pas de différence de gestion concernant la lecture.
Bande passante de l’interface
Du côté du débit maximum, obtenu en ayant exclusivement recours à la mémoire cache de chaque disque, on remarque peu de différences. Dès l’utilisation de deux disques, on double le débit maximum (environ 230 Mo/s, grâce à l’interface SATA 300 Mo/s. En revanche, le recours à plus de disque ne permet que de se rapprocher d’une limite proche, fixée à 500 Mo/s. D’où vient cette limite ? Probablement de la vitesse de traitement de notre contrôleur RAID, car il est interfacé en PCI Express 4X (1 Go/s dans chaque sens donc), et doté de 256 Mo de DDR. Cela veut dire que nous ne pourrons en tout cas jamais dépasser les 500 Mo/s avec ce contrôleur, une limite qui pourrait devenir réelle avec 8 disques en RAID 0. Ici aussi, le type de RAID n’a pas réellement d’influence sur les performances.
Débit en lecture
Ces résultats permettent de voir à quel point les grappes RAID profitent de l’ajout de disques supplémentaires au niveau du débit. Dès deux disques, le débit moyen est parfaitement multiplié par 2, et cette augmentation linéaire reste toute aussi remarquable lors du passage à 3, 4 puis 5 disques. Au-delà cependant, on plafonne à environ 400 Mo/s une limite plus basse que lors du débit des caches, ce qui désigne de toute évidence le contrôleur RAID comme le responsable. Reste que cela nous permet de prendre plusieurs décennies d’avance concernant les performances en lecture des disques durs, avec l’équivalent des informations contenues sur un DVD transférées en une dizaine de secondes…
Débit en écriture
Avec 2 et 3 disques, le débit en écriture relevé est exactement le même que celui en lecture. A partir de 4 disques, on note cependant une légère perte, avec 273 Mo/s au lieu de 302 Mo/s. L’augmentation du nombre de disques ne ferra qu’aggraver la chose, avec un débit encore légèrement plus faible, ce qui ne laisse encore une fois aucun doute sur le coupable, le contrôleur RAID qui est ici dépassé à partir de 4 disques. Il faut dire que la tâche se révèle bien plus complexe concernant l’écriture que la lecture, chaque donnée devant être divisée en autant de parties que de disques au niveau du contrôleur RAID, avant de pouvoir être transmis à chaque disque.
En toute logique, les performances en RAID 0+1 sont similaires à celles obtenues en RAID 0 avec un nombre de disques configurés dans le même mode équivalent. Un montage à 4 disques obtient donc les mêmes performances qu’un RAID 0 de 2 disques, et un montage à 6 disques est lui aussi similaire au RAID 0 de 3 disques. En revanche, la limite dans cette association de RAID est encore un peu plus basse qu’en RAID 0, avec 230 Mo/s, rendant l’assemblage d’une grappe de 8 disques peu intéressant du point de vue des performances.
Serveurs / station de travail (RAID 0)
IOMeter est un puissant outil de création et de mesure d’entrées/sorties. Correctement paramétré, il est capable de simuler a peu près n’importe quel charge pour le disque dur. Les 2 tests serveurs suivants se font avec des accès entièrement aléatoires, et essentiellement en lecture, l’essentiel de la différence se faisant sur la taille des blocs transférés.
En mode “station de travail”, 20 % des accès deviennent séquentiels (d’où une augmentation des performances globales, bien qu’on reste à 80 % d’accès aléatoires), avec 80 % de lectures et 20 % d’écritures de blocs de 8 Ko.
Bien que nous soyons limités en débit ou que le temps d’accès augmente significativement avec le nombre de disques, on constate cependant que notre contrôleur RAID Areca ne pose aucun problème pour gérer un grand nombre d’entrées/sorties. En fait, ici aussi l’augmentation des performances s’avère linéaire avec l’augmentation de disques (le passage de 2 disques à 3 reste ainsi très intéressant), même en environnement “station de travail”. Une efficacité bien meilleure que le SLI/Crossfire donc…
Serveurs / station de travail (RAID 0+1)
Intéressant : alors que concernant les débits en lecture/écriture il faut très logiquement doubler le nombre de disques en RAID 0+1 pour obtenir les mêmes performances qu’en RAID 0, ce n’est plus le cas en pratique avec des performances similaire en RAID 0 ou en RAID 1 avec 2 disques sous nos 3 tests ! Il en va de même avec 8 disques en configuration “serveur web”, et il faut rentrer en configuration “serveur de fichiers” pour mesurer une baisse de 15 % de performances avec le RAID 0+1 par rapport au RAID 0. Seule la configuration “station de travail” affiche une baisse significative, de l’ordre de 20 % avec 6 disques, mais qui grimpe de façon surprenante à 45 % avec 8 disques, du fait d’un contrôleur alors visiblement dépassé, puisque moins performant avec 8 disques qu’avec 6. Seule réelle spécificité du test “station de travail” : l’introduction de 20 % d’accès séquentiels dans les requêtes.
Toujours est-il que ce test montre bien que le RAID 0+1 fait mieux que de n’assurer qu’une redondance des données inutile du point de vue des performances : il talonne le RAID 0 à nombre de disques équivalents !
Conclusion
Ces tests nous ont permis de voir que lorsque l’on veut créer un environnement idéal pour une grappe RAID très performante, il ne suffit pas d’acheter les composants dotés des spécifications nécessaires et de les monter. Notre plateforme de test, montée à partir de composants de serveurs et équipée du contrôleur Areca ARC-120 SATA RAID, a l’air parfait sur le papier. Mais dans la réalité, elle montre ses limites à 500 Mo/s de bande passante pour l’interface, à 400 Mo/s en lecture, à 275 Mo/s en écriture (RAID 0) et même à 230 Mo/s (en RAID 0+1). Pour ce contrôleur RAID (plutôt optimisé pour le RAID 5 et 6), on atteint des performances maximales en RAID 0 avec cinq disques durs. Mais nous sommes persuadés qu’un autre contrôleur optimisée pour le RAID 0 pourrait aller encore plus loin.
Ce fait ne nous a toutefois pas empêché d’obtenir des performances exceptionnelles dans nos tests d’entrée/sortie simulant une utilisation serveur/station de travail, chaque nouveau disque parvenant à augmenter significativement les performances. Il est clair que l’ARC-1220 d’Areca convient parfaitement aux applications de base de données et aux environnements nécessitant de hautes performances en entrée/sortie. Et il est d’ailleurs particulièrement intéressant de noter que le mode RAID 0+1 n’a pas grand chose à envier sur ce contrôleur au mode RAID 0 seul, à nombre de disques utilisés équivalent !
Cela étant dit, si les taux de transfert progressent de manière quasi linéaire avec l’augmentation du nombre de disques, les temps d’accès moyens sont clairement handicapés par un nombre de disques élevé. Selon la position des têtes de lecture de chaque disque, le temps d’accès d’une grappe RAID peut s’approcher du temps d’accès le plus élevé de tous les disques, plus la latence occasionnée par le protocole. De ce fait, les grappes RAID utilisant 4 disques et plus n’ont pas grand intérêt pour un PC personnel, même pour des utilisateurs avancés. L’utilisation de disques à mémoire flash (SSD) est alors un bien meilleur choix, le seul à permettre un temps d’accès quasi-nul, c’est à dire un système réellement réactif (temps d’ouverture des programmes, de chargement du système d’exploitation et des jeux, etc.), domaine dans lequel le RAID ne fait que dégrader les performances. En attendant leur démocratisation, vous pouvez toujours vous tourner vers les Raptor 10000 rpm de Western Digital pour réduire vos temps d’accès, mais le prix reste élevé.