Virtualized SQL Server: Pourquoi pas?
Le département où je travaille à essayer de passer à 100% de serveurs virtualisés, avec toutes les données stockées sur un SAN. Ils ne l'ont pas encore fait, mais le plan a finalement appels pour le déplacement de la physique existante de SQL Server machines de serveurs virtuels ainsi.
Il y A quelques mois, j'ai assisté le Héros Arriver Ici, lancement de l'événement, et dans l'un de SQL Server sessions, l'orateur a mentionné, en passant, que ce n'est pas une bonne idée pour les systèmes de production.
Donc je suis à la recherche de quelques choses:
- Quelles sont les raisons pour lesquelles cela est ou n'est pas une bonne idée? J'ai besoin de références, ou n'est pas la peine de répondre. Je pouvais venir avec un vague "I/O bound" réponse sur mon propre via google.
- HHH haut-parleur souvenir seul ne sera probablement pas de convaincre notre département à changer leurs esprits. Quelqu'un peut me pointer directement à quelque chose de plus d'autorité? Et par "directement", je veux dire quelque chose de plus que juste une vague documentation en Ligne de commentaire. Merci de le réduire un peu.
- Il est intéressant de noter que cette question est assez vieux, et les nombreuses questions abordées ici sont en grande partie résolu - au moins en théorie. Cependant, depuis que j'ai écrit la accepté de répondre j'ai fait un certain nombre de contrat de concerts sur les sites avec virtualisé environnements de bd et vu les problèmes de performances à la majorité de ces sites. En dépit de ce que les vendeurs disent, vous avez encore à payer l'attention sur le stockage de la configuration et de paramétrage sur virtualisé DB environnements.
Vous devez vous connecter pour publier un commentaire.
Je peux le dire par expérience personnelle, parce que je m'occupe de ce problème que nous parlons. L'endroit où je travaille actuellement en tant qu'entrepreneur a ce type d'environnement pour le développement de SQL Server de systèmes. Je suis en train de développer un modeste B. I. système sur cet environnement et vraiment du mal avec les problèmes de performances.
TLB manque émulés et I/O sont très lents sur une naïve de la machine virtuelle. Si votre O/S a paravirtualisation de soutien (qui n'est pas encore une technologie mature sur Windows) vous utilisez paravirtualised I/O (essentiellement un pilote de périphérique qui se raccorde à une API dans la VM). Les versions récentes de l'Opteron d'avoir le support imbriqués les tables de pages, ce qui élimine la nécessité pour émuler la MMU dans le logiciel (qui est vraiment très lent).
Ainsi, les applications qui s'exécutent sur de grands ensembles de données et de faire beaucoup d'I/O, comme (par exemple) des processus ETL voyage sur le talon d'achille de la virtualisation. Si vous avez quelque chose comme un entrepôt de données système qui pourrait être dur de la mémoire ou du Disque I/O, vous devriez envisager autre chose. Pour une simple application transactionnelle ils sont probablement O. K.
Mettre en perspective les systèmes que j'utilise sont en cours d'exécution sur les lames (un serveur IBM) sur un SAN avec 4x 2gbit F/C liens. C'est un milieu de gamme à SAN. Le VM a 4 GO de RAM IIRC et maintenant deux Processeurs virtuels. À son meilleur (lorsque le SAN est calme) ce n'est encore que la moitié de la vitesse de mon XW9300, qui dispose de 5 disques SCSI (système, base de données tempdb, des journaux, des données, données) sur 1 U320 de bus et de 4 go de RAM.
Votre kilométrage peut varier, mais je vous conseille d'aller avec des systèmes de postes de travail comme celle que j'ai décrite pour le développement de tout ce que j'/S lourd, de préférence à des serveurs virtuels sur un SAN.
À moins que votre utilisation de la ressource conditions sont au-delà de ce genre de kit (dans ce cas, ils sont bien au-delà d'un serveur virtuel de toute façon) c'est une bien meilleure solution. Le matériel n'est pas si cher que ça, certainement beaucoup moins cher qu'un SAN, lame de châssis et de VMWare délivrance des licences. SQL Server developer edition est livré avec V. S. Pro et au-dessus.
Cela a aussi l'avantage que votre équipe de développement est forcé de faire face à déploiement de droit à partir de la parole vont - vous à venir avec une architecture qui est facile à "one-click" à déployer. Ce n'est pas aussi difficile qu'il y paraît. Redgate SQL de Comparer Pro est votre ami ici. Vos développeurs également obtenir une base de connaissances en administration de base de données.
Un voyage rapide sur Le site web d'HP m'a donné une liste de prix de près de 4 600 $pour un XW8600 (leur xeon-modèle basé sur) avec un processeur quad-core xeon puce, 4 GO de RAM et 1x146 et 4x73GB SAS 15k disques durs. Rue prix sera probablement un peu moins. Le comparer au prix d'un SAN, lame de châssis et de licences VMware et le coût de la sauvegarde pour que le programme d'installation. Pour la sauvegarde, vous pouvez fournir un partage réseau avec sauvegarde où les gens peuvent déposer comprimé DB fichiers de sauvegarde nécessaires.
EDIT: Ce livre blanc sur la DMLA site web discute quelques repères sur une machine virtuelle. À partir de repères dans le dos, lourd d'e/S et de MMU de la charge de travail vraiment les fringues VM performance. Leur indice de référence (à prendre avec un grain de sel car il est un fournisseur fourni statistique) suggère de 3,5 x vitesse de pénalité sur un OLTP de référence. Alors que c'est le constructeur a fourni l'on devrait garder à l'esprit:
Il repère les naïfs de la virtualisation
et la compare à une
para-virtualisé solution, non
bare-metal performance.
OLTP référence aurez plus
accès aléatoire I/O de la charge de travail, et
passer plus de temps à attendre pour le disque
cherche. Plus de disque séquentiel
modèle d'accès (caractéristique de l'
requêtes d'entrepôt de données) ont une
pénalité plus élevée, et une mémoire-lourds
opération (SSAS, par exemple, est un
mémoire biblique de porc) qui a une
grand nombre de TLB manque également
encourir de pénalités supplémentaires. Cette
signifie que les ralentissements sur ce
type de traitement serait probablement
plus prononcé que le OLTP
référence peine cité dans le livre blanc.
Ce que nous avons vu ici, c'est que TLB accidents et les I/O sont très cher sur une machine virtuelle. Une bonne architecture avec paravirtualised des pilotes et du matériel de soutien dans la MMU permettra d'atténuer certains ou de tous les de ce. Cependant, je crois que Windows Server 2003 ne prend pas en charge paravirtualisation à tous, et je ne suis pas sûr de ce niveau de support est livré dans Windows server 2008. Il a certainement été mon expérience que la VM va radicalement ralentir un serveur lorsque vous travaillez sur un processus ETL et cube SSAS construit par rapport à relativement modeste spec matériel en métal nu.
SAN - bien sûr, et de clustering, mais en ce qui concerne la Virtualisation, vous pourrez prendre un gain de Performance (peut ou peut ne pas être la peine à vous):
http://blogs.technet.com/andrew/archive/2008/05/07/virtualized-sql-server.aspx
http://sswug.org a eu quelques remarques à ce sujet dans leur newsletter quotidienne dernièrement
Je voulais ajouter cette série d'articles par Brent Ozar:
Ce n'est pas exactement autorité dans le sens que j'espérais (venant de l'équipe qui a construit le serveur, ou un manuel officiel d'un certain type), mais Brent Ozar est assez bien respecté et je pense qu'il fait un excellent travail couvrant toutes les questions ici.
Nous avons un système de paie pour plus de 900 personnes sur VMWare avec pas de problèmes. Cela a été en production depuis 10 mois. C'est un de taille moyenne de la charge autant que DB, et que nous pré-alloué de l'espace disque en VM pour éviter IO questions. Vous devez défragmenter la fois la machine virtuelle de l'Hôte et la machine virtuelle tranche sur une base régulière afin de maintenir des performances acceptables.
Voici quelques VMWARE tests sur elle..
http://www.vmware.com/files/pdf/SQLServerWorkloads.pdf
Accordée, ils ne pas le comparer à des machines physiques. Mais, vous pourriez probablement faire des tests similaires avec les outils qu'ils ont utilisés pour votre environnement.
Nous avons actuellement de SQL Server 2005 dans un environnement VMWARE. MAIS, c'est un très faiblement chargé de la base de données et il est grand. S'exécute sans problèmes.
Comme la plupart l'ont souligné, cela dépendra de votre charge de base de données.
Peut-être que vous pouvez convaincre le Département de l', de faire du bien tester avant de aveuglément la mise en œuvre.
Non, je ne peux pas le point pour les tests spécifiques ou quelque chose comme ça, mais je peux dire par expérience que la mise en production de la base de données du serveur sur une machine virtuelle est une mauvaise idée, surtout si elle a une grande charge.
C'est bien pour le développement. Peut-être même des tests (sur la théorie que si il fonctionne très bien sous la charge sur virtual box, ça va bien se passer, sur la production), mais pas dans la production.
C'est le sens commun, vraiment. Voulez-vous votre matériel en cours d'exécution de deux systèmes d'exploitation et votre sql server ou d'un système d'exploitation et sql server?
Edit:
Mon expérience biaisée ma réponse. J'ai travaillé avec de grandes bases de données sous une lourde charge constante. Si vous avez une petite base de données sous la lumière de la charge, la virtualisation peut bien fonctionner pour vous.
Il y a quelques informations concernant cette Conor Cunningham article du blog de Base de données de Virtualisation - Le Sale Petit Secret que Personne n'en Parle.... Pour citer:
Et la poste sur l'élaboration de ces questions un peu plus loin aussi. Je pense qu'une bonne lecture, compte tenu de la rareté des informations disponibles, l'examen de cette question en général.
Remarque il y a quelques spécialité de produits de virtualisation qui sont faites pour les bases de données qui pourrait être utile dans la recherche au lieu d'un produit à l'image de VMWare.
Notre société (plus de 200 serveurs SQL) est actuellement dans le processus de déploiement de HP Polyserve sur certains de nos serveurs:
Notre raison première pour le déploiement, il est de rendre le matériel de remplacement plus facile: ajouter la nouvelle boîte à la "matrice", shuffle autour de l'endroit où chaque instance SQL réside (de façon transparente), puis enlever la vieille boîte. Transparent pour l'application équipes, parce que l'instance SQL noms ne changent pas.
Vieille Question avec les Anciennes Réponses
Les réponses dans ce fil des années. La plupart des points négatifs dans l'ensemble de ce fil sont techniquement toujours correct, mais beaucoup moins pertinents. Les frais généraux de la virtualisation et SAN s est beaucoup moins important aujourd'hui qu'il a utilisé pour être. Un correctement configuré hôte de Virtualisation, un invité, un réseau, et de SAN peut fournir de bonnes performances avec les avantages de la virtualisation et de la souplesse de fonctionnement, y compris de bons de scénarios de récupération qui sont uniquement fournies par le fait d'être virtuel.
Cependant, dans le monde réel, il suffit d'un peu de configuration de détails pour apporter le tout à ses genoux. Dans la pratique votre plus grand défi avec les serveurs virtuels de SQL est de convaincre et de travail avec les personnes responsables de la virtualisation pour obtenir mis en place juste à droite.
L'ironie, dans 100% des cas, nous avons pris les données de production de la virtualisation et l'a déplacé de retour de matériel dédié performance a traversé le toit sur le matériel dédié. Dans tous ces cas, il n'était pas de la virtualisation, mais la façon dont il a été le programme d'installation. Par le retour à un matériel dédié, nous a prouvé que la virtualisation aurait été une bien meilleure utilisation des ressources par un facteur de 5 ou plus. Le logiciel moderne est généralement conçue pour évoluer à travers les nœuds afin de virtualisation fonctionne à votre avantage sur le devant ainsi.
La plus grande préoccupation pour moi quand la virtualisation d'un logiciel est licence.
Voici un article sur elle pour MS SQL. Pas sûr au sujet de votre situation ne peut donc pas choisir n'importe quelle points saillants.
http://www.microsoft.com/sql/howtobuy/virtualization.mspx
SQL Server est pris en charge dans un environnement virtuel. En fait je le recommande de voir que l'une des options de licence est par socket. Cela signifie que vous pouvez mettre autant d'instances de SQL Server dans un virtualisé (par exemple, Windows Server 2008 Datacenter) du système que vous voulez et ne payez que par socket processeur de la machine.
C'est mieux que ça car DataCenter est une licence par socket avec un nombre illimité de machine Virtuelle licences.
Je vous recommande de clusters Hyper-V sur les deux machines, cependant, de sorte que si l'un tombe en panne l'autre peut prendre la relève.
Je pense que la possibilité de quelque chose de mauvais se passe pour les données serait trop grand.
Comme un simple morts exemple, disons que vous avez exécuté une zone SQL Server Virtual Server 2005 R2 et les disques d'annulations ont été activés (donc, le principal "disque" fichier reste le même et que toutes les modifications apportées à un fichier séparé qui peut être purgé ou fusionné plus tard). Puis il se passe quelque chose (généralement, vous courez dans la limite de 128 go ou quelle que soit la taille de l'est) et certains milieu de la nuit désemparés admin a redémarrer et de chiffres qu'il ne peut pas le faire jusqu'à ce qu'il supprime les disques d'annulation. Vous êtes foutu, même s'il maintient le disque d'annulation de fichiers pour analyse ultérieure les possibilités de fusionner les données de l'ensemble est assez mince.
Donc, en écho à d'autres postes dans ce thread pour le développement, c'est génial, mais pour la production, ce n'est pas une bonne idée. Votre code peut être reconstruit et redéployés (c'est une autre chose, VM pour le contrôle de la source ne sont pas une bonne idée non plus), mais en direct les données de production est bien plus important.
Les problèmes de sécurité qui peuvent être introduits lors de l'affaire avec la Revitalisation devrait également être envisagée. La Sécurité De La Virtualisation est un bon article de PandaLabs qui couvre certaines des préoccupations.
Vous êtes à la recherche à ce à partir d'un mauvais angle. Tout d'abord, vous n'allez pas trouver des livres Blancs à partir de Fournisseurs pourquoi vous ne "doit pas" virtualiser ou pourquoi vous devriez Virtualiser.
Chaque environnement est différent et vous devez faire ce qui fonctionne dans votre Environnement. Avec cela dit, il y a quelques serveurs qui sont parfaits pour la virtualisation et il ya certains qui ne devraient pas être virtualisés. Par exemple, si votre Serveur SQL server/s font des millions et des millions de transactions par seconde, comme si votre serveur est situé sur le NYSE ou le NASDAQ et des millions et des millions de dollars en dépendent, vous ne devriez probablement pas virtualiser il. Assurez-vous de comprendre les ramifications de la virtualisation de SQL server.
J'ai vu où les gens virtualiser SQL et plus simplement parce que la Virtualisation est cool. Ensuite se plaindre plus tard, lors de la VM server ne fonctionne pas comme prévu.
Ce que vous devez faire est de fixer un point de repère, de tester la solution que vous souhaitez déployer et de montrer ce qu'il peut et ne peut pas faire de sorte que vous ne courez pas dans toutes les surprises. La virtualisation c'est beau, c'est bon pour la envronment et sauve grâce à la consolidation, mais vous avez besoin de montrer pourquoi votre superviseurs pourquoi vous ne devriez pas virtualiser vos Serveurs SQL et que vous pouvez faire cela.