Aktualizacja hiperwizorów Intel Cloud Hypervisor 0.3 i Amazon Firecracker 0.19 napisanych w języku Rust

Intel опубликовала nowa wersja hypervisora Hiperwizor chmury 0.3. Hiperwizor jest zbudowany na komponentach
wspólny projekt Rust-VMM, w którym oprócz Intela uczestniczą także Alibaba, Amazon, Google i Red Hat. Rust-VMM jest napisany w języku Rust i umożliwia tworzenie hiperwizorów dostosowanych do konkretnego zadania. Cloud Hypervisor to jeden z takich hypervisorów, który zapewnia monitor maszyn wirtualnych wysokiego poziomu (VMM) działający na KVM i zoptymalizowany pod kątem zadań natywnych w chmurze. Kod projektu dostępny na licencji Apache 2.0.

Cloud Hypervisor koncentruje się na uruchamianiu nowoczesnych dystrybucji Linuksa przy użyciu parawirtualnych urządzeń opartych na virtio. Wśród kluczowych celów wymieniono: wysoką responsywność, niskie zużycie pamięci, wysoką wydajność, uproszczoną konfigurację i redukcję możliwych wektorów ataku.

Obsługa emulacji jest ograniczona do minimum, a nacisk położony jest na parawirtualizację. Obecnie obsługiwane są tylko systemy x86_64, ale planowana jest obsługa AArch64. W przypadku systemów gościnnych obsługiwane są obecnie tylko 64-bitowe kompilacje systemu Linux. Procesor, pamięć, PCI i NVDIMM są konfigurowane na etapie montażu. Istnieje możliwość migracji maszyn wirtualnych pomiędzy serwerami.

W nowej wersji:

  • Kontynuowano prace nad przeniesieniem parawirtualnych operacji we/wy do oddzielnych procesów. Dodano możliwość wykorzystania backendów do interakcji z urządzeniami blokowymi vhost-user-blk. Zmiana umożliwia podłączenie urządzeń blokowych opartych na module vhost-user do Cloud Hypervisor, takich jak SPDKjako backendy dla parawirtualnego przechowywania danych;
  • Wprowadzona w ostatniej wersji obsługa przenoszenia operacji sieciowych do backendów vhost-user-net, rozbudowany o nowy backend oparty na sterowniku sieci wirtualnej TAP. Backend jest napisany w języku Rust i jest obecnie używany w Cloud Hypervisor jako główna architektura sieci parawirtualnej;
  • Aby zwiększyć efektywność i bezpieczeństwo komunikacji pomiędzy środowiskiem hosta a systemem gościa zaproponowano hybrydową implementację gniazd z adresacją AF_VSOCK (gniazda sieci wirtualnej), pracujących poprzez virtio. Wdrożenie opiera się na opracowaniach projektu Petarda, opracowany przez Amazon. VSOCK umożliwia wykorzystanie standardowego API POSIX Sockets do interakcji pomiędzy aplikacjami po stronie gościa i hosta, co ułatwia dostosowanie zwykłych programów sieciowych do takiej interakcji i zaimplementowanie interakcji kilku programów klienckich z jedną aplikacją serwerową;
  • Zapewniono wstępną obsługę interfejsu API zarządzania przy użyciu protokołu HTTP. W przyszłości ten interfejs API umożliwi inicjowanie operacji asynchronicznych w systemach gościnnych, takich jak podłączanie zasobów podczas pracy i migracja środowisk;
  • Dodano warstwę z implementacją transportu opartą na virtio MMIO (Memory mapped virtio), za pomocą której można tworzyć minimalistyczne systemy gościa, które nie wymagają emulacji magistrali PCI;
  • W ramach inicjatywy mającej na celu rozszerzenie obsługi zagnieżdżonych systemów gościnnych, Cloud Hypervisor dodał możliwość przekazywania parawirtualnych urządzeń IOMMU poprzez virtio, co poprawia bezpieczeństwo zagnieżdżonego i bezpośredniego przekazywania urządzeń.
  • Zapewnione wsparcie dla Ubuntu 19.10;
  • Dodano możliwość uruchamiania systemów gościnnych z więcej niż 64 GB pamięci RAM.

Dodatkowo można to zauważyć nowe wydanie przylegający rozwinięty monitor maszyny wirtualnej Petarda, również napisany w Rust, oparty na Rust-VMM i działający na KVM. Petarda jest rozwidleniem projektu CrosVM, używany przez Google do uruchamiania aplikacji Linux и Android w ChromeOSie. Firecracker jest rozwijany przez Amazon Web Services w celu poprawy wydajności i efektywności platform AWS Lambda i AWS Fargate.

Platforma przeznaczona jest do uruchamiania maszyn wirtualnych przy minimalnym nakładzie pracy i udostępnia narzędzia do tworzenia i zarządzania izolowanymi środowiskami i usługami zbudowanymi w oparciu o model rozwoju bezserwerowego (funkcja jako usługa). Firecracker oferuje lekkie maszyny wirtualne, zwane microVM, które wykorzystują technologie wirtualizacji sprzętu, aby zapewnić pełną izolację, zapewniając jednocześnie wydajność i elastyczność tradycyjnych kontenerów. Przykładowo przy wykorzystaniu Firecrackera czas od momentu uruchomienia microVM do rozpoczęcia wykonywania aplikacji nie przekracza 125ms, co pozwala na uruchamianie nowych maszyn wirtualnych z intensywnością do 150 środowisk na sekundę.

Nowa wersja Firecrackera dodaje tryb działania bez uruchamiania modułu obsługi API („-no-api”), ograniczając środowisko jedynie do ustawień zakodowanych na stałe w pliku konfiguracyjnym. Konfiguracja statyczna jest określana za pomocą opcji „--config-file” i jest definiowana w formacie JSON. Z opcji wiersza poleceń dodano także obsługę separatora „-”, po którym określone flagi są przekazywane w łańcuchu bez przetwarzania.

Amazon, który również rozwija Firecracker ogłosił w sprawie sponsorowania twórców języka programowania Rust. Należy zauważyć, że rdza jest coraz częściej wykorzystywana w projektach firmy, a opracowania na jej temat zostały już wdrożone w usługach takich jak Lambda, EC2 i S3. Amazon zapewnił projektowi Rust infrastrukturę do przechowywania wydań i kompilacji w S3, przeprowadzania testów regresji w EC2 i utrzymywania witryny docs.rs z dokumentacją wszystkich pakietów z repozytorium crates.io.

Amazona także wprowadzono program Kredyt promocyjny AWS, gdzie projekty open source mogą uzyskać bezpłatny dostęp do usług AWS, które można wykorzystać do przechowywania zasobów, budowania, ciągłej integracji i testowania. Wśród projektów już zatwierdzonych do udziału w programie, oprócz Rust, odnotowano AdoptOpenJDK, Maven Central, Kubernetes, Prometheus, Envoy i Julia. Przyjmowane są zgłoszenia z dowolnego projektu open source dostarczonego na podstawie licencji zatwierdzonych przez OSI.

Źródło: opennet.ru

Dodaj komentarz