Zur Diskussion unter den Entwicklern des Linux-Kernels wurde eine Reihe von Patches vorgeschlagen, die vom Projekt Multikernel entwickelt wurden. Dieses Projekt wurde kürzlich in die Kategorie Open Source überführt und wird nun gemeinsam mit der Community weiterentwickelt. Multikernel ermöglicht es, auf einem physischen Computer mehrere unabhängige Instanzen des Linux-Kernels auszuführen, die direkten Zugriff auf die Hardware-Ressourcen haben und zur Ausführung mehrerer isolierter Systemumgebungen verwendet werden können. Das Projekt wurde von Multikernel Technologies ins Leben gerufen, einem Unternehmen, das von Cong Wang geleitet wird, der die Traffic Control (TC) Subsystem im Linux-Kernel betreut.
Für den Start und das Management von Kernen wird ein verbesserter kexec-Aufruf bereitgestellt, der im Gegensatz zum klassischen kexec nicht darauf beschränkt ist, den laufenden Kernel zu ersetzen, sondern das gleichzeitige Starten zusätzlicher Kernel-Instanzen ermöglicht. Für die Überwachung und Fehlersuche der gestarteten Kernel-Instanzen wurde die Schnittstelle „/proc/multikernel“ realisiert, und ein Kommunikationsframework namens Multikernel IPI wurde für den Nachrichtenaustausch zwischen den Kernen und die Koordination der Arbeit eingeführt.

Multikernel wird als neue Isolationsarchitektur vorgestellt, die eine Nische zwischen der Virtualisierung durch Hypervisoren und der Container-Isolierung auf Basis eines gemeinsamen Kernels einnimmt. Im Gegensatz zur Virtualisierung erfordert Multikernel keinen Hypervisor, vereinfacht die Erstellung von Umgebungen für die isolierte Ausführung einzelner Anwendungen und ermöglicht hohe Leistung ohne die Overhead-Kosten von Virtualisierung. Im Gegensatz zu Containern bietet Multikernel ein hohes Maß an Isolation und ermöglicht die Nutzung eines separaten Kernels in jeder isolierten Umgebung.

Die Leistung bei der Nutzung von Multikernel wird als nahezu vergleichbar mit der Leistung auf dedizierter Hardware eingeschätzt. Dies wurde erreicht, indem die typischen Kosten der Virtualisierung, die durch die Übergabeverarbeitung zwischen virtuellen Maschinen (VM exit), die IOMMU-Übersetzung und das Eingreifen des Hypervisors in die Ausführung privilegierter Operationen entstehen, ausgeschlossen wurden. Es wird eine dynamische Zuweisung der Ressourcen an die gestarteten Umgebungen unterstützt, um eine vorhersehbare Leistung zu gewährleisten.
Die gleichzeitige Ausführung mehrerer Kerne erfolgt ohne Virtualisierung unter Verwendung eines SMP-Handlers, der die verfügbaren CPUs zwischen den Instanzen der Linux-Kerne verteilt. Jede Instanz des Linux-Kerns ist einem oder mehreren CPUs zugeordnet, die für ihre Ausführung reserviert sind, während die restlichen Hardware-Ressourcen gemeinsam genutzt werden.
Die Hauptvorteile von Multikernel:
- Verbesserte Isolation von Fehlern in den ausgeführten Umgebungen.
- Erhöhte Sicherheit durch Kernel-Level-Trennung.
- Eine effizientere Ressourcennutzung im Vergleich zu traditionellen virtuellen Maschinen, die auf Hypervisoren wie KVM und Xen basieren.
- Mögliche Kernel-Updates ohne Ausfallzeiten durch den KHO-Mechanismus (Kernel Hand Over).
- Unterstützung der Integration mit Standard-Cloud-Infrastrukturen und nahtloser Übergang von traditionellen Virtualisierungssystemen und Container-Isolierung.
- Vollständige Kompatibilität mit bestehenden Anwendungen und Systemschnittstellen von Linux. Multikernel verändert das Kernel nur punktuell und bewahrt die volle API-Kompatibilität.
Quelle: opennet.ru
