iX 6/2017
S. 60
Review
Virtualisierung
Aufmacherbild

VMs unter FreeBSD und OpenBSD mit Bhyve und vmm

Emsig

Virtualisierung war bislang bei den BSDs ein wenig unterrepräsentiert. Das soll sich mit den neu entwickelten Hypervisoren für FreeBSD und OpenBSD ändern. Ein Überblick.

Für Windows und Linux gibt es Virtualisierer zuhauf. Dabei läuft ein Hypervisor oder Virtual-Machine-Monitor dann entweder direkt auf der Hardware (Typ 1, etwa VMware ESXi) oder als Software auf einem Betriebssystem (Typ 2, beispielsweise VirtualBox). Er präsentiert den Gästen vollständige virtuelle x86-PCs, auf denen sich wieder Betriebssysteme installieren lassen.

Leichtgewichtiger ist die Virtualisierung auf Kernel-Ebene (OS-Level-Virtualisierung) in Form von Jails, Containern oder Zones. Sie nutzt den chroot-Mechanismus: Auf einem Kernel laufen, strikt voneinander getrennt, mehrere Betriebssysteminstanzen. Diese Methode benötigt nahezu keinen Overhead, bietet also in den Instanzen native Performance und ist ressourcenschonend. Die Auswahl der Gäste beschränkt sich auf systemnahe Betriebssysteme – schließlich nutzen die Gäste Kernel und Treiber gemeinsam.

FreeBSD bietet für die OS-Level-Methode einen ausgereiften Ansatz: Jails [1]. Einzelne Prozesse oder ganze Systemumgebungen besitzen isolierte Prozesse, Dateisysteme sowie Netzwerk-Stacks. Zusammen mit ZFS-Snapshots und -Clones lassen sich neue Instanzen extrem schnell provisionieren.

Bei der Hardwarevirtualisierung sah es bis vor wenigen Jahren düster aus: Administratoren blieb quasi nur die Wahl zwischen QEMU und VirtualBox. Für Ersteres steht mit kqemu theoretisch ein QEMU-Modul bereit, das durch natives Ausführen von Codeteilen mehr Geschwindig erzielen könnte. Da sich dessen Entwickler auf Linux konzentrieren, funktioniert es mit einem aktuellen QEMU unter Free-, Net- oder OpenBSD nicht mehr.

Somit ist VirtualBox die Virtualisierungslösung der Wahl unter FreeBSD, nicht aber für OpenBSD und NetBSD. Allerdings müssen Nutzer auf PXE-Boot, RDP und USB 2.0/3.0 verzichten, da es das hierfür erforderliche Oracle VM VirtualBox Extension Pack nicht für FreeBSD gibt – und laut Firmenentwickler auch in absehbarer Zeit nicht geben wird. Zwar arbeitet der Hersteller mit dem FreeBSD-Team zusammen, aber letztlich sind es die FreeBSD-Entwickler, die VirtualBox ans eigene System anpassen und übersetzen.

Xen/Dom0 ist im Kommen

Bleibt noch das mittlerweile von Citrix weiterentwickelte Xen. Es arbeitet direkt auf der Hardware und kann Betriebssysteme in sogenannten Domänen parallel starten. Die erste (Dom0) ist privilegiert und interagiert mit dem Hypervisor – quasi das Managementsystem. Weitere DomU-Domänen sind unprivilegiert und beherbergen die Gastsysteme. Xen dürfte im Zusammenhang mit Cloud-Computing für BSD-Administratoren wichtig sein, da Amazons EC2 auf Xen basiert und darin laufende Systeme zwangsläufig Xen/DomU-Gäste sein müssen.

In einer DomU laufen FreeBSD und NetBSD, FreeBSD beherrscht HVM mit dem Standard-Kernel, die alte Paravirtualisierung lässt sich via options XENHVM; device xenpci in einen Custom-Kernel einbauen. Die Variante als Xen/Dom0-Host ist hingegen noch recht neu und entsprechend wackelig – ein Blick in die „freebsd-xen“-Mailingliste offenbart noch etliche Probleme (siehe „Alle Links“). Bei den BSDs ist Xen eindeutig die Domäne von NetBSD, das schon in Version 2.0 sowohl Xen-Host- als auch -Gastfunktionen bot. Erst vor etwas über einem Jahr fand Xen als Gasterweiterung (DomU) Einzug in OpenBSD. Sieht man von QEMU ab, lassen sich bei den BSDs FreeBSD mit VirtualBox (eventuell mit phpVirtualBox als WebGUI) und NetBSD mit Xen als Virtualisierungs-Host betreiben.

Anstoß für einen eigenen Hypervisor

Einen Bedarf für servertaugliche Virtualisierung hatten auch die FreeBSD-Entwickler erkannt und schon auf der „MeetBSD California 2010“ Pläne für einen eigenen Hypervisor geschmiedet. Der sollte komplett auf FreeBSD zugeschnitten und voll ins Betriebssystem integriert, komplett neu aufgebaut sein und vor allem unter der BSD-Lizenz stehen.

Bereits zur BSDCan 2011 (FreeBSD 8.x) lag ein grundlegender Hypervisor vor: zunächst „BHyVe“ (von „BSD-HyperVisor“), später vereinfacht Bhyve genannt. Das Projekt wanderte als offizieller Teil in den FreeBSD-10-Entwicklungszweig und war mit dessen Erscheinen 2014 experimentell einsetzbar. Im aktuellen FreeBSD 11 ist Bhyve durchaus praxistauglich: Als Gäste laufen vor allem FreeBSD, aber auch andere BSDs, Linux und mit Einschränkungen Windows.

FreeBSD virtuell – spät, aber modern

Ein Grund für die zügige Entwicklung war der späte Start – VMwares Workstation 1.0 entstand 1999. So konnten die Entwickler von den etablierten Hypervisoren lernen und mussten sich Basistechniken nicht komplett selbst erarbeiten. Die VMs emulieren keinen PC von 1984, sondern ein modernes x86-System mit VirtIO-Geräten. Im Umkehrschluss bedeutet das, dass Bhyve nicht nur Intel VT-x oder AMDs SVM für den Betrieb voraussetzt, sondern auch Hardwarebeschleunigung der zweiten Generation wie „Second Level Address Translation“ (SLAT), bekannter als Intel EPT (Extended Page Table). Ohne EPT müsste der Hypervisor die von der MMU bereitgestellten virtuellen Speicheradressen zweimal in physische Adressen umrechnen: erst in der VM und danach im Host. Mit EPT geschieht dies in der Hardware, was vor allem speicherintensive Anwendungen deutlich beschleunigt. Die Entwickler sprechen gar von „better than host performance“. Auch PCI-Passthrough, das Intel VT-d erfordert, ist fester Bhyve-Bestandteil und stellt den Gästen Controller, Netzwerk- und Grafikkarten direkt zur Verfügung.