Update für Intel Cloud Hypervisor 0.3 und Amazon Firecracker 0.19 in Rust geschrieben

Intel опубликовала neue Version des Hypervisors Cloud Hypervisor 0.3. Der Hypervisor ist aus Komponenten aufgebaut
Gemeinschaftsprojekt Rust-VMM, an dem neben Intel auch Alibaba, Amazon, Google und Red Hat teilnehmen. Rust-VMM ist in der Sprache Rust geschrieben und ermöglicht die Erstellung aufgabenspezifischer Hypervisoren. Cloud Hypervisor ist ein solcher Hypervisor, der einen High-Level-Virtual-Machine-Monitor (VMM) bereitstellt, der auf KVM läuft und für Cloud-native Aufgaben optimiert ist. Projektnummer ist verfügbar lizenziert unter Apache 2.0.

Cloud Hypervisor konzentriert sich auf die Ausführung moderner Linux-Distributionen mit virtiobasierten paravirtualisierten Geräten. Zu den genannten Hauptzielen zählen: hohe Reaktionsfähigkeit, geringer Speicherverbrauch, hohe Leistung, vereinfachte Konfiguration und Reduzierung möglicher Angriffsvektoren.

Die Emulationsunterstützung wird auf ein Minimum beschränkt und der Fokus liegt auf der Paravirtualisierung. Derzeit werden nur x86_64-Systeme unterstützt, AArch64-Unterstützung ist jedoch geplant. Für Gastsysteme werden derzeit nur 64-Bit-Builds von Linux unterstützt. CPU, Speicher, PCI und NVDIMM werden bei der Montage konfiguriert. Es ist möglich, virtuelle Maschinen zwischen Servern zu migrieren.

In der neuen Version:

  • Die Arbeit an der Verlagerung paravirtualisierter E/A in separate Prozesse wurde fortgesetzt. Die Möglichkeit, Backends zu verwenden, wurde hinzugefügt, um mit Blockgeräten zu interagieren vhost-user-blk. Durch die Änderung können Sie Blockgeräte basierend auf dem vhost-user-Modul mit Cloud Hypervisor verbinden, z SPDK, als Backends für paravirtualisierten Speicher;
  • Unterstützung für die Verlagerung von Netzwerkvorgängen auf Backends, eingeführt in der letzten Version vhost-user-net, erweitert um ein neues Backend auf Basis eines virtuellen Netzwerktreibers TAP. Das Backend ist in Rust geschrieben und wird jetzt in Cloud Hypervisor als wichtigste paravirtualisierte Netzwerkarchitektur verwendet;
  • Um die Effizienz und Sicherheit der Kommunikation zwischen der Host-Umgebung und dem Gastsystem zu erhöhen, wird eine hybride Implementierung von Sockets mit AF_VSOCK-Adressierung (virtuelle Netzwerk-Sockets) vorgeschlagen, die über virtio funktioniert. Die Umsetzung orientiert sich an den Projektentwicklungen Firecracker, entwickelt von Amazon. Mit VSOCK können Sie die Standard-POSIX-Sockets-API für die Interaktion zwischen Anwendungen auf der Gast- und Hostseite verwenden, was es einfach macht, gewöhnliche Netzwerkprogramme für eine solche Interaktion anzupassen und die Interaktion mehrerer Client-Programme mit einer Serveranwendung zu implementieren;
  • Bereitstellung erster Unterstützung für die Verwaltungs-API mithilfe des HTTP-Protokolls. Zukünftig wird es diese API ermöglichen, asynchrone Vorgänge auf Gastsystemen zu initiieren, wie zum Beispiel das Hot-Plugging von Ressourcen und die Migration von Umgebungen;
  • Eine Ebene mit einer Transportimplementierung basierend auf virtio MMIO (Memory Mapped Virtio) hinzugefügt, mit der minimalistische Gastsysteme erstellt werden können, die keine PCI-Bus-Emulation erfordern;
  • Im Rahmen der Initiative zur Erweiterung der Unterstützung für die Ausführung verschachtelter Gastsysteme hat Cloud Hypervisor die Möglichkeit hinzugefügt, paravirtualisierte IOMMU-Geräte über Virtio weiterzuleiten, was die Sicherheit der verschachtelten und direkten Weiterleitung von Geräten verbessert.
  • Unterstützung für Ubuntu 19.10;
  • Möglichkeit hinzugefügt, Gastsysteme mit mehr als 64 GB RAM auszuführen.

Darüber hinaus kann darauf hingewiesen werden neue Version benachbart entwickelt Monitor der virtuellen Maschine Firecracker, ebenfalls in Rust geschrieben, basiert auf Rust-VMM und läuft auf KVM. Firecracker ist ein Zweig des Projekts CrosVM, wird von Google zum Starten von Anwendungen verwendet Linux и Android in ChromeOS. Firecracker wird von Amazon Web Services entwickelt, um die Leistung und Effizienz der Plattformen AWS Lambda und AWS Fargate zu verbessern.

Die Plattform ist darauf ausgelegt, virtuelle Maschinen mit minimalem Overhead auszuführen und bietet Tools zum Erstellen und Verwalten isolierter Umgebungen und Dienste, die auf einem serverlosen Entwicklungsmodell (Funktion als Dienst) basieren. Firecracker bietet leichte virtuelle Maschinen, sogenannte MicroVMs, die Hardware-Virtualisierungstechnologien nutzen, um eine vollständige Isolation zu gewährleisten und gleichzeitig die Leistung und Flexibilität herkömmlicher Container zu bieten. Wenn Sie beispielsweise Firecracker verwenden, überschreitet die Zeit vom Start der microVM bis zum Start der Anwendungsausführung 125 ms nicht, sodass Sie neue virtuelle Maschinen mit einer Intensität von bis zu 150 Umgebungen pro Sekunde starten können.

Die neue Version von Firecracker fügt einen Betriebsmodus hinzu, ohne den API-Handler zu starten („—no-api“), wodurch die Umgebung nur auf die in der Konfigurationsdatei fest codierten Einstellungen beschränkt wird. Die statische Konfiguration wird über die Option „--config-file“ angegeben und im JSON-Format definiert. In den Befehlszeilenoptionen wurde außerdem Unterstützung für das Trennzeichen „-“ hinzugefügt. Die danach angegebenen Flags werden ohne Verarbeitung entlang der Kette weitergegeben.

Amazon, das auch Firecracker entwickelt kündigte die über die Bereitstellung von Sponsoring für die Entwickler der Programmiersprache Rust. Es wird darauf hingewiesen, dass Rust in den Projekten des Unternehmens zunehmend zum Einsatz kommt und Entwicklungen darauf bereits in Diensten wie Lambda, EC2 und S3 umgesetzt wurden. Amazon hat dem Rust-Projekt die Infrastruktur zur Verfügung gestellt, um Releases und Builds in S3 zu speichern, Regressionstests in EC2 auszuführen und eine docs.rs-Site mit Dokumentation für alle Pakete aus dem crates.io-Repository zu verwalten.

Amazon auch eingeführt программу AWS-Werbeguthaben, wo Open-Source-Projekte kostenlosen Zugriff auf AWS-Services erhalten, die für Ressourcenspeicherung, Build, kontinuierliche Integration und Tests verwendet werden können. Zu den bereits zur Teilnahme am Programm zugelassenen Projekten zählen neben Rust auch AdoptOpenJDK, Maven Central, Kubernetes, Prometheus, Envoy und Julia. Einreichungen werden von jedem Open-Source-Projekt akzeptiert, das unter OSI-genehmigten Lizenzen bereitgestellt wird.

Source: opennet.ru

Kommentar hinzufügen