Dois-je exécuter ma base de données à partir d'une configuration RAID 5?

13

J'ai entendu dire que les performances d'écriture de RAID 5 peuvent parfois être épouvantables. Bien que je veuille la redondance qu'il offre, je ne veux pas sacrifier les temps d'insertion / mise à jour de la base de données.

Est-ce quelque chose qui devrait m'inquiéter et si oui, quelle serait la recommandation pour obtenir une redondance avec de bonnes performances d'écriture?

Scott Saad
la source
1
Quelle DB? Oracle + RAID 5 était un no-no. Je ne sais pas si c'est toujours le cas.
cagcowboy le
Dans cet exemple particulier, la base de données s'exécute sur MySql et MSSQL.
Scott Saad
Un peu plus de spécificité dans la question en ce qui concerne l'application (mélange lecture / écriture DB, temps de disponibilité et temps de récupération) pourrait obtenir une réponse plus applicable; ces choses pourraient faire la différence dans la meilleure solution.
Jay Stevens,

Réponses:

23

RAID 10 est généralement recommandé car les E / S sont très aléatoires. Voici un exemple. Les calculs sont un peu simplifiés, mais assez représentatifs.

Supposons que vous disposiez d'une matrice de 6 disques et que vos disques peuvent effectuer 100 E / S par seconde (IOPS). Si vous avez 100% de lectures, les six disques seront utilisés et vous aurez environ 600 IOPS pour RAID 10 et RAID 5.

Le pire des cas est une écriture à 100%. Dans ce scénario, les performances de RAID 10 seront réduites de moitié (puisque chaque écriture va sur deux disques), il obtiendra donc 300 IOPS. RAID-5 convertira chaque écriture en deux lectures suivies de deux écritures, donc elle obtiendra 1/4 des performances ou environ 150 IOPS. C'est un gros coup.

Votre modèle de lecture / écriture réel se situera quelque part entre ces deux extrêmes, mais c'est pourquoi RAID 10 est généralement recommandé pour les bases de données.

Cependant, si vous n'avez pas de serveur de base de données occupé, vous pouvez même faire du RAID-6. Je le fais souvent si je sais que la base de données ne sera pas un goulot d'étranglement car elle vous offre beaucoup plus de sécurité que RAID 10 ou RAID 5.

TorgoGuy
la source
22

Bases de données transactionnelles

RAID-5 est relativement lent à écrire car le contrôleur doit charger suffisamment de données pour recalculer la parité lors d'une écriture. Les opérations d'écriture entraîneront au moins quatre opérations sur disque:

  • Lecture dans le bloc de parité

  • Lecture dans l'ancien bloc (en supposant qu'il n'est pas déjà dans le cache) pour XOR la ​​valeur avec le bloc de parité.

  • Ecriture du nouveau bloc de parité (ancien bloc de parité XOR ancien bloc de données XOR nouveau bloc de données)

  • Écriture du nouveau bloc de données.

Si le système n'utilise pas la mise en cache en écriture différée, cela signifie que toutes ces opérations sont sur le chemin critique pour l'achèvement des E / S. C'est souvent le cas avec les écritures de base de données - en fait, Microsoft (par exemple) a un programme de certification pour les équipements SAN à utiliser avec SQL Server qui oblige les fournisseurs à garantir ce comportement. Parfois, les équipements RAID-5 plus anciens n'utilisaient pas cette optimisation et devaient recalculer la parité de toute la bande.

RAID-10 possède un miroir pour chaque disque et n'a pas besoin de lire des données supplémentaires pour calculer la parité. Cela signifie que les écritures nécessitent beaucoup moins d'E / S physiques.

Le RAID-50 se situe quelque part au milieu, avec le volume divisé en plusieurs volumes RAID-5, qui sont à leur tour entrelacés. Sur un RAID-50 constitué de groupes répartis dans un schéma 3 + 1, une écriture génère au plus trois demandes d'E / S disque supplémentaires. Si vous vous sentez si enclin, vous pouvez voir RAID-5 et RAID-10 comme des cas particuliers de RAID-50. RAID-50 est principalement utilisé pour fournir de gros volumes sur de nombreux disques physiques

Il existe également d'autres schémas de parité tels que RAID-6 (un schéma de parité avec deux disques redondants par jeu). la reconstruction est assez importante. RAID-6 atténue ce risque en disposant d'un deuxième disque de parité, nécessitant trois pannes de disque pour provoquer une perte de données. Une astuce similaire aux schémas RAID-50 peut être utilisée pour créer des matrices RAID-60.

Enfin, une seule paire en miroir (connue sous le nom de RAID-1) peut fournir une redondance et des performances suffisantes pour certaines tâches. En particulier, vous constaterez probablement que RAID-1 vous donne un débit suffisant pour un grand nombre de trafic de journaux de base de données. Plus d'informations ci-dessous.

