Was sind die Best Practices zum Ausführen von SQL Server in einer virtuellen Maschine?

21

Was sind die Best Practices zum Ausführen von SQL Server in einer virtuellen Maschine? Meine Online-Transaktionsaktivitäten sind sehr gering, aber es wird eine große Menge an Daten verarbeitet, um Berichtsdaten für mehrere Websites bereitzustellen.

JerryOL
quelle
2
Wo werden die Festplatten gelagert? auf einer lokalen Festplatte mit 5400 U / min? In einem SAN mit Glasfaserverbindungen und Festplatten mit 15.000 Spindeln? Bei allen VMs geht es heutzutage um E / A, bei der CPU geht es fast gar nicht mehr ums Überlegen.
Jcolebrand
Nein, nicht lokal. Aber ich kenne die Details des SAN nicht.
JerryOL
2
Ich kann keine Kommentare hinzufügen, da ich noch nicht genug Reputation habe, aber [laut Microsoft] [1] in 2008 R2 gibt es kaum Leistungsunterschiede zwischen festen und dynamischen virtuellen Laufwerken. [1]: blogs.msdn.com/b/tvoellm/archive/2009/08/05/…
Terry Bochaton
@ Terry, zögern Sie nicht, in Zukunft eine solche Antwort zu markieren, und wir werden sie für Sie konvertieren.
Jcolebrand

Antworten:

18

Wie bei physischen Maschinen ist IO König. Durch die Virtualisierung wird ein spürbarer E / A-Schlag verursacht (wie stark der Schlag von der ausgewählten Technologie abhängt). Vergewissern Sie sich daher, dass Sie nichts unternehmen, was dies verschlimmern und die E / A-Leistung weiter beeinträchtigen könnte.

  • Verwenden Sie immer eine feste Größe, keine dynamischen virtuellen Laufwerke, und stellen Sie sicher, dass die zugrunde liegenden Laufwerke / Arrays ausreichen. Dynamische Festplatten sind weniger performant als Festplatten mit fester Größe.
  • Wenn die Daten in den VMs nicht geschäftskritisch sind, aktivieren Sie die Funktion der VM-Lösungen zum Zwischenspeichern von Schreibvorgängen (die tatsächlich dem Gastbetriebssystem über die physischen Schreibvorgänge auf die Festplatte übertragen werden), um zusätzliche Leistung zu erzielen. Dies ist nützlich für einen Entwicklungs- und Testcomputer, auf dem die Daten leicht ausgetauscht werden können, oder für schreibgeschützte Replikate vor Ort, die bei Problemen wiederhergestellt werden können. Es wird jedoch empfohlen, diese Optionen für Produktions- und Sicherungssysteme wie z Sie erhöhen die Wahrscheinlichkeit eines Datenverlusts (oder, schlimmer noch, einer Beschädigung), wenn sich der Computer unerwartet ausschaltet.
  • Stellen Sie sicher, dass jeder VM genügend Arbeitsspeicher zugewiesen ist, sodass der normale Arbeitsspeicher jeder Datenbank in den Arbeitsspeicher passt und ausreichend Platz zur Verfügung steht, um unnötige E / A-Vorgänge zu vermeiden. Stellen Sie außerdem sicher, dass der Hypervisor den Arbeitsspeicher der VMs zu keinem Zeitpunkt auslagert (z. B. können die meisten VMWare-Produkte dies, wodurch Sie einen größeren Satz von VMs ausführen können, als Sie es ansonsten auf derselben Hardware könnten, was jedoch zu Leistungseinbußen führen kann massiv sein - es gibt eine Option, um dieses Verhalten zu optimieren oder zu deaktivieren).
  • Wenn der Host RAID5-Arrays verwendet, ziehen Sie den Wechsel zu RAID10 in Betracht. Dies verringert den verfügbaren Speicherplatz, beseitigt jedoch die Schreibleistungsprobleme, die bei RAID5 (oder 6) auftreten können.
  • Bei VMs, bei denen wahrscheinlich viele E / A-Aktivitäten auftreten, sollten Sie ein eigenes Laufwerk oder Array zuweisen oder nur die Laufwerke / Arrays für Daten freigeben, bei denen nur geringe Aktivitäten zu verzeichnen sind.

