Frage Was sind die Nachteile beim Ausführen einer Datenbank in einer virtuellen Maschine? Wie überwinde ich sie? [geschlossen]


Wenn Sie etwas in einer virtuellen Maschine ausführen, wird die Leistung beeinträchtigt, aber wie viel kostet es Ja wirklich die Leistung eines Datenbanksystems beeinträchtigen?

ich fand dieses akademische Referenzpapier mit einigen interessanten Benchmarks, aber es war ein begrenzter Test nur mit Xen und PostgreSQL. Die Schlussfolgerung war, dass die Verwendung einer VM "nicht zu hohen Kosten in der Leistung führt" (obwohl Sie vielleicht denken, dass die tatsächlichen Daten etwas anderes aussagen).

Welche technischen, administrativen und anderen Nachteile hat die Ausführung einer Datenbank in einer virtuellen Maschine?

Bitte posten Sie Antworten, die durch objektive Fakten belegt werden können. Ich bin nicht interessiert an Spekulationen oder anderen halb-religiösen Argumenten (Geek-Leidenschaft ist in vielerlei Hinsicht gut, aber das hilft uns hier nicht).

Davon abgesehen,

  • Welche Probleme treten auf, wenn eine Datenbank in einer virtuellen Maschine ausgeführt wird? (Bitte Referenzen eintragen)
  • Sind diese Probleme signifikant?      
    • Sind sie nur in bestimmten Szenarien von Bedeutung?
  • Was sind die Problemumgehungen?

64
2017-09-01 14:03


Ursprung


+1 Ich bin hauptsächlich daran interessiert, Feedback zu SQL Server- und Windows 2008 R2-Szenarien zu hören - random65537
@ Shane Madden - Können Sie bitte die Schließung ein wenig erklären? Ich erwarte, dass die Motivation von einem unspezifischen motiviert wurde Antworten (was dann in den Kommentaren entgleist), nicht die Frage selbst. In Bezug auf die Frage, 44 Stimmen und 12 Favoriten innerhalb von etwa einem Tag vor der Schließung Existenz bedeutet für mich, dass es eine gute Frage mit nützlichen Antworten / Informationen war (insbesondere im Vergleich zu was scheint typisch für ServerFault Frage Verkehr). Darauf zielen die verschiedenen SE-Standorte ab. Hättest du eine spezifischere Fragestellung bevorzugt, im Gegensatz zu dem losen "wie schlimm ist es?". - Russ
@ErikA, Shane, Womble, MikeB, Ben - Ich habe eine Community-Bearbeitung vorgenommen, die diese Frage konstruktiver machen könnte. Überlegen Sie, ob Sie dies erneut öffnen oder eine ähnliche Frage zu einer neuen / sauberen Frage stellen. - random65537


Antworten:


Obwohl viele DB-Anbieter dies nur sehr langsam tun, unterstützen jetzt fast alle offiziell ihre Software in einer virtualisierten Umgebung.

Wir betreiben viele Oracle 11g-Instanzen in Linux zusätzlich zu ESXi, und es ist sicherlich möglich, eine sehr gute Leistung zu erzielen. Wie bei jeder Hardware-Skalierung müssen Sie nur sicherstellen, dass die Virtualisierung Wirt hat viele Ressourcen (RAM, CPU), und Ihre Festplattenschicht ist für die Bereitstellung der von Ihnen benötigten E / A-Leistung geeignet.


41
2017-09-01 14:35