Si vous avez une charge de travail importante en écriture, vous obtiendrez probablement un gain de performances à partir d'un volume RAID-10. Cela peut être une victoire car vous pouvez probablement obtenir votre débit requis à partir d'un plus petit nombre de disques physiques, en supposant que les disques ont suffisamment d'espace). Certains éléments tels que les journaux ou les zones temporaires sur un serveur de base de données doivent se trouver sur des volumes RAID-1 ou RAID-10, car ils obtiennent beaucoup de trafic d'écriture.

Journaux

Les volumes de journaux sont caractérisés par un modèle d'accès aux données principalement séquentiel, et sont essentiellement un tampon en anneau composé de commandes le long de la ligne `` écrire ces données dans ce bloc ''. par la fonction de lecture du journal. Une seule paire en miroir gérera en fait un volume important de trafic de journaux.

Systèmes et serveurs de fichiers lourds en lecture

Sur un système lourd en lecture tel qu'un entrepôt de données, vous souhaiterez peut-être utiliser un ou plusieurs volumes RAID-5. Sur un serveur de fichiers, les accès au disque se feront en grande partie sur la base d'un fichier entier, donc les écritures écriront probablement la plupart des blocs qui composent le bloc de parité de toute façon. Dans ce cas, la pénalité de performance pour RAID-5 sera plus légère.

Dans le passé, les économies de coûts sur disque pouvaient être importantes, mais il est moins probable que ce soit un problème maintenant.

Mise en cache en écriture différée et RAID-5

Sur un SAN ou un contrôleur RAID interne avec un cache sauvegardé par batterie, vous pouvez activer la mise en cache de réécriture. Cela met en cache les écritures et renvoie le contrôle à l'application. L'E / S est signalée par le contrôleur comme terminée. Cependant, il n'écrit pas nécessairement les données sur le disque immédiatement. Cette fonction permet d'optimiser considérablement les opérations de lecture / écriture de parité RAID-5 et peut atténuer la pénalité des performances d'écriture pour les volumes RAID-5x.

Cependant, cela comporte toujours un petit risque de problèmes d'intégrité des données. Le système hôte a été informé que cette écriture était terminée alors que ce n'était pas le cas. Il est possible qu'une défaillance matérielle crée des incohérences de données entre (par exemple) le journal et les volumes de données sur un serveur de base de données. Pour cette raison, la mise en cache en écriture différée n'est pas recommandée pour les systèmes transactionnels, bien qu'elle puisse être un gain de performances pour quelque chose comme un processus ETL.

Sommaire

L' espace disque est si bon marché de nos jours que les systèmes transactionnels devraient probablement utiliser RAID-1 ou RAID-10 pour les volumes de journaux et RAID-10 pour les volumes de données. La taille du disque physique est probablement beaucoup plus grande que la base de données et RAID-10 permettra un débit d'écriture plus important pour le même nombre de disques, ce qui pourrait réduire le nombre de volumes de disque nécessaires pour prendre en charge le système.

Sur quelque chose comme un entrepôt de données, vous pouvez toujours manger de l'espace avec de grandes tables de faits fortement indexées afin que vous puissiez obtenir un petit prix avec des volumes de données RAID-5 ou RAID-50. Cependant, les journaux et tempdb doivent toujours être placés sur un volume RAID-10 car ils nécessiteront probablement beaucoup de travail pendant le traitement ETL. Cependant, les économies de coûts sur le disque sont probablement assez faibles.

ConcernedOfTunbridgeWells
la source
Cache d'écriture différée: si vous achetez un contrôleur RAID avec un cache d'écriture différée "soutenu par batterie", notez que la batterie ne semble pas incluse. Assurez-vous que votre fournisseur en inclut un.
David Hicks,
Certains le font, d'autres non. J'ai pas mal d'adaptec 2200 qui n'étaient pas livrés avec des piles. Certains viennent avec eux en standard.
ConcernedOfTunbridgeWells
1
Vous avez une erreur dans votre réponse. Vous n'avez pas besoin de lire chaque lecteur pour recalculer la parité. Une écriture devient 2 lectures et 2 écritures. Les 12 autres disques de votre exemple de matrice à 14 disques ne seront pas touchés par RAID5.
TorgoGuy
En fait, je crois que l'homme a raison. Vous pouvez lire et XOR la ​​parité avec l'ancienne valeur du bloc et à nouveau avec la nouvelle valeur du bloc. Je n'ai jamais vu cela décrit auparavant, mais cela fonctionnerait.
ConcernedOfTunbridgeWells
3

Eh bien, cela dépend fortement de votre tolérance aux pannes / risques. RAID5 a beaucoup de problèmes . Mon serveur de base de données possède actuellement deux disques en miroir, et si je devais faire évoluer cela, je choisirais quelque chose avec plus de parité, probablement RAID6 ou RAID10.

De plus, si votre application est critique pour la disponibilité, je recommanderais probablement d'avoir deux serveurs de base de données avec réplication à la place, maître-maître ou disque de secours ou autre. Le RAID n'aide que contre les pannes de disque, mais il y a beaucoup plus qui pourrait mal tourner sur un serveur :)

mikl
la source
3

