Frage

Die IT-Abteilung, wo ich arbeite versucht zu 100% virtualisierten Servern zu bewegen, mit allen in einem SAN gespeicherten Daten. Sie haben es noch nicht getan, aber der Plan schließlich ruft zum Bewegen der vorhandenen physischen SQL Server-Maschinen zu virtuellen Servern als auch.

Vor ein paar Monaten besuchte ich die Helden Hier Auftaktveranstaltung geschehen, und in einem der SQL Server-Sitzungen erwähnt der Sprecher beiläufig, dass dies für Produktionssysteme keine gute Idee ist.

Also ich suche ein paar Dinge:

  1. Was sind die spezifischen Gründe, warum dies ist oder nicht eine gute Idee? Ich brauche Referenzen, oder nicht die Mühe zu reagieren. Ich konnte mit einer vagen "I / O-bound" Antwort auf meinem eigenen via google kommen.
  2. Die Erinnerung HHH Lautsprecher allein wahrscheinlich nicht unsere IT-Abteilung überzeugen, ihre Meinung zu ändern. Kann mir jemand direkt auf etwas mehr Autorität zeigen? Und mit „direkt“, meine ich etwas präziser als nur einen vageen Bücher OnLine Kommentar. Bitte grenzen Sie es ein wenig nach unten.
War es hilfreich?

Lösung

Das kann ich sagen, aus eigener Erfahrung, weil ich mit diesem sehr Problem zu tun habe, wie wir sprechen. Der Ort, ich arbeite zur Zeit als Auftragnehmer hat diese Art von Umgebung für ihre SQL Server-Entwicklungssysteme. Ich versuche, einen ziemlich bescheidenen B. I. zu entwickeln System auf dieser Umgebung und wirklich mit den Performance-Problemen zu kämpfen.

TLB-Fehler und emulierte E / A sind auf einer naiven virtuellen Maschine sehr langsam. Wenn Ihr O / S hat Paravirtualisierung Unterstützung (die unter Windows noch nicht ausgereifte Technologie), die Sie verwenden paravirtualisierten I / O (im Wesentlichen ein Gerätetreiber, der in der VM in eine API Haken). Neuere Versionen des Opteron haben Unterstützung für verschachtelte Seitentabellen, die die Notwendigkeit beseitigt die MMU in Software emuliert (die wirklich langsam ist).

So können Anwendungen, die über große Datenmengen laufen und tun eine Menge I / O wie (sagen wir) ETL-Prozesse Fahrt über die Achillesferse der Virtualisierung. Wenn Sie so etwas wie ein Data-Warehouse-System, das auf Speicher oder Disk I hart sein könnte / O sollten Sie etwas anderes überlegen. Für eine einfache Transaktionsanwendung sind sie wahrscheinlich O.K.

in Perspektive zu setzen, die Systeme verwende ich auf Blades laufen (ein IBM-Server) auf einem SAN mit 4x 2 Gbit F / C-Links. Dies ist ein Mid-Range-SAN. Die VM hat 4 GB RAM IIRC und nun zwei virtuelle CPUs. Im besten Fall (wenn die SAN ruhig ist), ist dies immer noch nur die Hälfte der Geschwindigkeit meines xw9300 , die 5 SCSI-Festplatten (System, tempdb, Protokolle, Daten, Daten) auf 1 U320-Bus und 4 GB RAM hat.

die Leistung kann variieren, aber ich würde empfehlen, mit Arbeitsplatzsystemen wie das gehe ich für die Entwicklung von etwas I / O schwer bevorzugt auf virtuellen Server in einem SAN beschrieben. Es sei denn, Ihre Anforderungen Ressourcennutzung über diese Art von Kit sind (in diesem Fall werden sie auch über einen virtuellen Server sowieso) dies eine viel bessere Lösung ist. Die Hardware ist nicht so teuer - sicherlich viel billiger als ein SAN, Blade-Chassis und VMWare Lizenzierung. SQL Server Developer Edition kommt mit V. S. Pro und höher.

Dies hat auch den Vorteil, dass Ihr Entwicklungsteam mit Einsatz zu tun rechts vom Wort geht gezwungen ist - Sie mit einer Architektur zu kommen haben, die einfach zu ‚One-Click‘ bereitstellen. Das ist nicht so schwer, wie es klingt. Redgate SQL vergleichen Pro ist dein Freund hier. Ihre Entwickler auch eine grundlegende Kenntnisse der Datenbankverwaltung erhalten.

