Modular und für die Cloud gemacht

Was ist Unikernel?

| Autor / Redakteur: Ariane Rüdiger / Ulrike Ostler

Mit einem Unikernel, kleiner als klassische VMs und Container soll sich ein Overhead an Code vermeiden lassen. Die Anwenungen werden schlanker, die Infrakstrukturen lassen sich einfacher skalieren und anpassen.
Mit einem Unikernel, kleiner als klassische VMs und Container soll sich ein Overhead an Code vermeiden lassen. Die Anwenungen werden schlanker, die Infrakstrukturen lassen sich einfacher skalieren und anpassen. (Bild: © djama - stock.adob.com)

„Docker kauft Unikernel Systems“ – das war 2016 eine der Schlagzeilen in der Computerpresse. Doch was war so interessant an diesem britischen Startup, dass es Docker kaufen wollte? Ganz einfach: Unikernel System hat mit „MirageOS“ ein alternatives Betriebssystem auf Basis von Bibliotheken entwickelt, das für die Cloud zugeschnitten ist.

Jede klassische Virtualisierungsumgebung hat sehr viele Schichten unterhalb der Applikation. Obwohl virtuelle Maschinen (VMs) häufig nur eine sehr spezifische Aufgabe erfüllen, hat jede von ihnen daher überschüssige Services und Eigenschaften, die dafür nicht gebraucht werden.

Unikernel dagegen verwendet einen anderen, so genannten Library-basierten Ansatz. Erste Versuche dazu gab es bereits in den Neunzigern, doch konnten sie sich nicht durchsetzen. Bezeichnungen solcher Projekte wie „Exokernel“ oder „Nemesis“ werden daher vielen nichts sagen.

Bibliotheken und Regeln als Grundelemente

Die Grundidee ist einfach: Die generell einsetzbare Appliance ist Geschichte, vielmehr baut man applikationsspezifische Funktionen mit ausschließlich den dort benötigten Funktionen. Sie stecken in zu Libraries gebündelten Unikernels, eben dem LibraryOS. Unikernels sind modulare, flexible, sichere und wiederverwendbare Komponenten.

Unikernels führen jeweils einen speziellen Mechanismus (sonst als Funktion bezeichnet) aus und enthalten nur Code, der dafür nötig ist. Kontrolliert und gesteuert werden Unikernels durch Policies, also Regeln, die für die Isolation und die Zugriffskontrolle zuständig sind.

Dabei liegt der Unikernel direkt auf der Hardware oder einem Hypervisor auf. Er kann auch in einer VM stecken. Allerdings ist der Unikernel erheblich kleiner als klassische VMs oder sogar Container, da er nur eine bestimmte Funktion zu realisieren hat, nicht eine ganze Anwendung.

Vorteile von Unikernel-basierten Architekturen

Um einen Unikernel zu bauen, werden Hochsprachen direkt in ein spezialisiertes Maschinensprachen-Image kompiliert. Das heißt: Es ist weniger Code und damit weniger Angriffsfläche für Manipulationsversuche vorhanden. Außerdem lassen sich Unikernel-Architekturen genauer und einfacher skalieren und optimieren.

Das Volumen von Unikernels ist geringer, man braucht also weniger Speicherraum. Leistungen von Software sind leichter prognostizierbar, da Daten nicht ständig zwischen User- und Kernel-Space verschoben werden müssen. Auch eine zentrale Warteschlange am Zugang zum Netzwerk gibt es nicht. Dort mischen sich normalerweise hoch und niedrig priorisierte Pakete. Statt dessen hat jede Applikation ihre getrennte Warteschlange, so dass dringende Pakete auch schnell ihr Ziel erreichen.

Nachteile von Unikernels

Die wichtigsten Nachteile von Unikernels sind, dass Applikationen schlecht miteinander kommunizieren können, wenn sie durch Unikernels sauber und sicher voneinander getrennt werden. Zudem passen die vorhandenen Treiber meistens nicht zu dieser Infrastruktur. Dasselbe gilt für die Kommunikationsprotokolle.

Die Kommunikationsprobleme versucht man zu kompensieren, indem man Unikernels in Einfunktionen-VMs laufen lässt. Denn diese bringen viel von der nötigen Infrastruktur mit.

Projekte

Diverse Open-Source-Projekte wurden schon mit Unikernel-Ansätzen realisiert. Einige Beispiele:

  • MirageOS ist ein vollständig auf Unikernels basierendes Betriebssystem von Unikernel Systems und wurde in der Sprache OCaml realisiert. Es gibt etwa 100 MirageOS-Libraries und weitere kompatible Libraries.
  • „Hermitcore“ ist ein neues Unikernel-BS für HPC- und Cloud-Umgebungen, die prognostizierbares Laufzeitverhalten haben und skalierbar sein müssen.
  • „Drawbridge“ ist ein Prototyp einer Sandbox von Microsoft. Hier werden Pikoprozesse, mittels Prozessmitteln isolierte Container mit minimalem API, und ein auf einem abgespeckten Windows basierendes Library-OS kombiniert. Es läuft in einem Picoprozess.
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 45824632 / Definitionen)