Cela dépend de la quantité d'écriture que vous faites.

S'il s'agit d'une «application Web» assez légère, il est peu probable que les performances soient atteintes sur RAID5.

Si vous construisez un entrepôt de données de plusieurs Go avec de gros ETL, le tampon d'écriture sur le RAID 5 débordera rapidement et vous vous retrouverez directement dans les "mauvaises performances d'écriture" de RAID 5.

Chaque écriture RAID5 provoquera au moins 3 écritures (plus un calcul CRC). Lorsqu'il est mis en mémoire tampon, il est fin et rapide (petites périodes d'activité brèves - mises à jour et insertions d'un seul enregistrement). Si ces écritures sont maintenues (insertions / mises à jour en masse volumineuses), cela sera remarqué.

C'est un équilibre entre performance et espace. RAID 10 (miroir des disques entrelacés) offre à la fois des performances et de la résilience, mais une réduction de 50% de la capacité.

RAID5 offre une capacité supérieure, de bonnes performances de lecture mais de mauvaises (grandes) performances d'écriture.

Gars
la source
2

RAID 1, c'est ma réponse finale

Les raisons:

la paire en miroir offre une redondance adéquate pour les disques défaillants et le RAID continue de fonctionner sur le dernier disque.

la paire en miroir donne de meilleures performances d'E / S pour les lectures si vous placez vos données et index avec précaution ... [indice: utilisez des volumes séparés pour les données et leurs index]. Vous pouvez obtenir encore plus de performances en duplexant vos contrôleurs.

ninegrid
la source
Pourquoi pas RAID 1 + 0?
Brian Knoblauch,
2

Pour bon nombre de guides "pourquoi pas", cela a toujours été très populaire auprès des DBA Oracle avec lesquels j'ai travaillé ...

La bataille contre tout Raid Five - http://www.miracleas.com/BAARF/

Mark Regensberg
la source
2

Réponse courte: non.

Réponse longue: sauf si vous avez une très petite base de données ou des exigences très minimales, non. La récupération des données dépend fortement des opérations d'E / S de disque par seconde, et la surcharge de l'entrelacement consommera votre accès au disque au fil du temps, en particulier avec de longues exécutions de requêtes. La plupart des bases de données sont exécutées sur une configuration de style RAID 10, ou avec des volumes spécifiques contenant des partitions des données. Oui, RAID 10 vous coûtera en écriture, mais vos performances de lecture (avec la bonne configuration) augmenteront considérablement .

Avery Payne
la source
1

quelle serait la recommandation pour obtenir une redondance avec de bonnes performances d'écriture?

Un grand cache en écriture différée. Augmentez la RAM de votre contrôleur RAID matériel ou la RAM disponible pour votre solution RAID logicielle (c'est-à-dire que pour le MDADM de Linux, augmentez la RAM du système, les ballons MDADM pour utiliser la RAM système autrement inutilisée comme cache d'écriture). Ce conseil est valable pour des valeurs données de "grandes" - si vous écrivez souvent (5% du temps?) À une vitesse suffisamment rapide pour remplir le cache d'écriture, quelle que soit leur taille, cela ne fera que peu de différence.

David Hicks
la source
1

Il s'agit vraiment de séparer vos fichiers de données, fichiers journaux, de votre fichier OS. Les journaux écrivent séquentiellement Les données entraînent de nombreuses lectures aléatoires et certaines écritures aléatoires

En créant des configurations RAID qui prennent en charge ces caractéristiques, vous améliorez considérablement les performances

Raid 1 - la mise en miroir est idéale pour les fichiers journaux Raid 10 est bon pour vos fichiers de données. Cela vaut également la peine de regarder TempbDB et les sauvegardes sur des disques séparés. L'ajout de groupes de fichiers est une autre façon d'augmenter les performances. En ce qui concerne les SAN, ce n'est pas si clair. Cela dépend si vous créez des configurations de raid spécifiques pour chaque LUN ou si vous comptez sur le nombre de broches.

CPU_BUSY
la source
0

Dans l'esprit du récent article de blog StackOverflow disant que nous ne devrions pas présenter à nouveau les réponses déjà disponibles sur Internet, je vous ceci

RAID-5 n'est pas unique dans la redondance qu'il offre, il le fait tout en consommant moins de disques supplémentaires que certaines alternatives. Vous pouvez choisir autre chose avec une redondance égale ou meilleure et de meilleures performances d'écriture

L'Archétype Paul
la source
0

L'exécution d'une base de données hors RAID5 est généralement une erreur. Je ne l'ai vu faire que dans deux cas - des bases de données bien conçues qui étaient intensives en lecture avec peu d'écritures, et des bases de données où le "gaspillage d'espace" dû à RAID5 n'était pas politiquement viable.

RAID5 détruira les performances transactionnelles.

De plus, si vous envisagez RAID5, voyez si vous pouvez faire fonctionner RAID6. La fiabilité théorique est bien meilleure, bien que la fiabilité du monde réel soit souvent pire en raison d'implémentations immatures.

carlito
la source