Suchen

Definition: „Rethinking Cloud Infrastructure“ – das Konzept von Unikernel-Images Was sind Unikernels?

Ein Unikernel ist ein ausführbares Image, das sich auf die minimal benötigten Funktionen für den Betrieb einer Anwendung beschränkt. Ein Unikernel läuft auf einem Hypervisor oder direkt auf der Hardware und ist im Vergleich zu einem Container wesentlich schlanker. Unikernels lassen sich schnell booten, belegen nur die wirklich benötigten Ressourcen und bieten ein hohes Sicherheitsniveau.

Firmen zum Thema

Unikernels - Next-Level Virtualisierung: Images, ausführbar auf einem Hypervisor oder direkt auf der Hardware.
Unikernels - Next-Level Virtualisierung: Images, ausführbar auf einem Hypervisor oder direkt auf der Hardware.
(Bild: gemeinfrei / © Gerd Altmann / Pixabay )

Unikernels sind nach dem Minimalprinzip konzipiert. Es handelt sich um ausführbare Images, die nur die Funktionen eines Betriebssystems beinhalten und nutzen, die für die Ausführung einer bestimmten Anwendung tatsächlich benötigt werden. Unikernels werden direkt auf einem Hypervisor oder auf der Hardware selbst ausgeführt und benötigen kein zusätzlich darunterliegendes Betriebssystem.

Einige betrachten Unikernels als die logische Weiterentwicklung von Containern, da sie noch weniger Betriebssystem benötigen und noch schlanker sind. Unikernels werden meist mithilfe von Compilern erstellt, mit denen Entwickler aus einer Sammlung von Bibliotheken die Komponenten für ihren Unikernel aktivieren, die für die Ausführung der Anwendung erforderlich sind. Die notwendigen Betriebssystemfunktionen werden selektiv für das ausführbare Unikernel-Image zusammengestellt. Im Vergleich zu vollwertigen Betriebssystemen, Virtuellen Maschinen (VMs) oder Containern benötigen Unikernels weniger Ressourcen, starten schneller und bieten ein hohes Sicherheitsniveau.

Das Konzept der Unikernels existiert bereits seit den 1990er Jahren, hat sich aber erst in den letzten Jahren stärker etabliert. Es existieren zahlreiche nutzbare Unikernel-Systeme wie MirageOS, Drawbridge von Microsoft oder die Haskell Lightweight Virtual Machine (HaLVM). Gut geeignet ist das Konzept im Cloud-Computing-Umfeld, um beispielsweise Microservice-Architekturen zu realisieren, in denen die einzelnen Services durch schlanke Unikernel-Images bereitgestellt werden.

Das Grundkonzept der Unikernels

Das Grundkonzept der Unikernels lässt sich in einem Satz folgendermaßen beschreiben: Der Unikernel soll als ausführbares Image nur die Betriebssystemfunktionen bereitstellen, die für die Ausführung einer bestimmten Anwendung notwendig sind. Es wird das Minimalprinzip praktiziert. Dadurch unterscheidet sich der Unikernel deutlich vom traditionellen Betriebssystemkonzept, wie es beispielsweise in Windows oder Linux umgesetzt ist. Dort stellt ein multifunktionales Betriebssystem alle Funktionen bereit, um beliebige Anwendungen zu unterstützen.

Bei einem Unikernel handelt es sich um ein stark spezialisiertes Image, das aus einem bibliotheksbasierten, modularen Betriebssystem zusammengestellt wurde. Hierfür wählt ein Entwickler aus einem modularen Betriebssystem-Stack die Funktionskomponenten aus, die seine Anwendung zur Ausführung unbedingt benötigt. Die Funktionskomponenten werden zusammen mit der Anwendung zu einem ausführbaren Code kompiliert. Der Code ist anschließend direkt auf der Hardware oder auf einem Hypervisor lauffähig.

Abgrenzung der Unikernels gegenüber Containern und Virtuellen Maschinen

Unikernels lassen sich deutlich gegenüber klassischen Virtuellen Maschinen (VMs) und Containern abgrenzen. Obwohl einzelne Virtuelle Maschinen in vielen Fällen nur bestimmte Aufgaben erfüllen oder wenige Anwendungen ausführen, stellen sie dennoch vollwertige Betriebssysteme bereit. Diese lassen sich mehrfach auf einer Hardwareplattform installieren. Die virtuellen Maschinen mit ihren Betriebssystemen besitzen eine Vielzahl an Funktionen und Services, die für einzelne Anwendungen meist überdimensioniert sind. Container verschlanken das Prinzip der Virtuellen Maschinen, indem sie virtuelle Anwendungsumgebungen innerhalb eines einzigen Betriebssystems zur Verfügung stellen. Während ein Server mit beispielsweise vier VMs vier separate Betriebssystemumgebungen ausführt, lassen sich vier Container innerhalb nur eines Betriebssystems ausführen. Das Host-Betriebssystem ist aber nach wie vor ein vollwertiges Betriebssystem.