Eine schnelle Fahrt auf HP Webseite mir einen Listenpreis von rund für ein xw8600 $ 4,600 bekam (ihr aktuelles Xeon-basiertes Modell) mit einem Xeon-Chip Quad-Core, 4 GB RAM und 1x146 und 4x73GB 15k SAS Festplatten. Straßenpreis wird wahrscheinlich etwas weniger sein. Vergleichen Sie dies mit dem Preis für ein SAN, Blade-Chassis und VMware Lizenzierung und die Kosten für die Sicherung für das Setup. Für Backup können Sie eine Netzwerkfreigabe mit Backup bieten, wo Menschen komprimierte DB Backup-Dateien nach Bedarf löschen können.

EDIT: In diesem White Paper auf AMDs Website bespricht einige Benchmarks auf einer VM. Von den Benchmarks in den Rücken, schwere I / O und MMU Workload clobber wirklich VM Performance. Ihre Benchmark (wird mit einem Körnchen Salz, da es ein Verkäufer geliefert Statistik ist) schlägt eine 3.5x Geschwindigkeitseinbuße auf einem OLTP-Benchmark. Während diese Verkäufer geliefert man bedenken sollte:

  • Es Benchmarks naive Virtualisierung und vergleicht sie mit einem para-virtualisierte Lösung, nicht Bare-Metal-Performance.

  • Ein OLTP-Benchmark wird eine mehr Schreib-Lese-I / O-Workload und wird mehr Zeit wartend verbringeng für Scheibe sucht. Eine sequenzielle Platten Zugriffsmuster (charakteristisch Data-Warehouse-Abfragen) wird ein höhere Strafe und einen Speicher lastigen Betrieb (SSAS, zum Beispiel, ist ein Bibel Speicher Schwein), der eine hat große Anzahl von TLB-Fehler wird auch entstehen zusätzliche Strafen. Diese bedeutet, dass die Verlangsamungen auf diese Art der Verarbeitung wäre wahrscheinlich ausgeprägter als OLTP Benchmark Strafe zitierte in dem White Paper.

Was wir hier sehen ist, dass TLB-Fehler und I / O ist auf einer VM sehr teuer. Eine gute Architektur mit paravirtualisierten Treiber und Hardware-Unterstützung in der MMU wird einige oder alle diese mildern. Ich glaube jedoch, dass Windows Server 2003 nicht überhaupt unterstützen Paravirtualisierung, und ich bin mir nicht sicher, welches Maß an Unterstützung in Windows 2008 Server ausgeliefert wird. Es ist meine Erfahrung sicher gewesen, dass eine VM radikal einen Server verlangsamen, wenn sie auf einem ETL-Prozess arbeitet und SSAS-Cube im Vergleich Builds zu relativ bescheidener spec Bare-Metal-Hardware.

Andere Tipps

SAN - natürlich und Clustering, aber in Bezug auf Virtualisierung - Sie erhalten eine Leistung Hit nehmen (oder nicht wert sein, kann es für Sie):

http: //blogs.technet .com / Andrew / Archiv / 2008/05/07 / virtualisierten-sQL-server.aspx

http://sswug.org hatte ein paar Notizen über sie in ihrem täglichen Newsletter in letzter Zeit

Ich wollte diese Serie von Artikeln von Brent Ozar hinzuzufügen:

Es ist nicht gerade autoritative in dem Sinne, denn ich hatte gehofft, dass (aus dem Team kommen, der den Server baut oder ein offizielles Handbuch irgendeiner Art), aber Brent Ozar ist ziemlich gut eingehalten und ich denke, er hat eine große Aufgabe, die alle die Probleme hier.

Wir sind ohne Probleme ein Abrechnungssystem für 900+ Menschen auf VMWare läuft. Dies hat für 10 Monate in Produktion. Es ist eine mittelgroße Last so weit wie DB geht, und wir Speicherplatz in VM vorab zugewiesene Stellen zu IO Probleme zu verhindern. Sie müssen defragmentieren sowohl die VM Host und den VM-Scheibe auf einer regelmäßigen Basis, um eine akzeptable Leistung zu erhalten.

Hier einige VMWARE Tests auf sie .. http://www.vmware.com/files/pdf/SQLServerWorkloads.pdf

Zugegeben, sie vergleichen es nicht zu physischen Maschinen. Aber, könnte man wahrscheinlich tut Ähnliche Tests mit den Werkzeugen, die sie für Ihre Umgebung verwendet wird.

Wir führen derzeit SQL Server 2005 in einer VMware-Umgebung. Aber es ist eine sehr leicht belastet Datenbank und es ist großartig. Läuft ohne Probleme.

