66 votes

Quels sont les inconvénients de l'exécution d'une base de données dans une machine virtuelle ? Comment les surmonter ?

L'exécution de tout ce qui se trouve dans une machine virtuelle aura un certain niveau d'impact sur les performances, mais dans quelle mesure vraiment ont un impact sur les performances d'un système de base de données ?

J'ai trouvé ce document de référence académique avec quelques benchmarks intéressants, mais il s'agissait d'un test limité utilisant uniquement Xen et PostgreSQL. La conclusion est que l'utilisation d'une VM "n'a pas un coût élevé en termes de performances" (bien que vous puissiez penser que les données réelles disent le contraire).

Quels sont les inconvénients techniques, administratifs et autres liés à l'exécution d'une base de données dans une machine virtuelle ?

Je ne suis pas intéressé par les spéculations ou tout autre argument semi-religieux (la passion des geeks est bonne à bien des égards, mais cela ne nous aidera pas ici).

Ceci étant dit,

  • Quels problèmes apparaissent lors de l'exécution d'une base de données dans une machine virtuelle ? (veuillez indiquer les références)
  • Ces questions sont-elles importantes ?
    • Ne sont-elles significatives que dans certains scénarios ?
  • Quelles sont les solutions de contournement ?

0 votes

+1 Je suis principalement intéressé par les commentaires sur les scénarios SQL Server et Windows 2008 R2.

4 votes

@Shane Madden - Pouvez-vous expliquer un peu la fermeture ? Je m'attends à ce que la motivation soit motivée par une raison non spécifique. répondre (qui a ensuite déraillé dans les commentaires), et non la question elle-même. En ce qui concerne la question, 44 votes et 12 favoris en l'espace d'environ un jour d'existence de la pré-fermeture impliquent pour moi qu'il s'agissait d'une bonne question avec des réponses/informations utiles (en particulier par rapport à ce qui semble être typique pour le trafic de questions sur ServerFault). C'est ce que visent les différents sites SE. Auriez-vous préféré une formulation plus spécifique de la question, plutôt qu'une simple question du type "quelle est la gravité de la situation ?

1 votes

@ErikA ,Shane ,Womble ,mikeyb ,Ben - J'ai fait une modification communautaire qui pourrait rendre cette question plus constructive. Pensez à rouvrir cette question, ou à poster une question similaire dans une nouvelle question.

40voto

Samat Jain Points 165

Bien que de nombreux fournisseurs de bases de données aient été très lents à le faire, presque tous prennent désormais officiellement en charge l'exécution de leur logiciel dans un environnement virtualisé.

Nous exécutons de nombreuses instances Oracle 11g sous linux au-dessus d'ESXi, et il est certainement possible d'obtenir de très bonnes performances. Comme pour toute mise à l'échelle du matériel, il suffit de s'assurer que la virtualisation est efficace. hôte dispose de ressources suffisantes (RAM, CPU) et que votre couche disque est en mesure de fournir les performances d'E/S dont vous avez besoin.

7 votes

+1 Comme indiqué, il est essentiel que les ressources soient à la hauteur de la tâche. Le disque a été le principal goulot d'étranglement pour nous et une planification minutieuse est nécessaire.

2 votes

+1 Vous devez faire vos devoirs sur la base de données utilisation à l'avance. Si votre boîtier physique est mis à rude épreuve au-delà de 40 % d'utilisation, les avantages de la virtualisation commencent à s'estomper. Ceci étant dit, nous avons des tonnes de petits sql isolés spécifiques à des applications qui tournent sur des vm sans aucun problème. Mais nos grosses machines à forte utilisation ont un matériel dédié en raison de l'absence d'avantage.

5 votes

Il est certain que l'IO du disque est le grand coupable, et que les environnements virtualisés ont tendance à être défaillants.

21voto

Warren Blanchet Points 881

Comme le dit ErikA, cela devient de plus en plus courant. Je suis dans le camp de SQL Server et je n'ai pas personnellement de systèmes de production fonctionnant dans des VM, mais je n'hésiterais pas à le faire (après avoir étudié un peu plus le sujet). Il y a certainement des choses à prendre en considération avant de s'engager dans cette voie, cependant (au moins pour SQL Server). L'IO du disque (comme d'autres l'ont mentionné) et l'allocation de mémoire ne sont que deux exemples. Les choses seront également différentes selon les hyperviseurs.

Brent Ozar est un expert reconnu en matière de virtualisation de SQL Server, notamment dans VMWare. Je vous recommande vivement de lire ses documents.

http://www.brentozar.com/community/virtualization-best-practices/

11voto

James Pulley Points 456

Es gibt peut et puis il y a devrait . Une Corvette peut aller à 150 mph, mais devez-vous le faire sur les routes publiques ? Vous pouvez vous blesser inutilement.

