Unterschied zwischen Xen PV, Xen KVM und HVM?

53

Ich weiß, dass Xen normalerweise besser ist als OpenVZ, da der Anbieter Xen nicht übertreiben kann. Doch was ist der Unterschied zwischen Xen PV, Xen KVMund HVM(ich durch diesen Anbieter gehe specs ? Welche ist besser für welche Zwecke und warum?


Bearbeiten:

Für einen Endbenutzer, der nur Websites hostet, was ist besser? Gibt es unter Effizienz- oder anderen Gesichtspunkten einen Vorteil gegenüber dem anderen?


quelle

Antworten:

47

Von Xen unterstützte Virtualisierungstypen

Xen unterstützt die Ausführung von zwei verschiedenen Gasttypen. Xen-Gäste werden häufig als domUs (unprivilegierte Domänen) bezeichnet. Beide Gasttypen (PV, HVM) können gleichzeitig auf einem einzelnen Xen-System verwendet werden.

Xen-Paravirtualisierung (PV)

Die Paravirtualisierung ist eine effiziente und einfache Virtualisierungstechnik, die von Xen eingeführt und später auch von anderen Virtualisierungslösungen übernommen wurde. Für die Paravirtualisierung sind keine Virtualisierungserweiterungen von der Host-CPU erforderlich. Paravirtualisierte Gäste benötigen jedoch einen speziellen Kernel, der für die native Ausführung unter Xen portiert ist, damit die Gäste den Hypervisor kennen und ohne Emulation oder virtuell emulierte Hardware effizient ausgeführt werden können. Xen PV-Gastkerne gibt es für die Betriebssysteme Linux, NetBSD, FreeBSD, OpenSolaris und Novell Netware.

PV-Gäste haben keine virtuell emulierte Hardware, aber eine grafische Konsole mit Guest-PvFB (Paravirtual Framebuffer) ist weiterhin möglich. Die grafische Konsole des PV-Gasts kann mit dem VNC-Client oder Redhats virt-viewer angezeigt werden. In dom0 gibt es einen separaten VNC-Server für die PVFB jedes Gasts.

Upstream kernel.org Linux-Kernel seit Linux 2.6.24 bieten Xen PV Guest (domU) -Unterstützung basierend auf dem Linux pvops-Framework, sodass jeder Upstream-Linux-Kernel automatisch als Xen PV Guest-Kernel ohne zusätzliche Patches oder Änderungen verwendet werden kann.

Weitere Informationen zur Unterstützung von Linux pvops Xen finden Sie auf der XenParavirtOps-Wiki-Seite.

Xen-Vollvirtualisierung (HVM)

Vollständig virtualisierte aka HVM-Gäste (Hardware Virtual Machine) benötigen CPU-Virtualisierungserweiterungen von der Host-CPU (Intel VT, AMD-V). Xen verwendet eine modifizierte Version von Qemu, um die gesamte PC-Hardware zu emulieren, einschließlich BIOS, IDE-Festplattencontroller, VGA-Grafikadapter, USB-Controller, Netzwerkadapter usw. für HVM-Gäste. CPU-Virtualisierungserweiterungen werden verwendet, um die Leistung der Emulation zu steigern. Für vollständig virtualisierte Gäste ist kein spezieller Kernel erforderlich, sodass beispielsweise Windows-Betriebssysteme als Xen HVM-Gast verwendet werden können. Vollständig virtualisierte Gäste sind aufgrund der erforderlichen Emulation normalerweise langsamer als paravirtualisierte Gäste.

Um die Leistung zu steigern, können vollständig virtualisierte HVM-Gäste spezielle paravirtuelle Gerätetreiber verwenden, um die Emulation für Festplatten- und Netzwerk-E / A zu umgehen. Xen Windows HVM-Gäste können die OpenSource-GPLPV-Treiber verwenden. Weitere Informationen zu Xen PV-on-HVM-Treibern für Linux HVM-Gäste finden Sie auf der Wiki-Seite XenLinuxPVonHVMdrivers.

Dies ist von http://wiki.xenproject.org/wiki/XenOverview

KVM ist überhaupt kein Xen, sondern eine andere Technologie, bei der KVM ein natives Linux-Kernelmodul und kein zusätzlicher Kernel wie Xen ist. Was KVM zu einem besseren Design macht. Der Nachteil hierbei ist, dass KVM neuer als Xen ist und daher möglicherweise einige der Funktionen fehlen.

dyasny
quelle
9
+1 KVM ist überhaupt nicht Xen. Es ist völlig uneinig, dass KVM ein besseres Design ist. Xen bietet eine viel bessere Isolation und hängt nicht vom Linux-Kernel und dessen potenziellen Schwachstellen ab.
Antoine Benkemoun
2
Danke für die Information! Ich konnte nicht alles verstehen. Wer wird aus Sicht des Endbenutzers nur Websites hosten, was ist besser? Gibt es einen signifikanten Vorteil gegenüber dem anderen?
2
Xen hat seine eigenen Schwachstellen. Aber ein Betriebssystem mit zwei bootstrapten Kerneln zu betreiben, ist ein Designfehler, egal wie gut Sie es machen
dyasny
1
JP19: Das hängt von den Webseiten ab. Wenn Sie die Belastung des VPS definieren können, können Sie hier oder bei Google nach der besten Lösung fragen.
Dyasny
2
Xen ist ein Hypervisor, ebenso wie KVM. KVM verfügt über PV-Geräte und erhöht mit der Zeit auch die Anzahl der PCI-Passthrough-Geräte. Ich verstehe den Sinn Ihrer Argumentation also nicht, Nils
dyasny.
32

Xen ist ein Hypervisor, der auf Metall (dem PC / Server) ausgeführt wird und dann virtuelle Maschinen hostet, die als Domänen bezeichnet werden.

Eine Xen PVDomain ist eine paravirtualisierte Domain. Dies bedeutet, dass das Betriebssystem (normalerweise Linux) so geändert wurde, dass es unter Xen ausgeführt werden kann, und dass keine Hardware-Emulation erforderlich ist. Dies sollte in Bezug auf die Leistung der effizienteste Weg sein.

Eine Xen HVMDomain ist eine Hardware-emulierte Domain. Das bedeutet, dass das Betriebssystem (Linux, Windows usw.) in keiner Weise geändert wurde und die Hardware emuliert wird. Dies ist ziemlich langsam. In der Regel installieren Sie PV-Treiber für kritische Hardware (in der Regel Festplatte und Netzwerk) im Gastbetriebssystem, sodass der Gast als Ganzes vollständig virtualisiert ausgeführt wird, die leistungskritischsten Hardwareteile jedoch paravirtualisiert ausgeführt werden. Neuere Linux-Systeme haben pv-Treiber für Festplatten und Netzwerke im Kernel, und es gibt auch verschiedene PV-Treiber für Windows. Bei all den Entwicklungen bei HVM in den letzten Jahren gibt es normalerweise nur geringe Leistungsunterschiede zwischen HVM und PV für Standard-Workloads.

KVMist nicht Xen, sondern eine andere Virtualisierungsplattform, die im Linux-Kernel integriert ist. Aus der Sicht eines Gasts ähnelt es Xen HVM: Der Gast wird vollständig virtualisiert ausgeführt und es gibt spezielle Treiber, mit denen einige Teile paravirtualisiert ausgeführt werden können (wiederum Festplatte und Netzwerk).

Sowohl Xen HVM als auch Linux KVM benötigen Hardware-unterstützte Virtualisierungsunterstützung (Intel VT-x, AMD AMD-V), wohingegen Xen PV keine Betriebssysteme ohne PV-Unterstützung ausführen kann (Sie können Windows nicht unter Xen PV ausführen).

Sowohl Xen HVM als auch Linux KVM verwenden Teile der qemu-Virtualisierungssoftware, um die tatsächliche Hardware für Geräte zu emulieren, die keine PV-Treiber im Gastsystem verwenden.

Xen (sowohl PV als auch HVM) kann eine Live-Migration eines laufenden Gasts von einem physischen Server auf einen anderen durchführen. Ich weiß nicht, ob KVM dies auch kann.

Sowohl Xen als auch KVM können den Arbeitsspeicher nicht überlasten, sodass Sie normalerweise "echten RAM" erhalten, während andere Plattformen wie VMware einen Teil des Gast-RAM auf die Festplatte auslagern können.

Es gibt Unterschiede, die jedoch in der Regel für bestimmte Installationen gelten und nicht für den allgemeinen virtuellen privaten Server, der an andere Personen verkauft wird. Beispielsweise unterstützen neuere Xen-Hypervisoren transzendenten Speicher, der die Speichernutzung und die Gastleistung verbessern kann, wenn der Gast dies unterstützt (Linux-Kernel> = 3.something).

All diese Technologien werden Ihnen eine großartige Erfahrung bringen, wenn sie korrekt implementiert sind und aus Ihrer Sicht keinen großen Unterschied machen. Natürlich gibt es tausend Möglichkeiten, wie etwas schief gehen kann, und das hängt nicht mit der spezifischen Virtualisierungslösung zusammen (dh Ihr Gast könnte auf langsamen Datenträgern gespeichert werden und dies würde Ihre Leistung beeinträchtigen).

Luke404
quelle
3
KVM kann den Speicher überbelegen, ebenso wie Xen.
Dyasny
@dyasny Ich weiß nicht , über KVM aber ich bin mir ziemlich sicher , dass Xen kann nicht überlasten Speicher im eigentlichen Sinne des Wortes (eine andere maximale Größe erlaubt , ist eine andere Sache). Bitte verknüpfen Sie Ihre Quellen, wenn Sie glauben, dass dies der Fall ist.
Luke404
Xen unterstützt Balooning. Fügen Sie Standard-Swapping hinzu und Sie haben bereits mindestens 2 Overcommit-Mechanismen. Dies ist so alt wie 2008: blog.xen.org/index.php/2008/08/27/…
dyasny
3
@dyasny du denkst wahrscheinlich über overcommit nach, dass es ein höheres Maximum zulässt . AFAIK: Die akzeptierte Bedeutung ist, den Gästen tatsächlich mehr Speicher zuzuweisen, als physisch auf dem Host vorhanden ist. Dies ist in Xen nicht implementiert. Sie können einen Gast-Ballon nicht entleeren (z. B. mehr Speicherplatz bereitstellen), wenn auf dem Host kein physischer Speicher verfügbar ist, und Sie können auch keinen neuen Gast starten, wenn Sie bereits Ihren gesamten Host-Speicher zugewiesen haben (es sei denn, Sie blähen auf Ausführen von Gast-Ballons, wodurch der zugewiesene Speicherplatz tatsächlich reduziert wird, sodass Sie nichts überbeanspruchen.
Luke404
1
Ich denke, dass Overcommit nicht nur mehr zulässt , als der Host physisch hat, sondern auch tatsächlich mehr nutzt, als der Host physisch hat. Das Austauschen ist schrecklich, aber es ist ein Mechanismus, mit dem Sie mehr Speicherseiten zuweisen können, als Sie physisch auf einem Host haben, ob für Prozesse oder VMs - spielt keine Rolle. Dies ist so weit, wie ich auf die Semantik eingehen werde.
dyasny