Wie die meisten haben darauf hingewiesen, wird es auf dem Datenbanklast ab.

Vielleicht können Sie die IT-Abteilung überzeugen, bevor blind Umsetzung einige gute Tests zu tun.

Nein, ich kann nicht auf bestimmte Tests oder so etwas zeigen, aber ich kann aus Erfahrung sagen, dass auf einer virtuellen Maschine Ihre Produktionsdatenbankserver setzen ist eine schlechte Idee, vor allem, wenn es eine große Last hat.

Es ist für die Entwicklung gut. Möglicherweise sogar Tests (auf der Theorie, dass, wenn sie unter Last auf dem virtuellen Feld fein laufen, es wird gut auf prodcution laufen), aber nicht in der Produktion.

Es ist der gesunde Menschenverstand wirklich. Wollen Sie Ihre Hardware zwei Betriebssysteme und SQL-Server oder ein Betriebssystem und SQL Server ausgeführt wird?

Edit: Meine Erfahrung voreingenommen meine Antwort. Ich habe mit großen Datenbanken unter hohen Dauerbelastung gearbeitet. Wenn Sie eine kleinere Datenbank unter geringer Last haben, Virtualisierung für Sie kann gut funktionieren.

Es gibt einige Informationen über diese in Conor Cunningham Blog-Artikel Datenbank-Virtualisierung - The Dirty Little Secret Niemand spricht über ... . Zu zitieren:

  

Im Server selbst gibt es überraschend wenig Wissen über viele Dinge in diesem Bereich, der Leistung wichtig sind. SQL Server Core-Engine übernimmt Dinge wie:

     
      
  1. alle CPUs sind gleich mächtig
  2.   
  3. alle CPUs Prozessanweisungen bei etwa der gleichen Geschwindigkeit.
  4.   
  5. ein Flush auf der Festplatte sollte wahrscheinlich in einer beschränkten Menge an Zeit passieren.
  6.   

Und die Post geht auf diese Fragen etwas weiter auch erarbeiten. Ich denke, ein gutes Buch im Allgemeinen der Knappheit der verfügbaren Informationen unter Berücksichtigung dieses Problems berücksichtigen.

Hinweis gibt es einige Spezialvirtualisierungsprodukte gibt, die für Datenbanken vorgenommen werden, die Suche in anstelle eines allgemeinen Produkt wie VMWare wert sein könnte.

Unser Unternehmen (mehr als 200 SQL-Server) ist derzeit im Prozess der Bereitstellung von HP PolyServe auf einige unserer Server:

  

HP PolyServe Software für Microsoft SQL Server kann mehrere Microsoft SQL Server-Instanzen auf wesentlich weniger Server und zentralen SAN-Speicher konsolidiert werden. HP PolyServe einzigartige "shared data" Architektur bietet Enterprise-Class-Verfügbarkeit und Virtualisierungsartige Flexibilität in einer Utility-Plattform.

Unser Hauptgrund für die Bereitstellung es ist Hardware-Austausch erleichtern: die neue Box auf den „Matrix“ hinzufügen, mischt um, wo jede SQL-Instanz befindet (nahtlos), dann entfernen Sie den alten Kasten. Transparent zu den Anwendungsteams, da die SQL-Instanznamen nicht ändern.

Alt Question mit alten Antworten

Die Antworten in diesem Thread sind Jahre alt. Die meisten der negativen Punkte in diesem ganzen Thread sind technisch noch richtig, aber viel weniger relevant. Die Overhead-Kosten der Virtualisierung und SAN ist viel weniger ein Faktor, als sie es früher. Eine korrekt konfigurierte Virtualisierungs-Host, Gast, Netzwerk und SAN kann eine gute Leistung mit den Vorteilen der Virtualisierung bieten und operative Flexibilität einschließlich der guten Recovery-Szenarien, die nur zur Verfügung gestellt werden durch virtuelle zu sein.

Doch in der realen Welt es dauert nur eine kleinere Konfiguration Detail das Ganze in die Knie zu bringen. In der Praxis ist die größte Herausforderung mit virtuellem SQL-Server überzeugend und mit den Leuten zu arbeiten, die für die Virtualisierung es genau richtig einrichten zu erhalten.

Irony, in 100 Prozent der Fälle, in denen wir die Produktion aus der Virtualisierung nahmen und zogen sie zurück auf dedizierte Hardware Performance gingen durch das Dach auf der dedizierten Hardware. In all diesen Fällen war es nicht die Virtualisierung, aber die Art und Weise war es Setup. Indem sie wieder auf dedizierte Hardware haben wir bewiesen, eigentlich, dass die Virtualisierung von Faktoren von 5 oder mehr eine viel bessere Nutzung von Ressourcen gewesen wäre. Moderne Software ist in der Regel über die Knoten horizontal skalieren so konzipiert, Virtualisierung an dieser Front als auch zu Ihrem Vorteil arbeitet.

