Quelle est la configuration RAID recommandée pour une base de données Oracle?


16

Le RAID (Redundant Arrays of Inexpensive Disks) est livré avec différentes configurations (RAID-0, RAID-1 ...). Quelle est la configuration RAID recommandée que je dois installer et utiliser lors de l'installation d'une base de données Oracle. La base de données sera principalement utilisée comme entrepôt de données.


RAID0 et RAID1 sont des choses totalement différentes. Vous utilisez RAID0 uniquement pour les performances et RAID1 uniquement pour la tolérance aux pannes en cas de panne de disque.
Jonas

4
RAID0 ne doit jamais, jamais être utilisé sur un serveur de base de données. À moins bien sûr que vous aimiez restaurer à partir d'une bande.
mrdenny

Réponses:


13

Ça dépend. Lorsque vous regardez un entrepôt de données, si vous n'avez pas de conception spécifique en tête, la gestion automatique du stockage peut être un excellent itinéraire.

Tenez compte de la discussion à AskTom , Forums OTN , Forums OTN 2 et OTN Forums 3 .

Il n'y a pas une seule bonne façon de gérer les choses, et les réponses changent en fonction d'une multitude de facteurs matériels et réseau. Pour découvrir par vous-même, préchargez un exemple d'entrepôt de données (seulement un ou deux concerts, assez pour jouer avec) sur une machine basée sur ASM, sur un SAN avec le Raid virtualisé par Linux et sur une machine de raid basée sur le matériel.

En chronométrant les résultats des requêtes sur les trois environnements, vous pourrez découvrir la méthodologie qui vous convient le mieux en termes de performances. J'ai déployé des bases de données à l'aide d'ASN et de raids virtuels basés sur Linux, et un raid virtuel s'est un peu mieux comporté (il y a quelques années). Cependant, je soupçonne que c'était en partie la façon dont les disques ont été configurés.

Il n'y a pas de bonne réponse singulière. Si vous pouvez nous fournir plus de détails sur les exigences de taille et de performances, il peut être possible d'explorer divers cas de test.

--Éditer--

Chaque " groupe de disques " peut être composé d'un ou plusieurs disques, répertoires ou fichiers sur le sous-système approprié. Oracle recommande "Pour des performances et une fiabilité optimales, choisissez un périphérique RAID ou un volume logique sur plusieurs périphériques physiques et implémentez la méthodologie stripe-and-mirror-everything (SAME)." lors du placement de fichiers sur un système de fichiers. Cela se lit comme si Oracle recommandait RAID 1 + 0.

Toutefois, les groupes de disques gérés par ASM "Un groupe de disques de redondance normal requiert au moins deux groupes de pannes (ou deux unités de disque) si vous utilisez la mise en miroir bidirectionnelle. L'espace disque effectif dans un groupe de disques de redondance normal est la moitié de la somme de l'espace disque dans tous ses périphériques "fournit apparemment automatiquement la mise en miroir.

Ces périphériques eux-mêmes peuvent être constitués de périphériques RAID, etc. Dans les tests pratiques lorsque je mettais en place des entrepôts de données RAIDed, un simple RAID 5 virtuel sur le système de fichiers a fourni des performances acceptables, et un ASM supplémentaire n'a ajouté aucun avantage en termes de performances. Dans ce type de tâche d'optimisation, identifiez d'abord vos ressources, puis testez toutes les configurations possibles, car les résultats peuvent parfois être extrêmement contre-intuitifs.


1
Le raid virtuel semble assez drôle: /
jcolebrand

10

Si vous avez deux disques physiques:

RAID0: rapide mais sans redondance. Toute erreur de lecteur tue l'ensemble de la baie. Certaines personnes mettent du stockage temporaire sur RAID0 (c.-à-d. Tempdb sous MSSQL) mais je considérerais toujours cela dangereux car pendant que vous ne perdrez aucune donnée significative si le tableau tombe, vous aurez une panne de serveur jusqu'à ce qu'il soit réparé.

