Virtualisierung

Was ist KVM?

Auch bekannt als: Kernel-based Virtual Machine
Definition

KVM is full hardware virtualisation built into the Linux kernel, giving each guest its own kernel and hardware-enforced isolation from other tenants. Because a KVM guest runs its own kernel, it can load kernel modules, run non-Linux operating systems, use real swap and support nested virtualisation.

Warum KVM wichtig ist

Da ein KVM-Gast einen eigenen Kernel ausführt, kann er Kernel-Module laden, nicht-Linux-Betriebssysteme ausführen, echten Swap verwenden und verschachtelte Virtualisierung unterstützen. Der einem KVM-Gast zugewiesene Speicher ist wirklich reserviert, was den praktischen Unterschied zur Container-basierten Virtualisierung ausmacht.

KVM in der Praxis

Wenn Sie einen KVM-Server betreiben, prüfen Sie zuerst /proc/cpuinfo im Gast – wenn es nicht mit den Flags des Hosts übereinstimmt, sehen Sie wahrscheinlich paravirtualisierte Abkürzungen, nicht volles KVM. Sie setzen die Speicherzuweisung mit echten Reservierungen: Überbelegung lässt den OOM-Killer des Gasts auslösen, während der Host untätig aussieht. Wenn Sie verschachtelte Virtualisierung falsch konfigurieren, verlieren Sie hardwarebeschleunigtes Paging und Gäste laufen nur noch mit einem Bruchteil der Geschwindigkeit. Ein Fehler kostet Sie Leistung, die Sie ohne Neustart nicht zurückgewinnen können.

Was Leute bei KVM falsch machen

Die Leute nehmen an, dass KVM dasselbe ist wie OpenVZ oder LXC, weil beide den Linux-Kernel verwenden. Die Richtigstellung ist, dass KVM jedem Gast einen eigenen Kernel gibt, während Container den Host-Kernel teilen. Sie können Kernelmodule laden und Nicht-Linux-Betriebssysteme nur auf KVM ausführen. Die Isolierung über gemeinsame Namespaces ist nicht hardware-erzwungen.

KVM – häufige Fragen

Was bedeutet KVM für die Leistung?

KVMs Hardware-Virtualisierung bedeutet, dass jeder Gast einen eigenen Kernel hat, sodass die Leistung für CPU und Speicher nahezu nativ ist. Der Speicher ist wirklich reserviert, nicht geteilt. Sie können eine vorhersehbare, isolierte Durchsatzleistung im Vergleich zu Containern erwarten.

Kann ich Windows auf KVM ausführen?

Ja, ein KVM-Gast führt seinen eigenen Kernel aus und kann daher Nicht-Linux-Betriebssysteme wie Windows ausführen. Sie müssen ein ISO hochladen und eine VNC-Konsole anhängen. Eine Windows-Server-Lizenz ist in bestimmten Regionen optional erhältlich.

Mehr aus virtualisierung

OpenVZ
OpenVZ ist containerbasierte Virtualisierung, bei der jede Instanz den Host-Kernel teilt, sodass Gäste keine Kernel-Module laden oder ein anderes Betriebssystem ausführen können.
LXC
LXC ist Linux-native Containerisierung, die Prozesse mit Namespaces und Cgroups isoliert, während der Host-Kernel geteilt wird.
Hypervisor
Ein Hypervisor ist die Softwareschicht, die virtuelle Maschinen erstellt und ausführt und physische CPU, Speicher und E/A zwischen ihnen zuteilt.
Verschachtelte Virtualisierung
Verschachtelte Virtualisierung ermöglicht es einer virtuellen Maschine, selbst virtuelle Maschinen auszuführen, indem die Prozessor-Virtualisierungserweiterungen dem Gast exponiert werden.
vCPU
Eine vCPU ist ein virtueller Prozessor, der einem Gast präsentiert wird und durch Planungszeit auf einem physischen Kern oder Thread unterstützt wird.
cloud-init
cloud-init ist der Standardmechanismus zur Konfiguration einer virtuellen Maschine beim ersten Start unter Verwendung von Metadaten, die von der Plattform bereitgestellt werden.