Wenn Ihre gesamte Datenbank (und alles andere, was auf der VM ausgeführt wird) in den der VM zugewiesenen Arbeitsspeicher passt und nur eine sehr geringe Schreibaktivität festgestellt wird, kann die E / A-Leistung ein weitaus geringeres Problem darstellen.

Edit: noch ein paar Punkte:

  • Wenn Sie virtuelle Laufwerke verwenden, stellen Sie sicher, dass der beste Controllertyp für die Leistung verwendet wird. Einige Virtualisierungslösungen bieten verschiedene Arten von virtuellen Controllern für eine bessere Gastkompatibilität. Einige sind möglicherweise weniger effizient als andere, da das emulierte Design des Protokolls und die Treiber des Gastbetriebssystems Einschränkungen unterliegen.
  • Wenn Ihre Virtualisierungslösung spezielle Treiber für den virtuellen Laufwerkscontroller bietet, stellen Sie sicher, dass Ihr Gastbetriebssystem diese verwendet. Diese können die Massen-E / A beschleunigen, indem Sie die Anzahl der Speicher-zu-Speicher-Kopien und den Host <-> Hypervisor <-> Gastkontext verringern Schalter, die an einigen Operationen beteiligt sind.
  • Die beiden obigen Punkte gelten, wenn Sie Netzwerkspeicher wie einfache SMB-Freigaben oder auch iSCSI verwenden: Stellen Sie sicher, dass Sie den effizientesten verfügbaren virtuellen Netzwerkcontroller verwenden und Ihr Gastbetriebssystem den dafür empfohlenen Treiber verwendet, andernfalls beide Wartezeiten und die Bandbreite kann durch die Virtualisierungsschicht begrenzter als erforderlich sein.
David Spillett
quelle
1
Ja und nein Ein SAN-Volume, das über einen iSCSI-Initiator in die VM eingebunden wird, ist verdammt schnell!
Gaius
1
@ Gaius: guter Punkt. Ich habe einen Hinweis zu vNICs und Treibern hinzugefügt, die in diesen Fällen wahrscheinlich zu zusätzlichen Engpässen führen.
David Spillett
9

Hier ist ein guter Ausgangspunkt: http://www.brentozar.com/sql/virtualization-best-practices/ und http://sqlskills.com/blogs/brent/category/Virtualization.aspx

Eric Humphrey - Lotsahelp
quelle
1
~ Gibt es Teile davon, die Sie aus den Artikeln hervorheben möchten?
Jcolebrand
2
Nein. Da Virtualisierung ein komplexes Thema sein kann, empfehle ich, alles zu lesen. Es ist nicht wirklich so viel. Wenn das OP nach einer schnellen Antwort sucht, ist dies wahrscheinlich nicht die richtige Antwort.
Eric Humphrey - Lotsahelp
Ich war nach Best Practices im Allgemeinen. Nachdem ich gerade SQLServer 2000 Standard auf eine neue VM verschoben habe, versuche ich, Probleme mit Websites zu beheben, die gespeicherte Prozeduren aufrufen, die jetzt eine Zeitüberschreitung aufweisen, wenn sie nicht im Arbeitsspeicher zwischengespeichert sind. Auch wenn der physische und der VM-zugewiesene Speicher identisch sind, 4 GB.
JerryOL
1
@JerryOL: Stellen Sie sicher, dass das der VM zugewiesene RAM nicht ausgelagert werden darf (andernfalls entspricht die Zuweisung von 4 GB für die VM nicht der Zuweisung von 4 GB auf der physischen Maschine) und dass die von Ihnen verwendete Virtualisierungslösung unterschiedliche Typen von virtuellen Controllern bietet stellt sicher, dass der beste ausgewählt und der richtige Treiber vom Gastbetriebssystem verwendet wird.
David Spillett