+1 Wie bereits erwähnt, Kritisch, dass die Ressourcen der Aufgabe gewachsen sind. Die Festplatte war der große Engpass für uns und eine sorgfältige Planung ist erforderlich. - Dave M
+1 Sie müssen Ihre Hausaufgaben in der Datenbank machen Verwendungszweck vor der Zeit. Wenn Ihre physische Box über 40% Auslastung gehämmert wird, beginnen Ihre Vorteile für vm'ing es zu lösen. Davon abgesehen haben wir Tonnen kleiner anwendungsspezifischer isolierter SQLs, die problemlos auf VMs laufen. Aber unsere großen Heavy-User-Maschinen haben wegen des fehlenden Vorteils dedizierte Hardware. - Nate
Definitiv ist Disk IO der große Schuldige, und welche virtualisierten Umgebungen neigen dazu, flockig zu sein. - lynxman
@lynxman - Einverstanden. Wir betreiben alle unsere Oracle-Instanzen auf unseren Tier-1-SAN-Festplatten, bei denen es sich um 15k-SAS handelt. Von dem, was ich sagen kann, bekommen wir sehr nah an der nativen Leistung. - EEAA
"Eine Unze Test ist ein Pfund wert." - Chris B. Behrens


Wie ErikA sagt, wird dies mehr und mehr üblich. Ich bin im SQL Server-Lager und habe keine Produktionssysteme in virtuellen Maschinen, aber ich würde nicht zögern (nach ein wenig mehr Studie zu diesem Thema). Es gibt jedoch einige Dinge zu beachten, bevor Sie diesen Pfad (zumindest für SQL Server) gehen. Disk IO (wie andere bereits erwähnt haben) und Speicherzuweisung sind nur zwei Beispiele. Die Dinge werden auch zwischen verschiedenen Hypervisoren unterschiedlich sein.

Brent Ozar ist ein anerkannter Experte für die Virtualisierung von SQL Server, speziell in VMWare. Ich würde sehr empfehlen, sein Material durchzulesen.

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


21
2017-09-01 15:00





Es gibt können und dann ist da sollte. Eine Korvette kann 150 mph gehen, aber sollten Sie auf öffentlichen Autobahnen? Sie können sich unnötig verletzen.

Datenbanken sind Gastbetriebssysteme. Wenn sie beginnen, greifen sie beim Entwurf auf Blöcke einer Ressource zu und verwalten sie direkt aus Leistungsgründen. Sobald Sie das Kernbetriebssystem des Datenbankservers zu einem Gast in einer virtualisierten Hosting-Umgebung machen, platzieren Sie eine Arbitrationsebene mit dem Hypervisor zwischen dem blockzugewiesenen Element von Disk und RAM und dem Datenbankserver. Es wird langsamer. Je ineffizienter Ihre Abfragen sind, desto langsamer wird es. Diese Ineffizienzen können heute auf dedizierter Hardware maskiert werden, aber sobald Sie eine Arbitration für Ihre abhängigen Ressourcen einführen, werden Sie es schnell herausfinden.

Was viele Bean Counter, die die Virtualisierung fordern, nicht erkennen, ist, dass Datenbankserver als Gastbetriebssysteme eine eigene Konsolidierungsschicht bieten. Es gibt keinen Grund, warum Sie mehrere logische Datenbankinstanzen nicht auf einem physischen Server konsolidieren können, nicht einmal bis zu dem Punkt, an dem IP-Adressen verschoben, zusätzliche Hostnamen eingerichtet werden usw., damit diese natürliche Zusammenführung von Diensten stattfinden kann. Und mit diesem Modell behalten Sie nicht nur die Kosteneinsparungen, die das Management für eine reduzierte Anzahl von physischen Hosts anstrebt, sondern Sie behalten den Blockzugriff auf physische Ressourcen ohne das Aufkommen des willkürlichen Hypervisors, der manchmal positive Entscheidungen treffen kann und nicht Andere.

Dasselbe gilt für andere Gastbetriebssysteme wie Java. Virtualisierungslösungen sind typischerweise stark ausgelastete Umgebungen, und der Hypervisor muss viele Entscheidungen darüber treffen, wer das Token auf einer Ressource erhält. Immer wenn du diese Schicht eliminierst, wirst du besser dran sein.

Koaleszieren Sie mehrere Instanzen, indem Sie zuerst den Layer des natürlichen Gastbetriebssystems verwenden. Wahrscheinlich werden Sie Ihre Plattform-Konsolidierungs- und Leistungsziele leichter erreichen können.


