it-swarm.com.de

Was sind die Best Practices für die Ausführung von SQL Server in einer virtuellen Maschine?

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

21
JerryOL

Wie bei physischen Maschinen ist IO König. Es wird einen spürbaren IO Treffer durch die Virtualisierung geben (wie viel ein Treffer von der von Ihnen gewählten Technologie abhängt). Stellen Sie daher sicher, dass Sie nichts tun, was dies verschlimmern und die IO Leistung weiter beeinträchtigen könnte.

  • Verwenden Sie immer feste Festplatten, keine dynamischen virtuellen Festplatten, und stellen Sie sicher, dass die zugrunde liegenden Laufwerke/Arrays ausreichend sind. Dynamische Festplatten sind weniger leistungsfähig als Festplatten mit fester Größe.
  • Wenn die Daten in den VMs nicht geschäftskritisch sind, aktivieren Sie die Fähigkeit der VM - Lösungen, Schreibvorgänge zwischenzuspeichern (was das Gastbetriebssystem effektiv belügt, wenn Dinge physisch auf die Festplatte geschrieben werden), um zusätzliche Leistung zu erzielen. Dies ist nützlich für eine Entwicklungs- und Testmaschine, auf der die Daten leicht ersetzt werden können, oder für schreibgeschützte Replikate vor Ort, die bei Problemen neu erstellt werden können. Es wird jedoch empfohlen, solche Optionen für Produktions- und Sicherungssysteme wie nicht zu verwenden Sie erhöhen die Wahrscheinlichkeit eines Datenverlusts (oder schlimmer noch einer Beschädigung), wenn der Computer unerwartet ausgeschaltet wird.
  • Stellen Sie sicher, dass jedem VM genügend RAM zugewiesen ist, sodass der normale Arbeitssatz jeder Datenbank in den Speicher 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 die VMs RAM zu keinem Zeitpunkt ausblendet (z. B. können die meisten VMWare-Produkte dies, sodass Sie einen größeren Satz von VMs ausführen können, als Sie es sonst auf derselben Hardware tun könnten Der Leistungsabfall kann massiv sein - es besteht die Möglichkeit, dieses Verhalten zu optimieren oder auszuschalten.
  • Wenn der Host RAID5-Arrays verwendet, sollten Sie auf RAID10 umsteigen. Dies reduziert den verfügbaren Speicherplatz, beseitigt jedoch die Probleme mit der Schreibleistung, die bei RAID5 (oder 6) auftreten können.
  • Bei VMs, bei denen wahrscheinlich viele IO - Aktivitäten auftreten, sollten Sie erwägen, ihnen ein eigenes Laufwerk oder Array zu geben oder nur ihre Laufwerke/Arrays mit Daten zu teilen, bei denen eine geringe Aktivität festgestellt wird.

Wenn Ihre gesamte Datenbank (und alles andere, was die VM ausführt) in die der RAM zugewiesene VM passt und nur sehr wenig Schreibaktivität aufweist, kann die IO - Leistung dies natürlich viel weniger ein Problem sein.

Edit : noch ein paar Punkte:

  • Wenn Sie virtuelle Festplatten verwenden, stellen Sie sicher, dass der beste Controllertyp für die Leistung verwendet wird. Einige Virtualisierungslösungen bieten verschiedene Typen virtueller Controller für eine bessere Gastkompatibilität. Einige sind möglicherweise weniger effizient als andere, da das zu emulierende Design Protokollbeschränkungen und die Treiber des Gastbetriebssystems enthält.
  • Wenn Ihre Virtualisierungslösung bestimmte Treiber für den Controller des virtuellen Laufwerks bietet, stellen Sie sicher, dass Ihr Gastbetriebssystem diese verwendet. Diese können den Massenaufwand IO beschleunigen, indem die Anzahl der Speicher-zu-Speicher-Kopien und des Host-Hypervisors <verringert wird -> Gastkontextschalter, die an einigen Vorgängen beteiligt sind.
  • Die beiden oben genannten Punkte gelten, wenn Sie Netzwerkspeicher wie einfache SMB - Freigaben oder iSCSI verwenden: Stellen Sie sicher, dass Sie den effizientesten angebotenen virtuellen Netzwerkcontroller verwenden und Ihr Gastbetriebssystem den empfohlenen Treiber dafür verwendet Andernfalls können sowohl die Latenz als auch die Bandbreite geringer sein als von der Virtualisierungsschicht benötigt.
18
David Spillett