Noch weniger Ressourcen belegen Unikernels. Sie beinhalten nur die Betriebssystemfunktionen, die für eine einzelne Anwendung tatsächlich notwendig sind. Auf einem Server lassen sich viele Unikernels betreiben, ohne dass ein einziges vollwertiges Betriebssystem ausgeführt wird. In einigen Fachmedien werden Unikernels als die logische Weiterentwicklung von Containern oder als Container 2.0 bezeichnet. Der entscheidende Unterschied zwischen Unikernels und Containern ist aber, dass Unikernels kein vollwertiges multifunktionales Betriebssystem mehr benötigen. Sie sind erheblich schlanker als Container.

Die Vorteile der Unikernels

Das Konzept der Unikernels bietet zahlreiche Vorteile gegenüber klassischen Betriebssystemumgebungen, Virtuellen Maschinen und Containern. Es existiert für Anwendung und Betriebssystem nur ein einziger Adressraum, der Rechteübertragungs- und Datenaustauschkonzepte zwischen verschiedenen Adressräumen überflüssig macht. Unikernels bestehen aus relativ wenig Code, sind sehr schlank und bieten eine hohe Performance. Sie lassen sich sehr schnell starten. Aufgrund des für die Ausführung einer einzelnen Anwendung beschränkten Funktionsumfangs, bieten Unikernels eine minimale Angriffsfläche gegen externe Bedrohungen und gelten als ausgesprochen sicher.

Weitere Vorteile eines Unikernels sind:

  • gut skalierbar
  • geringer Ressourcenbedarf
  • geringe Beeinflussung durch andere Anwendungen und Betriebssystemfunktionen
  • leicht vorhersagbare Leistung

Die Nachteile der Unikernels

Diesen Vorteilen stehen einige Nachteile gegenüber. Ein Unikernel benötigt aktuelle Hardwaretreiber zur Ausführung seines Library-Betriebssystems, die bei Veränderungen angepasst oder aktualisiert werden müssen. Ein Unikernel eignet sich immer nur für eine spezifische Anwendung und erlaubt kein Multi-User-Computing. Verändern sich Anforderungen einer Anwendung, muss eventuell ein neuer Unikernel kompiliert werden. Der Austausch von Informationen zwischen Anwendungen, die in verschiedenen Unikernels getrennt voneinander laufen, ist erschwert.

Die Bedeutung der Unikernels im Umfeld des Cloud Computings

Das Konzept der Unikernels ist für das Cloud Computing interessant. Es eignet sich als eine Art Cloud-Betriebssystem und bietet hohe Performance und kurze Startzeiten. Unikernels stellen eine Alternative zu containerbasierten Cloud-Anwendungen dar. Sie sorgen für eine zuverlässige Isolierung der Anwendungen verschiedener Nutzer. Zudem ermöglichen die Unikernels den Aufbau cloudbasierter, serviceorientierter Software-Architekturen. Cloudbasierte Anwendungen lassen sich in diesen Architekturen beispielsweise aus vielen verschiedenen Microservices zusammensetzen. Die einzelnen Services können mithilfe von Unikernels sehr elegant und ressourcensparend bereitgestellt werden.

Existierende Unikernel-Systeme

Mittlerweile existiert eine Vielzahl nutzbarer Unikernel-Systeme. Ein häufig genutztes ist das MirageOS, das ursprünglich aus dem Xen-Projekt-Inkubator entstanden ist. Es ist in der Sprache OCaml realisiert und bietet über 100 MirageOS-Libraries. Drawbridge von Microsoft kombiniert das Konzept containerisolierter Picoprozesse mit einem minimalen Library-Betriebssystem basierend auf Windows. Die Haskell Lightweight Virtual Machine (HaLVM) bietet minimalistische Umgebungen, die direkt auf einem Xen Hypervisor lauffähig sind. LING basiert auf Erlang/OTP. Die LING-Unikernels nutzen lediglich drei externe Bibliotheken. Weitere verfügbare Unikernel-Systeme sind unter anderem:

  • IncludeOS
  • ClickOS
  • Clive
  • Graphene Library OS
  • HermitCore
  • OSv
  • Nanos
  • Unikraft

Weitere Informationen rund um Unikernels finden sich unter anderem auf folgender Website: http://unikernel.org/.

(ID:46248601)

Über den Autor