11
2017-09-01 18:01



Interessante Definition von "Gastbetriebssystem." Während Ihre Frage in Bezug auf reine, unverfälschte Leistung ist, wie oft sind Ihre Datenbanken wirklich Engpaß in der CPU? E / A ist viel wahrscheinlicher, und für Anwendungen mit höherer Leistung teilen Sie bereits die E / A-Zeit in einem SAN. Ich würde hoffen, dass Sie Ihre Virtualisierungsphilosophie überdenken, wenn ein Sicherheitsproblem mit einer Anwendung alle Kennworthashes Ihrer konsolidierten Datenbanken gefährdet oder wenn ein in Ihrer JVM ausgeführter Prozess jedes Byte verfügbaren Heapspeichers verbraucht. - Shane Madden♦
Um es klar zu sagen, ich stimme vollkommen zu, dass ein fein abgestimmter, stark ausgelasteter Hochleistungs-Datenbankserver seine eigene physische Hardware haben sollte. Aber das sind nicht die Norm und die anderen Vorteile der Virtualisierung neigen dazu, den Performance-Hit zu überwiegen, der mit den meisten Workloads nicht zu unterscheiden ist. - Shane Madden♦
Ich stimme nicht mit Ihrem Punkt überein, dass Sie immer zuerst zu den vorhandenen Konsolidierungsschichten gehen. Manchmal macht das Sinn. Aber schauen Sie sich zum Beispiel den Kostenausgleich bei der Neuverteilung von Ressourcen zwischen der Konsolidierung mehrerer Datenbanken in einem einzelnen Betriebssystem und der Konsolidierung mehrerer Datenbank- / Betriebssystemkombinationen auf einem Hypervisor an. Das erste ist effizienter. Die zweite ist viel leichter zu rebalancieren. Das Migrieren von OS / database auf einen neuen Host ist weniger störend als das Migrieren einer Datenbank auf ein neues OS. - Jake Oshins
Meine Kommentare stammen aus direkten Beobachtungen von erfolgreichen und fehlgeschlagenen Migrationen zu Virtualisierungslösungen in den letzten zehn Jahren als Performance Engineer. Es gibt Unmengen von schlechten Datenbank-Apps, deren promiskuitive Verwendung von Hardware Leistungsprobleme maskiert. Add Virtualisierung und diese Probleme kommen ans Licht. Wenn Sie eine App haben, die eine genaue Uhr für Timing- oder Prüfzwecke verlangt, dann sind Sie mit der Uhr in der Software-Virtualisierung nicht mehr auf der Jagd. - James Pulley
Wow, einfach James. Ich habe weder die Zeit noch die Geduld, all die Punkte, die Sie in Ihrer Antwort und den folgenden Kommentaren gemacht haben, zu verwerfen, aber ich fühlte, dass ich hier einen Kommentar für jeden abgeben musste, der auf diese Antwort kommen könnte. James 'Ansichten sind, nun, seine eigenen und reflektieren nicht, was wirklich möglich ist. Wenn Sie dann überzeichnet sind Na sicher Du wirst schlechte Leistung haben. Also überlisten Sie nicht. Es ist durchaus möglich, eine sehr leistungsstarke Virtualisierungsumgebung zu haben. Es ist Torheit, eine umfassende Empfehlung dagegen zu machen, weil es schlecht abschneidet. - EEAA


Hier sind zwei Dinge zu realisieren:

  • Die Einheit der DB-Leistung pro Hardwareeinheit ist für eine virtualisierte Datenbank etwas niedriger. Dies bedeutet, dass Sie ein wenig mehr Hardware kaufen müssen, um das gleiche Leistungsniveau zu erreichen.
  • Das bedeutet nicht, dass das gleiche Niveau oder ein gewünschtes Leistungsniveau nicht erreichbar ist. Die Vorteile, die Sie durch verbessertes Management und andere Vorteile (wie z. B. einfachere HA) erhalten, sind oft vorhanden Weg die geringfügig erhöhten Hardwarekosten mehr als ausgleichen.