Die größte Sorge für mich, wenn Software virtualisiert ist normalerweise Lizenzierung.

Hier ist ein Artikel über sie für MS SQL. Nicht sicher über Ihre Situation so keine wesentlichen Punkte herausgreifen kann.

http://www.microsoft.com/sql/howtobuy/virtualization.mspx

SQL Server in einer virtuellen Umgebung unterstützt. In der Tat würde ich empfehlen, zu sehen, dass eine der Lizenzierungsoptionen pro Socket ist. Dies bedeutet, dass Sie so viele Instanzen von SQL Server in einer virtualisierten (zum Beispiel Windows 2008 Server Datacenter-System) setzen können, wie Sie möchten und nur pro Prozessorsockel zahlen die Maschine hat.

Es ist besser als das, weil DataCenter- pro Socket mit unbegrenzten virtuellen Maschine Lizenzen lizenziert als auch.

Ich würde empfehlen, auf zwei Maschinen Ihre Hyper-V Clustering jedoch so, dass, wenn einer ausfällt das andere in die Bresche zu können.

Ich würde denken, dass die Möglichkeit von etwas Schlimmes passiert mit den Daten zu groß wäre.

Als tot einfaches Beispiel, sagen wir mal Sie eine SQL Server-Feld in Virtual Server 2005 R2 lief und Rückgängig-Datenträger auf (so gedreht wurden, die Haupt „disk“ Datei bleibt gleich und alle Änderungen vorgenommen wurden in eine separate Datei die kann später gelöscht oder zusammengeführt werden). Dann geschieht etwas (in der Regel, Sie in die 128GB Grenze laufen oder was auch immer die Größe ist) und etwas mitten in der Nacht ahnungslos Admin neu zu starten hat und findet heraus, er nicht so tun kann, bis er die Rückgängig-Datenträger entfernt. Sie sind geschraubt -. Auch wenn er die Rückgängig-Datenträger-Dateien für eine spätere Analyse hält die Möglichkeiten der Zusammenführung zusammen, um die Daten ist ziemlich schlank

Echo So die anderen Beiträge in diesem Thread - für die Entwicklung groß es ist, aber es ist keine gute Idee, für die Produktion. Ihr Code kann wieder aufgebaut und umgeschichtet werden (das ist eine andere Sache, VM für die Quellcodeverwaltung sind keine gute Idee, entweder) aber Ihre Live-Produktionsdaten ist viel wichtiger.

Sicherheitsfragen, die eingeführt werden können, wenn sie mit Vitalisierung tun haben, sollten ebenfalls berücksichtigt werden. Security-Virtualisierung ein guter Artikel von Pandalabs ist, dass einige Abdeckungen die Bedenken.

Sie betrachten diese aus dem falschen Winkel. Erstens, Sie werden nicht White Paper von Anbietern zu finden, warum Sie sollten „nicht“ virtualisieren oder warum Sie virtualisieren sollen.

Jede Umgebung ist anders und Sie müssen tun, was in Ihrer Umgebung funktioniert. Mit dieser sagte, gibt es einige Server, die für die Virtualisierung sind perfekt, und es gibt einige, die nicht virtualisiert werden soll. Zum Beispiel hängen davon ab, ob der SQL Server / s Millionen und Millionen von Transaktionen pro Sekunde, wie wenn Ihr Server befand sich an der NYSE oder der NASDAQ und Millionen und Millionen von Dollar tun, sollten Sie es wahrscheinlich nicht virtualisieren. Stellen Sie sicher, dass Sie die Auswirkungen der Virtualisierung eines SQL-Servers verstehen.

Ich habe gesehen, wo die Menschen SQL immer nur virtualisieren, weil Virtualisierung cool. Dann beschwert später, wenn der VM-Server nicht wie erwartet.

Was Sie tun müssen, festgelegt ist eine Benchmark, testen Sie die Lösung vollständig Sie bereitstellen möchten und zeigen, was es kann und nicht so tun, können Sie in irgendwelche Überraschungen nicht laufen. Virtualisierung ist groß, es ist gut für die envronment und spart durch Konsolidierung, aber Sie müssen zeigen, warum Ihre Vorgesetzten, warum sollten Sie nicht Ihre SQL-Server virtualisieren und nur können Sie dies tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top