Erster Prototyp: Unikernels als Entwicklungsstufe von Linux

Anfang Juli veröffentlichte eine Gruppe von Ingenieuren von Red Hat und der Boston University ein Whitepaper, in dem vorgeschlagen wurde, den monolithischen Linux-Kernel in eine Unikernel-Architektur umzuwandeln. Wir haben uns entschlossen, das Material zu verstehen und die Reaktion der IT-Community auf diesen Vorschlag zu diskutieren.


Foto - Eamonn Maguire - Unsplash

Unikernels als Alternative


Linux verwendet bekanntermaßen einen monolithischen Kernel . Es verwaltet Prozesse, Netzwerkfunktionen, Peripheriegeräte und den Dateisystemzugriff. Wie die Autoren des Artikels von Red Hat und der Boston University schreiben ( S. 1 ), hat eine solche Struktur jedoch ihre Nachteile. Insbesondere Hochleistungsanwendungen müssen Frameworks wie DPDK und SPDK verwenden , um unter Umgehung des Kernels ungehinderten Zugriff auf E / A-Geräte zu erhalten.

In der Cloud treten bestimmte Schwierigkeiten auf. Für mehr Sicherheit werden Unternehmensanwendungen auf separaten virtuellen Maschinen bereitgestellt. Jede VM wird von einem vollwertigen Betriebssystem gesteuert. Infolgedessen werden die Rechenressourcen der Server nicht optimal genutzt.

Ein alternativer Ansatz kann die Situation verbessern - Unikernels. Die folgende Idee besteht darin, die Anwendung mit den erforderlichen Bibliotheken des Betriebssystems zu verknüpfen und diese in einer Binärdatei zu kompilieren. Danach kann diese "Binärdatei" verwendet werden, um das System zu starten. Dieser Ansatz ermöglicht es, die Funktionalität des Betriebssystems auf die Anforderungen einer bestimmten Anwendung zu spezialisieren.

Die Ressourcen eines solchen Systems werden effizienter eingesetzt. Unikernels haben auch eine höhere Leistung als die monolithische Kernarchitektur. Der Grund ist die Vereinfachung der E / A-Pfade, da alle Daten und Dateien in einem einzigen Adressraum abgelegt werden. Außerdem muss der Kontext nicht mehr zwischen Benutzerbereich und Kernelbereich gewechselt werden.

Ein Team von Ingenieuren der Boston University und von Red Hat entwickelte einen Linux-Prototyp, der auf Unikernels basiert. Das Betriebssystem heißt Unikernel Linux (UKL).

Was haben die Ingenieure gemacht?


Laut den Entwicklern ( S. 3 ) haben sie nur elf geändert und dem Linux-Kernel v5.0.5 und glibc zwanzig neue Codezeilen hinzugefügt. Der "klassische" Kernel ist betriebsbereit geblieben - der Benutzer kann die Montagemethode wählen (UKL oder nicht).

Die Autoren erstellten eine kleine UKL-Bibliothek, in der sie spezielle „Stubs“ platzierten, die nicht verwendete Systemaufrufe maskieren. Sie haben auch den Kernel-Linker geändert, um einen neuen Segmenttyp zu definieren, z. B. TLS (Thread Local Storage) aus ELF-Binärdateien. Der Erstellungsprozess wurde ebenfalls geändert, wodurch nun der Anwendungscode, glibc und die UKL-Bibliothek in einer Binärdatei zusammengefasst werden.

Ingenieure arbeiten an einer Reihe von Mängeln. Beispielsweise planen sie, TLS- Speicher aus dem Kernelbereich zu verschieben und vmalloc bei der Verwaltung der Speicherzuweisung aufzugeben, um das System zu vereinfachen.

Meinungen


Red Hat-Entwickler sagen, dass UKL eine vollwertige Alternative zum Starten von Prozessen sein kann, die direkt mit Hardware arbeiten (unter Umgehung des Kernels). Die Autoren des ursprünglichen Artikels geben an ( S. 2 ), dass der zwischengespeicherte Caching-Dienst unter Unikernels 200% schneller funktioniert als unter Linux.

Insgesamt reagierte die IT-Community auch positiv auf die Initiative der Autoren des Originalartikels. Die Bewohner von Hacker News stellten fest, dass die Architektur von Unikernels die Sicherheit der Softwareumgebung erheblich erhöhen wird. Im Falle eines Hackings der Anwendung erhält der Hacker nur Zugriff auf seine Binärdatei.


Fotos - Jack Young - Unsplash

Einer der Bewohner von Hacker News schlug sogar eine radikale Lösung vor - den Linux-Kernel unter Unikernels von Grund auf in Rust umzuschreiben. Ihm zufolge wird die Sprache das Problem mit einer großen Anzahl von Fehlern im Zusammenhang mit der Speichersicherheit lösen. Ein anderer Benutzer nannte die Idee gut, schlug jedoch vor , einige Jahre darauf zu warten, dass die Sprachentwickler mit Instabilitäten der Bibliothek fertig werden. Obwohl ein Enthusiast bereits sein Betriebssystem in Rust schreibt . Quellen finden Sie auf GitHub .

Andere Implementierungen


UKL ist nicht die einzige Implementierung des Unikernels-basierten Betriebssystems. Eine ähnliche Lösung wird beispielsweise von einem Team von Ingenieuren der Polytechnischen Universität Virginia, Qualcomm und der Rhein-Westfälischen Technischen Universität Aachen in Deutschland entwickelt. Ihr leichter Kern heißt HermiTux . Sie können damit schnell Anwendungen über dem Hypervisor starten - laut Autoren beträgt die Downloadzeit 0,1 Sekunden nicht. Der Speicherverbrauch in der Testumgebung beträgt 9 MB und ist damit zehnmal geringer als beim klassischen Linux-Kernel.

Es ist auch sinnvoll, das auf OCaml entwickelte MirageOS- Betriebssystem zu erwähnen. Der Kernel kann auf Xen-, KVM-, BHyve- und VMM-Hypervisoren (OpenBSD) sowie auf mobilen Plattformen ausgeführt werden. Das System unterstützt mehrere Dutzend OCaml-Bibliotheken für Netzwerkoperationen (DNS, SSH, OpenFlow, HTTP, XMPP), die mit Speichern und paralleler Datenverarbeitung arbeiten. Wir können sagen, dass MirageOS eines der ersten erfolgreichen Unikernels-Projekte ist. Interessanterweise ist seine Blog-Site auch als Unikernel implementiert.

Diese Betriebssysteme werden bereits in Produktionsumgebungen von vielen Organisationen verwendet - beispielsweise von der Cambridge University , IBM, Ericsson und Docker . Es ist wahrscheinlich, dass bald ein neues Betriebssystem hinzukommt - Unikernel Linux.



Worüber wir in einem Unternehmensblog schreiben:

Source: https://habr.com/ru/post/de462357/


All Articles