KVM unter Linux: Open-Source-Alternative zu VMware, Citrix und Hyper-V
Virtualisierung bildet das Rückgrat moderner IT-Infrastrukturen. Während viele Unternehmen auf etablierte Lösungen wie VMware ESXi, Citrix XenServer oder Microsoft Hyper-V setzen, hat sich KVM als leistungsstarke Open-Source-Alternative etabliert. In diesem Beitrag erfährst du, was KVM von klassischen Hypervisoren unterscheidet, warum die direkte Integration in den Linux-Kernel ein entscheidender Vorteil ist und welche Voraussetzungen du für den Einsatz erfüllen musst.
Hast du schon mal von Kernel-based Virtual Machine (KVM) gehört? Vermutlich schon, oder auch nicht. Dann bist du vielleicht schon mal über den Virt-Manager gestolpert? Dieser lässt sich als praktische GUI für KVM einsetzen.
Aber was kann KVM? Kurz gesagt: Alles rund um Virtualisierung. Du kannst damit unterschiedlichste Betriebssysteme virtualisieren, sogar «fremde» Architekturen emulieren und so auch hardwarefremde Systeme laufen lassen.
Unterschied KVM zu klassischen Hypervisoren wie VMware ESXi, Citrix XenServer oder Microsoft Hyper-V
Der wohl grösste Unterschied zwischen KVM und VMware ESXi, Citrix XenServer oder Microsoft Hyper-V ist, dass KVM, mit seinen Hilfsprogrammen (wie Frontends und GUIs, Kommandozeilenwerkzeuge) bei den meisten Linuxdistributionen mit dabei ist. Egal wie viele Instanzen man nutzt, KVM bleibt frei und ohne Lizenzkosten bzw. Einschränkungen. Es gilt lediglich die entsprechenden Softwarepakete zu installieren und schon ist man dabei. Selbstverständlich sollte auch die Hardware mitspielen. Das heisst, etwas RAM und CPU braucht es dann schon.
Ob das eine Workstation ist, auf welcher man Sachen ausprobieren möchte, Testumgebungen bauen oder aber eine produktive Serverumgebung darstellt, all dies kann man mit KVM machen. KVM kann mit oder ohne Hilfsprogramme betrieben werden. Hilfsprogramme, Frontends, GUIs helfen natürlich, sind aber manchmal auch pure Bequemlichkeit. Das ganze selber in die Hand zu nehmen ist ein anderer Genuss und bei den kommerziellen Kollegen nicht so angedacht, wenn denn überhaupt möglich.
# kvm -hda rocky.img -cdrom rocky_install.iso -boot d -m 256
So einfach können wir eine Maschine mit KVM starten (lassen). «hda» steht für erste Disk, hier ein File, kann aber auch ein Device, beispielsweise ein LVM Volume sein. «cdrom», die iso-Datei, zum Starten in diesem Fall, welches für die Installation genutzt werden möchte, «boot», was das Bootdevice ist (d steht für CD) und schliesslich noch wieviel Memory verwendet werden soll.
Dies hier ist nur exemplarisch, als Erklärung. Natürlich kann – und sollte – noch viel mehr angegeben werden, wie Bussystem, Anzahl CPUs, MAC Adresse und so weiter.
Vorteile der Integration von KVM im Linux-Kernel
Ein bedeutender Vorteil der Integration von KVM im Linux-Kernel ist, dass, wenn das Teil im Linux-Kernel drin sein muss, man auch Linux nimmt, um dies zu betreiben – also das beste Betriebssystem, das es je gab!
KVM ist kein eigenständiger Virtualisierer, wie beispielsweise VBox, ESXi oder andere. Ein Programm, welches alles emuliert und daher viele Ressourcen verschlingt, sondern es ist ein Kernelmodul, eine Komponente, die ganz tief im Betriebssystem sitzt, welches den Linux-Kernel selbst befähigt zu Virtualisieren.
Das bringt einige weitere Vorteile:
- CPU/RAM etc zugriffe sind mit sehr geringer Latenz verbunden, da sehr Hardware nahe.
- Da KVM Teil des Kernels ist, bestehen weniger Schichten, das heisst, weniger Anfälligkeit und höhere Sicherheit.
- Die VMs sind normale Linuxprozesse, IO Scheduler, cgroups usf. können direkt angewendet werden.
- Linux kann abertausende Kerne verwalten, Terra, Peta, Exabytes von Speicher, verschiedene HA und Cluster.
- Systeme, Loadbalancing etc. – alles das kommt den KVM-Maschinen zugute und kann direkt genutzt werden.
So lässt sich KVM in eine bestehende IT-Infrastruktur integrieren
KVM lässt sich ebenso wie andere Virtualisierungslösungen integrieren. Dabei stellt sich die Frage, wie das Netzwerk aufgebaut werden soll: Gibt es mehrere physische Netzwerkkarten, über die sich die Netzlast verteilen lässt? Verursachen die virtuellen Maschinen nur wenig Netzwerkverkehr, sodass sie alle über dasselbe Interface laufen können? Solche Überlegungen müssen gemacht werden.
Auch hier gilt, wie bei anderen Virtualisierern: Man muss sich fragen, woher die VMs stammen. Befinden sie sich auf physischen Massenspeichern, sind sie direkt als Gerät installiert, nutzen sie LVM-Geräte, Image-Dateien auf einem Server oder Netzwerkspeicher, oder handelt es sich um iSCSI-Geräte? Entscheidend ist die Funktionalität der VMs. Ein Fileserver, DNS- oder DHCP-Dienst, eine Datenbank oder ein Webserver hat jeweils unterschiedliche Anforderungen an Datendurchsatz und Speicherplatz, CPU-Ressourcen und weitere Faktoren. Dies sollte sorgfältig geprüft werden, um die passende Lösung zu wählen. Man kann natürlich auch mischen, so steht dir die ganze Linux-Lösung-Palette zur Verfügung.
Tools und Frontends die die Verwaltung von KVM-basierten virtuellen Maschinen erleichtern
Es gibt verschiedene Tools und Frontends, die die Verwaltung von KVM-basierten virtuellen Maschinen erleichtern. Ich würde konkret das Frontend Libvirt mit dem Virt-Manager empfehlen. Dieses ist schon lange etabliert, stabil und hat eigentlich alles, was man braucht.
Auf der Kommandozeile kann man mit «virsh», ebenfalls aus dem Sammelsurium Libvirt, arbeiten, um beispielsweise VMs zu starten oder zu stoppen. Zudem gibt es viele Tools, um gängige VM Imageformate in andere zu wandeln, das hilft bei einer Migration.
Ich arbeite schon länger mit dieser Virtualisierung, nach wie vor begeistert, wie flexibel, stabil und performant diese Lösung aus der Linuxwelt ist.