OS Virtualization

Virtualisierung bezeichnet in der Informatik die Nachbildung eines Hard- oder Software-Objekts durch ein ähnliches Objekt vom selben Typ mit Hilfe eines Abstraktions-Layers. Dadurch lassen sich virtuelle (d. h. nicht-physische) Geräte oder Dienste wie emulierte Hardware, Betriebssysteme, Datenspeicher oder Netzwerkressourcen erzeugen. Dies erlaubt es etwa, Computer-Ressourcen (insbesondere im Server-Bereich) transparent zusammenzufassen oder aufzuteilen, oder ein Betriebssystem innerhalb eines anderen auszuführen.

KVM wurde zunächst für die x86-Plattform entwickelt und besteht für diese aus dem Kernel-Modul kvm.ko sowie aus den hardwarespezifischen Modulen kvm-intel.ko (für Intel-Prozessoren) oder kvm-amd.ko (für AMD-Prozessoren). Inzwischen gibt es KVM auch für weitere Plattformen wie PowerPC, System z und ARM. KVM selbst nimmt keine Emulation vor, sondern stellt nur die Infrastruktur dazu bereit; QEMU ist derzeit die einzige Möglichkeit, diese zu nutzen. Dazu stellt QEMU für virtualisierte Gastsysteme die notwendigen Geräte wie Festplatten, Netzwerk-, Sound- und Grafikkarten zur Verfügung. Nach dem Laden des Moduls arbeitet der Linux-Kernel selbst als Hypervisor für virtuelle Maschinen. Als Gastsysteme unterstützt KVM Linux (32 und 64 Bit), Windows (32 und 64 Bit), Haiku, AROS, ReactOS, FreeDOS, Solaris und diverse BSD-Derivate. KVM läuft auch auf SMP-Hostsystemen, SMP-Gastsysteme sind ebenfalls möglich. Die Unterstützung für Paravirtualisierung ist mittlerweile in KVM vorhanden und wird unter Linux mittels der Paravirtualisierungsschnittstelle Virtio (seit Kernel 2.6.25 im Kernel enthalten) für Festplatten- und Netzwerkgerätetreiber zur Verfügung gestellt. Für Windows existieren ebenfalls paravirtualisierte Gerätetreiber. Vorteile sind ein geringerer Overhead sowie erhöhte Performance, da das Gastsystem „weiß“, dass es auf virtualisierter Hardware läuft und mit dem Hypervisor zusammenarbeitet. Seit Kernel 3.1 unterstützt KVM nested Virtualization auf Intel-CPUs. Für AMD-CPUs ist dies bereits ab Version 2.6.30 verfügbar. Nested Virtualization ermöglicht es Hostsystemen, die Virtualisierungsunterstützung der CPU für die Gastsysteme verfügbar zu machen, welche so ihrerseits „Unter“-Gäste virtualisieren können.
Kernel Virtual Machine


QEMU (Quick Emulator) ist eine kostenlose Virtualisierungssoftware, die die gesamte Hardware eines Computers emuliert und eine sehr gute Ausführungsgeschwindigkeit erreicht, indem sie die Prozessoranweisungen des Gastprozessors dynamisch in Anweisungen für den Host-Prozessor übersetzt. QEMU emuliert Systeme mit den folgenden Prozessorarchitekturen: x86, x64, PowerPC (32- und 64-Bit), ARM (32- und 64-Bit), Alpha, CRIS, HPPA, LatticeMico32, m68k oder Coldfire, MicroBlaze, MIPS, Moxie, Nios II, SH-4, S/390, Sparc32/64, TILE-Gx, TriCore, OpenRISC, RISC-V, Unicore und Xtensa.
the FAST! processor emulator


libvirt ist eine Sammlung von Open-Source-Tools zur Verwaltung von virtuellen Maschinen auf einem Host-System. Diese besteht aus einer Anwendungsprogrammierschnittstelle (API), einem Daemon (libvirtd) und einem Kommandozeilenprogramm (virsh). Mit Hilfe von libvirt ist es möglich, Hypervisor-Technologien verschiedener Hersteller, wie KVM/QEMU, Xen, VMware, VirtualBox oder Hyper-V, anzusteuern und über eine einheitliche Schnittstelle zu bedienen.
libvirt: virtualization API