Das Ausführen von Elementen in einer virtuellen Maschine hat gewisse Leistungseinbußen zur Folge. Inwieweit wirkt sich dies jedoch wirklich auf die Leistung eines Datenbanksystems aus?
Ich fand dieses akademische Nachschlagewerk mit einigen interessanten Benchmarks, aber es war nur ein eingeschränkter Test mit Xen und PostgreSQL. Die Schlussfolgerung war, dass die Verwendung einer VM "keine hohen Kosten für die Leistung mit sich bringt" (obwohl Sie vielleicht glauben, dass die tatsächlichen Daten etwas anderes aussagen).
Welche technischen, administrativen und sonstigen Nachteile ergeben sich beim Ausführen einer Datenbank in einer virtuellen Maschine?
Bitte poste Antworten, die durch objektive Fakten gestützt werden können. Ich bin nicht an Spekulationen oder anderen semireligiösen Argumenten interessiert.
Davon abgesehen
- Welche Probleme treten auf, wenn eine Datenbank in einer virtuellen Maschine ausgeführt wird? (bitte Referenzen posten)
- Sind diese Probleme von Bedeutung?
- Sind sie nur in bestimmten Szenarien von Bedeutung?
- Was sind die Problemumgehungen?
Antworten:
Obwohl viele DB-Anbieter dies nur sehr langsam erledigten, unterstützen mittlerweile fast alle ihre Software offiziell in einer virtualisierten Umgebung.
Wir betreiben viele Oracle 11g-Instanzen unter Linux auf ESXi, und es ist sicherlich möglich, eine sehr gute Leistung zu erzielen. Wie bei all Hardware - Skalierung, Sie müssen nur sicherstellen , dass die Virtualisierung Host viele Ressourcen (RAM, CPU) hat, und dass Ihre Plattenschicht bis zu der Aufgabe der Bereitstellung von was auch immer IO Leistung , die Sie benötigen.
quelle
Wie ErikA sagt, wird dies immer häufiger. Ich bin im SQL Server-Camp und habe keine Produktionssysteme, auf denen VMs ausgeführt werden, aber ich würde nicht zögern (nach einer weiteren Untersuchung des Themas). Es gibt jedoch auf jeden Fall einige Punkte zu beachten, bevor Sie diesen Weg einschlagen (zumindest für SQL Server). Festplatten-E / A (wie bereits erwähnt) 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, insbesondere in VMWare. Ich kann nur empfehlen, sein Material durchzulesen.
http://www.brentozar.com/community/virtualization-best-practices/
quelle
Es gibt Dose und dann sollte es . Eine Korvette kann 150 Meilen pro Stunde gehen, aber sollten Sie auf öffentlichen Autobahnen? Sie können sich unnötig verletzen.
Datenbanken sind Gastbetriebssysteme. Wenn sie anfangen, greifen sie gezielt nach Blöcken einer Ressource und verwalten sie aus Leistungsgründen direkt. Sobald Sie das Kernbetriebssystem des Datenbankservers zu einem Gast in einer virtualisierten Hosting-Umgebung machen, platzieren Sie eine Arbitrierungsschicht mit dem Hypervisor zwischen dem blockzugeordneten Element von Festplatte und RAM und dem Datenbankserver. Es wird langsamer. Je ineffizienter Ihre Abfragen sind, desto langsamer wird es. Diese Ineffizienzen können heute möglicherweise auf dedizierter Hardware ausgeblendet werden. Sobald Sie jedoch eine Schlichtung für Ihre abhängige Ressource einführen, werden Sie schnell feststellen, ob dies der Fall ist.
Viele Bean-Counter, die Virtualisierung benötigen, erkennen nicht, dass Datenbankserver als Gastbetriebssysteme eine eigene Konsolidierungsebene bieten. Es gibt keinen Grund, warum Sie nicht mehrere logische Datenbankinstanzen auf einem physischen Server konsolidieren können, selbst wenn Sie IP-Adressen verschieben, zusätzliche Hostnamen einrichten usw., um diese natürliche Zusammenführung von Diensten zu ermöglichen. Und mit diesem Modell behalten Sie nicht nur die Kosteneinsparungen bei, die das Management für eine verringerte Anzahl physischer Hosts erzwingt, sondern Sie behalten auch den Blockzugriff auf physische Ressourcen bei, ohne dass der willkürliche Hypervisor hiervon betroffen ist, der manchmal nützliche Entscheidungen treffen kann und nicht Andere.
Gleiches gilt für andere Gastbetriebssysteme wie Java. Virtualisierungslösungen sind normalerweise geschäftige Umgebungen und der Hypervisor muss viele Entscheidungen darüber treffen, wer das Token für eine Ressource erhält. Wann immer Sie diese Schicht beseitigen können, werden Sie besser dran sein.
Verbinden Sie mehrere Instanzen zuerst mithilfe der natürlichen Gastbetriebssystemschicht. Wahrscheinlich können Sie Ihre Plattformkonsolidierungs- und Leistungsziele leichter erreichen.
quelle
Hier sind zwei Dinge zu realisieren:
Das heißt, wo ich arbeite, ist unsere SQL Server-Installation einer von nur zwei Servern, die ich nicht in naher Zukunft virtualisieren möchte (der andere ist der primäre Domänencontroller).
quelle
Das Ausführen von SQL Server als VM ist 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 GB RAM benötigen, müssen Sie in der virtuellen Welt 24 vCPUs und 256 GB RAM bereitstellen.
Ich habe gerade in den letzten Monaten einen Artikel im SQL Server-Magazin geschrieben, in dem es darum geht, SQL Server unter VMware vSphere auszuführen.
quelle
Ich verwende zwei Datenbanken, eine PostgreSQL- und eine MySQL-Datenbank, in einer virtuellen Umgebung (Xen), in der die dom0s hoch verfügbar sind. domU-Dateisysteme befinden sich alle auf einer iSCSI-SAN-LUN, die aus logischen LVM2-Volumes besteht. Die MySQL-Datenbank ist ausschließlich für Cacti bestimmt und wird daher kaum genutzt. Sie befindet sich auch auf der iSCSI-LUN.
Die PostgreSQL-Datenbank ist die Datenbank für unsere Staging-Umgebung und wird daher stärker ausgelastet als die MySQL-Datenbank. Aus diesem Grund befindet sich die Datenbank in einem lokalen RAID10-Satz und DRBD wird auf den zweiten Clusterknoten repliziert. In Bezug auf die tatsächliche Auslastung sieht diese Staging-Datenbank jedoch überhaupt keine sehr hohe Auslastung. Das macht es meiner Meinung nach zu einem guten / großartigen Kandidaten für die Virtualisierung.
Einige der Vorteile für unser Unternehmen waren der geringere Stromverbrauch, der eingesparten Rack-Platz und der geringere administrative Hardware-Aufwand.
Unsere Hauptproduktionsdatenbank hingegen kann ich mir nicht vorstellen, virtuell zu werden ...
quelle
Ich arbeite mit MSSQL- und MySQL-Servern auf zahlreichen Servern. Vor ein paar Jahren zögerte ich, mit dem Einrichten von SQL-Servern auf VMs zu beginnen, da ich von den Leistungsproblemen beim Ausführen eines SQL-Servers auf einer VM erfahren hatte. Ich war jedoch überrascht, als ich meine ersten SQL-Server einrichtete und keine Änderung der Leistung feststellte. Immer mehr der Server, auf denen ich arbeite, befinden sich auf VM und fast alle größeren Enterprise-Clients, für die ich arbeite, haben SQL-Server virtualisiert.
Ja, die VM verursacht zusätzliche Kosten. Wenn Sie mehrere VMs auf einer einzigen Box hosten möchten, benötigen Sie einen leistungsstarken Server. Ein häufiges Problem bei Ressourcen ist das Hinzufügen zusätzlicher VMs und das Ausdünnen der verfügbaren Ressourcen. Es ist gängige Praxis, ein gewisses Wachstum zu planen. Wenn Sie Ihren Server jedoch für das Hosten von 2 oder 3 VMs gekauft haben und jetzt 10 VMs ausführen, wird die Leistung wahrscheinlich beeinträchtigt.
Ich würde lügen, wenn ich sagen würde, dass ich noch nie Leistungsprobleme beim Ausführen eines SQL-Servers auf einer VM gesehen habe. Ich habe jedoch erfahren, dass bei einer schlechten Leistung möglicherweise etwas mit der Umgebung nicht stimmt.
quelle