Das heißt, wo ich arbeite, ist unsere Sql Server Installation einer von nur zwei Servern, die ich nicht in nächster Zeit virtualisieren möchte (der andere ist der primäre DC).


6
2017-09-01 15:11





Wenn Sie SQL Server ausführen, ist eine VM in Ordnung, vorausgesetzt, Sie können der VM genügend Ressourcen bereitstellen, um Ihre Anwendung auszuführen. Wenn Sie in der physischen Welt 24 Kerne und 256 Gigabyte RAM benötigen, müssen Sie in der virtuellen Welt 24 vCPUs und 256 Gigabyte RAM bereitstellen.

Ich habe gerade schrieb einen Artikel in den letzten Monaten SQL Server Magazin alles über das Ausführen von SQL Server unter VMware vSphere.


4
2017-09-02 00:26





Ich betreibe zwei Datenbanken, eine PostgreSQL und die andere MySQL, in einer virtuellen Umgebung (Xen), wo die dom0s hochverfügbar sind. domU-Dateisysteme befinden sich alle auf einer iSCSI-SAN-LUN, die mit logischen LVM2-Datenträgern unterteilt ist. Die MySQL-Datenbank ist ausschließlich für Cacti gedacht und wird daher kaum verwendet. Sie befindet sich ebenfalls auf der iSCSI-LUN.

Die PostgreSQL-Datenbank ist die Datenbank für unsere Staging-Umgebung und sieht daher eine höhere Auslastung als die MySQL-Datenbank. Aus diesem Grund befindet sich die Datenbank auf einem lokalen RAID10-Set und DRBD repliziert auf den zweiten Cluster-Knoten. In Bezug auf die tatsächliche Last wird diese Staging-Datenbank jedoch nicht sehr stark belastet. Was meiner Meinung nach ein guter Kandidat für die Virtualisierung ist.

Einige der Vorteile für unser Unternehmen waren der reduzierte Stromverbrauch, weniger Platz im Rack und weniger Verwaltungsaufwand für die Hardware.

Unsere Hauptproduktionsdatenbank andererseits kann ich mir nicht vorstellen, virtuell zu gehen ....


2
2017-09-01 19:00





Ich arbeite mit MSSQL- und MySQL-Servern auf zahlreichen Servern. Vor ein paar Jahren zögerte ich, SQL-Server auf VMs einzurichten, weil ich von den Leistungsproblemen beim Ausführen eines SQL-Servers auf einer VM gehört hatte. Ich war jedoch überrascht, nachdem ich meine ersten paar SQL-Server eingerichtet hatte und keine Veränderung der Leistung sah. Immer mehr der Server, auf denen ich arbeite, sind auf VM, und fast alle größeren Unternehmenskunden, für die ich arbeite, haben virtualisierte SQL-Server.

Ja, die VM fügt einige Overhead-Kosten hinzu und wenn Sie mehrere VMs auf einer einzigen Box hosten werden, brauchen Sie einen schönen, bulligen Server. Ein allgemeines Ressourcenproblem, auf das Sie achten sollten, ist das Hinzufügen zusätzlicher VMs und das Ausdünnen der verfügbaren Ressourcen. Es ist üblich, etwas Wachstum zu planen, aber wenn Sie Ihren Server gekauft haben, um 2 oder 3 VMs zu hosten und jetzt 10 VMs laufen, werden Sie wahrscheinlich einen Leistungseinbruch erleben.

Ich würde lügen, wenn ich sagte, dass ich Leistungsprobleme nie gesehen habe, die einen SQL-Server auf einer VM laufen lassen. Aber ich habe gelernt, dass, wenn Sie schlechte Leistung sehen, wahrscheinlich etwas mit der Umwelt nicht stimmt.


2
2017-09-02 03:26