Les bases de données sont des systèmes d'exploitation invités. Par conception, lorsqu'elles démarrent, elles saisissent des blocs de ressources et les gèrent directement pour des raisons de performances. Dès que vous faites du système d'exploitation central du serveur de base de données un invité dans un environnement d'hébergement virtualisé, vous placez une couche d'arbitrage avec l'hyperviseur entre l'élément alloué par bloc de disque et de RAM et le serveur de base de données. Celui-ci va ralentir. Plus vos requêtes sont inefficaces, plus il ralentira. Ces inefficacités peuvent être masquées aujourd'hui sur du matériel dédié, mais dès que vous introduisez l'arbitrage dans votre ressource dépendante, vous allez le découvrir très vite.

Ce que beaucoup de compteurs de haricots qui exigent la virtualisation ne reconnaissent pas, c'est que les serveurs de bases de données, en tant que systèmes d'exploitation invités, offrent leur propre couche de consolidation. Il n'y a aucune raison pour que vous ne puissiez pas consolider plusieurs instances logiques de bases de données sur un seul serveur physique, même en déplaçant les adresses IP, en configurant des noms d'hôtes supplémentaires, etc..., pour permettre à cette fusion naturelle des services d'avoir lieu. Et, avec ce modèle, non seulement vous conservez les économies que la direction pousse à réaliser en réduisant le nombre d'hôtes physiques, mais vous conservez l'accès en bloc aux ressources physiques sans l'empiètement de l'hyperviseur arbitraire, qui peut prendre des décisions bénéfiques parfois et pas d'autres.

Il en va de même pour les autres systèmes d'exploitation invités, comme Java. Les solutions de virtualisation sont généralement des environnements très chargés et l'hyperviseur doit prendre de nombreuses décisions pour savoir qui "obtient le jeton" sur une ressource. Chaque fois que vous pouvez éliminer cette couche, vous êtes mieux loti.

Coalescez plusieurs instances en utilisant d'abord la couche naturelle du système d'exploitation invité. Il y a de fortes chances que vous puissiez atteindre plus facilement vos objectifs de consolidation et de performance de la plate-forme.

4 votes

Définition intéressante de "système d'exploitation invité". Même si vous avez raison en ce qui concerne les performances pures et simples, à quelle fréquence vos bases de données sont-elles réellement engorgées par l'unité centrale ? Les E/S sont beaucoup plus probables, et pour les applications les plus performantes, vous partagez déjà le temps d'E/S sur un SAN. J'ose espérer que vous reconsidérerez votre philosophie de virtualisation lorsqu'un problème de sécurité avec une application compromettra tous les hachages de mots de passe de vos bases de données consolidées, ou lorsqu'un processus s'exécutant dans votre JVM consommera chaque octet de l'espace de stockage disponible.

5 votes

Pour être clair, je suis tout à fait d'accord sur le fait qu'un serveur de base de données très performant, très sollicité et finement réglé devrait avoir son propre matériel physique. Mais ce n'est pas la norme, et les autres avantages de la virtualisation tendent à l'emporter sur l'impact sur les performances, qui est indiscernable pour la plupart des charges de travail.

3 votes

Je ne suis pas d'accord avec vous lorsque vous dites qu'il faut toujours commencer par les couches de consolidation existantes. Cela a parfois du sens. Mais regardez, par exemple, le coût du rééquilibrage des ressources entre la consolidation de plusieurs bases de données sur un seul système d'exploitation et la consolidation de plusieurs combinaisons base de données/système d'exploitation au-dessus d'un hyperviseur. La première solution est plus efficace. La seconde est beaucoup plus facile à rééquilibrer. La migration d'un système d'exploitation/d'une base de données vers un nouvel hôte est beaucoup moins perturbante que la migration d'une base de données vers un nouveau système d'exploitation.

6voto

Mike42 Points 849

Il y a deux choses à comprendre ici :

  • L'unité de performance de la base de données par unité de matériel est un peu plus faible pour une base de données virtualisée. Cela signifie que vous devez acheter un peu plus de matériel pour obtenir le même niveau de performance.
  • Cela ne signifie pas qu'il est impossible d'atteindre le même niveau ou le niveau de performance souhaité. Les gains obtenus grâce à l'amélioration de la gestion et à d'autres avantages (comme la facilité de l'AH) sont souvent chemin font plus que compenser l'augmentation marginale des coûts de matériel.

Cela dit, là où je travaille, notre installation Sql Server est l'un des deux seuls serveurs que je n'ai pas l'intention de virtualiser de sitôt (l'autre est le DC primaire).

4voto

JohnMcG Points 5062

L'exécution de SQL Server dans une VM ne pose aucun problème, à condition que vous puissiez fournir suffisamment de ressources à la VM pour exécuter votre application. Si, dans le monde physique, vous avez besoin de 24 cœurs et de 256 gigaoctets de RAM, vous devez fournir 24 vCPU et 256 gigaoctets de RAM dans le monde virtuel.

J'ai juste a écrit un article Dans le magazine SQL Server du mois dernier, nous avons parlé de l'exécution de SQL Server sous vSphere de VMware.

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