RAID1: optez pour cela si vous avez deux disques. Il n'y a aucun avantage en termes de performances d'écriture bien que vous puissiez voir une augmentation des performances de lecture avec un bon contrôleur. La caractéristique clé de RAID1 est de survivre à l'un des disques en train de mourir.

Si vous avez trois disques physiques:

Vos options sont RAID5, le RAID10 non standard à 3 disques (ou RAID1E comme les contrôleurs IBM s'y réfèrent) si pris en charge. Vous pouvez bien sûr utiliser RAID1 et conserver le disque supplémentaire comme pièce de rechange en cas de défaillance de l'un des autres, mais vous devez de toute façon conserver des pièces de rechange dans un environnement critique pour la mission, cela va donc de soi.

RAID5 offre plus d'espace que RAID10 (deux disques valent au lieu d'un et demi) mais a un problème potentiel de performances d'écriture car pour chaque bloc écrit, le contrôleur doit lire le bloc de parité, le mettre à jour et le réécrire. Ce problème de performances d'écriture peut être doublé pour les écritures de base de données car il y a au moins deux écritures pour chaque mise à jour: une dans le journal des transactions et une dans les zones de données réelles. Comme l'espace est bon marché de nos jours, je recommanderais un RAID10 à 3 disques s'il est pris en charge pour de meilleures performances d'écriture. Le RAID logiciel de Linux offre cela, comme le font de nombreux contrôleurs IBM (ils l'appellent RAID1E). Vous pouvez également le trouver sous d'autres noms car il n'est pas considéré comme un arrangement standard et n'a donc pas de nom standard.

Les deux R5 et R10 sur trois offrent la même redondance (n'importe quel lecteur peut tomber en panne à la fois et la matrice survivra) et des mesures de performances de lecture similaires (similaires à une matrice RAID0 à deux lecteurs).

Si vous avez quatre disques physiques:

Si vous créez une seule baie, il y a deux options (en ignorant les variantes "avec disque de rechange"): RAID6 et RAID10 "traditionnel" (un RAID0 de RAID1).

Les deux donnent le même espace (deux lecteurs de vos quatre). RAID6 offre une meilleure redondance car deux disques peuvent tomber en panne à un moment où, comme RAID10 ne peut survivre que quatre des six situations possibles avec deux disques. Les deux donnent des performances de lecture simialr mais RAID6 a un problème de performances d'écriture similaire à RAID5 (le même sur un bon contrôleur, bien qu'il puisse être plus lent que RAID5 sur un mauvais contrôleur ou avec un RAID logiciel selon le système d'exploitation et les capacités de contrôle des E / S. RAID10 est généralement préféré pour les bases de données pour des raisons de performances - si vous avez besoin de la redondance supplémentaire, vous pouvez utiliser six disques et avoir un RAID0 ou 2 RAID1 à 3 disques.

Une fois que vous avez quatre disques ou plus, les choses deviennent plus intéressantes, car vous pouvez avoir une paire distincte de baies RAID1. Cela peut offrir des avantages de performances significatifs avec les disques rotatifs en gardant vos magasins de données sur une baie et les journaux de transactions sur une autre - cela peut réduire considérablement les mouvements de tête dans certains cas et les temps de recherche dus à un accès "aléatoire" sont un véritable tueur de performances. Pour un entrepôt de données, en supposant que cela signifie qu'il y aura très peu d'écritures relativement parlant, la séparation des journaux de transactions des fichiers de données peut être d'un avantage plus limité, mais vous voudrez peut-être toujours envisager plusieurs tableaux et plutôt partitionner vos données dessus pour des performances de lecture potentiellement meilleures .

Si vous avez plus de quatre disques:

Vos options deviennent grandes ouvertes ici et cela dépend vraiment de vos données et de vos charges / modèles de mise à jour / lecture attendus. Par exemple, une fois que nos services fonctionnent sur des disques de 12 à 70 Go:

  • 4x en RAID10 pour les zones système (OS, SQL Server (MSSQL dans notre cas), swap, tempdb).
  • 4x en RAID10 pour les fichiers de données
  • 4x en RAID10 pour les journaux de transactions

Tempdb est conservé sur la baie système. Nous pourrions le déplacer vers les deux autres baies et simplement exécuter la baie système en tant que 2 disques en RAID1 car la vitesse supplémentaire n'est pas très nécessaire pour les morceaux de système (car cela n'est vraiment important qu'au démarrage ou lors de l'échange et nous nous assurons qu'il y a assez de RAM pour qu'il n'ait jamais besoin d'être échangé), mais avec la façon dont nous payons le fournisseur d'hébergement pour cet ensemble de machines, il ne nous coûterait pas moins de supprimer les deux disques. Les sauvegardes vont également à la baie système, avant d'être copiées vers les emplacements de sauvegarde hors serveur, hors site et hors ligne.

Bien sûr, cela est sérieusement exagéré pour certaines bases de données (il ne serait pas utile d'exécuter un petit serveur de blog de cette façon!), Mais notre application principale fonctionne très bien avec cet arrangement.

Si vous avez six disques, vous pouvez envisager trois baies RAID1 ou deux baies RAID10 à trois disques.

Généralement

Il n'y a malheureusement pas de véritable "meilleure pratique" simple, car cela dépend beaucoup de la taille de votre système et des modèles d'utilisation. Les seules règles générales que je peux penser ou sont:

  • évitez RAID5 et 6, sauf si vous savez que le problème de performances d'écriture ne vous affectera pas de manière significative
  • avec quatre disques ou plus basés sur des disques en rotation, envisagez de répartir les éléments sur plusieurs baies pour réduire les mouvements de la tête (le plein avantage de plusieurs baies ne s'appliquera pas aux bons SSD car il n'y a pas de mouvements physiques de la tête à considérer, bien que vous puissiez voir une différence en fonction de la stratégie de combinaison d'écriture du contrôleur des SSD, etc.)
  • testez, testez et testez à nouveau: il est toujours bon d'essayer de trouver du temps pour vérifier que votre arrangement choisi est bien optimal

RAID matériel ou logiciel?

Auparavant, les performances du RAID logiciel étaient inférieures à celles du RAID matériel pour RAID 5 en raison des calculs de parité et pour tous les arrangements en raison de la lenteur des interfaces entre les disques et le CPU. Avec les processeurs modernes, le problème de calcul de parité n'est pas vraiment un problème, mais si vous avez des disques très rapides, le RAID matériel peut toujours gagner si la vitesse totale des disques peut arriver n'importe oùproche (dans un ordre de grandeur, à une estimation) de la vitesse à laquelle la machine peut parler au contrôleur de disque. Si vous disposez d'une matrice RAID1 à quatre disques (c'est-à-dire quatre copies des mêmes données pour beaucoup de redondance) avec RAID logiciel, chaque opération d'écriture entraînera l'envoi par le système d'exploitation de quatre lots de données au contrôleur d'E / S, éventuellement séquentiellement - avec un matériel contrôleur, le système d'exploitation envoie simplement une demande d'écriture et le contrôleur envoie cela aux quatre disques, probablement en parallèle.

Un bon RAID matériel peut également offrir d'autres avantages: certains contrôleurs de haute qualité ont un cache d'écriture avec une batterie de secours afin que les écritures en attente ne soient pas perdues lors d'une coupure de courant, même en cas de panne de votre onduleur, par exemple.

Le RAID logiciel est évidemment moins cher et plus portable, vous n'êtes donc pas lié à un contrôleur particulier si vous devez déplacer les baies en raison d'une défaillance du contrôleur / de la machine.

Un RAID matériel bon marché combine généralement les inconvénients du RAID logiciel et matériel avec peu (ou aucun) des avantages des deux, il est donc préférable d'éviter.

J'ai tendance à utiliser le RAID logiciel sur nos serveurs de développement, de test et UAT et un bon RAID matériel pour les serveurs exécutant des services en direct client / public.


5

La " Oracle Database Performance Tuning Guide " a un chapitre consacré à la configuration des E / S . En bref:

  • Utiliser l'entrelacement (RAID matériel, RAID logiciel, ASM)
  • N'utilisez pas RAID5 pour l'archivage et le rétablissement des journaux
  • Aligner la taille du bloc du système de fichiers et la taille du bloc DB

4

Dans certains cas, JBOD est la bonne réponse (c'est-à-dire pas RAID).

Le problème est que si vous avez trop de groupes RAID, vous n'avez pas la possibilité de spécifier la façon dont le stockage physique est disposé dans la base de données, par exemple en vous assurant que les index et les enregistrements d'une table sont stockés sur des broches distinctes, et en veillant à équilibrer les écritures sur tous vos disques.

Vous pouvez utiliser l'entrelacement (RAID0) pour équilibrer les écritures, mais s'il s'agit d'un seul grand groupe, vous ne pouvez pas séparer les index des enregistrements.

La mise en miroir (RAID1) est tolérante aux pannes et elle est plus rapide pour les lectures (comme vous pouvez lire à partir de la broche qui n'est pas occupée), mais elle peut être plus lente pour les écritures car vous devez attendre que les deux copies aient été écrites.

Je n'irais jamais en RAID5 ou RAID6 sur une base de données. Si les données sont importantes, achetez plus de disques et optez pour RAID1; RAID5 / 6 est lent (en particulier dans les logiciels), et avec les tailles de disque dur d'aujourd'hui, la reconstruction peut prendre des jours après le remplacement de disques défectueux pour un grand groupe de disques ... sans oublier que la plupart des systèmes RAID5 / 6 gèrent les erreurs de parité est juste recalculer la parité ... mais les chances sont, la faute est dans les données, pas la parité mais vous n'avez aucune idée où était la faute. (malheureusement, je ne pense pas qu'il y ait quelque chose comme LOCKSS pour les bases de données)

...

La disposition la plus intéressante que j'ai vue sur la base de données impliquait en fait d'avoir deux partitions par axe - la partie la plus interne du disque a été utilisée pour la base de données de production, les sections supérieures du disque ont été utilisées pour les sauvegardes. (et ils se sont assurés qu'une partition n'était pas sauvegardée sur le même axe; je pense qu'il y avait plusieurs bases de données, donc chacune était sauvegardée sur les disques à partir d'une autre). Cela leur a donné l'avantage de répartir les éléments sur plusieurs broches pendant la journée de travail, puis la nuit, ils exécutaient des sauvegardes.

Je suppose qu'il y aurait une récupération plus lente si quelque chose ne fonctionnait pas et que vous deviez restaurer, car vous auriez des lectures à partir du disque externe pendant que les bases de données sont utilisées tout au long de la journée, mais il y a toujours des compromis dans tout.

...

Donc, de toute façon, le point que j'essaie de faire valoir - il n'y a pas de réponse unique qui convient à chaque situation. S'il y en avait, les administrateurs de base de données seraient sans emploi et les entreprises achèteraient des appliances de base de données prédéfinies.

Les bases de données que je traite sont ce que mon patron appelle «PORTÉ»: écrire une fois, lire jamais; il plaisante, mais "entrepôt de données" peut signifier n'importe quel niveau d'activité ... J'en ai vu certains qui ont été chargés à partir de bandes tous les soirs / toutes les semaines (et n'étaient que des copies de l'instance OLTP, et nous ont aidés à vérifier que les bandes étaient bonnes) et d'énormes travaux d'analyse ont été exécutés sur eux, et d'autres où il y a un flux constant d'entrées et de lectures occasionnelles, mais pas de réelle concurrence pour les ressources.


1
Grr pour ne pas avoir de votes positifs. Je reviendrai sur celui-ci ce soir, car j'aime beaucoup certains de vos points. Je suis aussi un grand fan de JBOD, ou de préférence de nombreuses paires RAID1.
jcolebrand

@jcolebrand: en fait, après avoir posté cela, j'ai lu sur 'ASM' que Brian Ballsun-Stanton a mentionné, et il semble que c'est Oracle qui gère la mise en miroir + l'entrelacement plutôt qu'au niveau OS / FS / matériel, nous avons donc fait des remarques similaires, mais il a donné une meilleure solution pour les installations Oracle récentes.
Joe

Qui nécessite un JBOD comme vous l'avez recommandé, oui?
jcolebrand

@jcolebrand: à peu près. (ce serait souhaitable, mais je ne pense pas nécessaire )
Joe

3

Ma recommandation pour les serveurs est toujours RAID 5 . Le temps et les efforts consacrés à la récupération de votre premier disque dur défectueux seront toujours mémorables. Si vous configurez des matrices RAID, je vous recommande fortement de standardiser sur une seule taille de disque et de ranger 2 disques durs de rechange dans la salle des serveurs. Un disque tourne mal? Mettez l'un des remplacements (et laissez le tableau reconstruire). J'ai vu des tableaux RAID vont vers le bas dur parce qu'un deuxième disque a mal tourné alors qu'ils attendaient le premier à arriver (livraison le lendemain était encore trop tard).


Mais changer les disques durs n'est pas le domaine du DBA, n'est-ce pas? La surveillance des disques pour la durée de vie et le taux de défaillance concerne les outils automatisés de la foule SF. Ne dupliquons pas le travail et détruisons les raisons de la spécialisation. Nous sommes dba après tout;)
jcolebrand

Raid 5 implémenté où? Matériel? Logiciel? Oracle? Sur combien de disques? Qu'en est-il de la baie de disques recommandée par Oracle? N'est-ce pas à cela que servent les journaux d'archivage?
Brian Ballsun-Stanton

2
RAID5 peut avoir des problèmes de performances d'écriture importants. RAID10 est plus courant pour les serveurs DB.
David Spillett

@jcolebrand, De nombreuses entreprises pour lesquelles j'ai travaillé traitent les administrateurs réseau == administrateurs serveur == administrateurs de base de données. Dans certains cas, seules quelques personnes ont accès au centre de données de production, ces personnes doivent donc porter 2 chapeaux à la fois. Dans beaucoup de ceux pour lesquels j'ai travaillé, les administrateurs de serveur ne savent pas ce qui se passe, donc je m'implique, donc je dois aussi connaître leur travail.
Tangurena

Et bien c'est cool et ça craint en même temps. Heureux d'avoir la voix de l'expérience;) [PS: le mien a été le +1]
jcolebrand

2

Combien de données prévoyez-vous d'utiliser et à quelle fréquence allez-vous lire ou écrire à partir du système? Il y a beaucoup de planification qui va dans ce sens, suffisamment pour que certaines personnes consacrent une carrière universitaire entière au sujet.

Normalement, je vous dirais d'aller sur Wikipedia et de lire l'article avant de continuer, car il existe plusieurs types de RAID et chacun est mieux utilisé dans un endroit différent.

Les bases vont comme ceci:

RAID0

Bon pour les joueurs vidéo. Mauvais pour à peu près n'importe qui d'autre. Il ne serait pas mauvais de l'utiliser pour un serveur de mise en cache qui n'a pas besoin de conserver les données pendant une période donnée. Une fois qu'un disque tombe en panne, le système est en panne. Jeu terminé.

RAID1

Idéal pour la fiabilité. Pas beaucoup d'extensibilité. Assez bon sur la vitesse.

RAID5

Le mélange préféré entre RAID0 et RAID1 (en quelque sorte).

Maintenant, après cela, cela devient presque quelque chose qui devrait être demandé sur ServerFault en raison du fait que c'est plus la configuration du serveur que la conception de la base de données. Discutez toujours des performances du serveur avec votre administrateur de serveur. C'est pour ça qu'ils sont là. S'il ne s'agissait pas d'une version bêta privée, je voterais pour fermer pour vous y migrer.


2
Bien que ServerFault ne serait certainement pas un mauvais endroit pour cette question, voici probablement le bon. Les problèmes de performances d'E / S sont quelque chose qu'un administrateur de base de données doit être bien conscient.
David Spillett

@David Je suis fermement d'accord, mais il y a une différence entre être conscient et le spécifier vous-même. D'après mon expérience, cela n'a jamais été une tâche individuelle lorsque le site allait être grand et occupé. Deux têtes valent mieux qu'une et tout ça
jcolebrand
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.