L Twórcy projektów NetBSD ostatnio ogłosił utworzenie nowego hiperwizora i powiązany z nim stos wirtualizacji, który są już zawarte w eksperymentalnej gałęzi NetBSD-current i będzie oferowany w stabilnej wersji NetBSD 9.
NVMM wciąż jest ograniczone do obsługi architektury x86_64 i oferuje dwie wersje wykorzystania mechanizmów wirtualizacji sprzętu.
Jednym z nich jest x86-SVM z obsługą wirtualizacji procesorów AMD i rozszerzeniami x86-VMX dla procesorów Intel.
W obecnej postaci możliwe jest uruchomienie do 128 maszyn wirtualnych na hoście, z których każdemu można przypisać do 256 wirtualnych rdzeni procesora (VCPU) i 128 GB pamięci RAM.
Informacje o hiperwizorze NVMM
W prezentacji tego hypervisora twórcy projektu NetBSD wyjaśniają to NVMM zawiera sterownik działający na poziomie jądra systemu.
I to też koordynuje dostęp do sprzętowych mechanizmów wirtualizacji i stosu Libnvmm, który działa w przestrzeni użytkownika.
Interakcja komponentów jądra i przestrzeni użytkownika odbywa się za pośrednictwem IOCTL.
Jedną z cech NVMM, która odróżnia go od hiperwizorów, takich jak KVM, HAXM i Bhyve, jest to, że na poziomie jądra realizowany jest tylko minimalny wymagany zestaw mechanizmów wirtualizacji sprzętu, a cały kod emulacji komputera jest usuwany z jądra w tym samym czasie. czas przestrzeń użytkownika.
To podejście zmniejsza ilość kodu wykonywanego z podwyższonymi uprawnieniami i zmniejsza ryzyko że cały system jest zagrożony w przypadku ataków na luki w hiperwizorze.
Ponadto debugowanie i testowanie pomyłek projektu jest znacznie uproszczone.
Jednocześnie sam Libnvmm nie zawiera funkcji emulatora, a jedynie zapewnia API, które umożliwia integrację obsługi NVMM z istniejącymi emulatorami, na przykład z QEMU.
interfejs API wirtualizacji
Interfejs API obejmuje takie funkcje, jak tworzenie i uruchamianie maszyny wirtualnej, przydzielanie pamięci do systemu-gościa oraz przydzielanie VCPU.
Aby zwiększyć bezpieczeństwo i ograniczyć potencjalne wektory ataków, biblioteka libnvmm udostępnia tylko wyraźnie żądane funkcje.
Domyślnie złożone kontrolery nie są wywoływane automatycznie i nie można ich w ogóle używać, jeśli można z nich zrezygnować.
NVMM stara się upraszczać rozwiązania, nie popadając w komplikacje i pozwolić sobie na kontrolowanie jak największej liczby aspektów pracy.
Część NVMM na poziomie jądra jest dość dobrze zintegrowana z jądrem NetBSD. i pozwala osiągnąć wyższą wydajność poprzez zmniejszenie liczby przełączeń kontekstu między systemem operacyjnym gościa a środowiskiem hosta.
W przestrzeni użytkownika libnvmm próbuje dodać typowe operacje I/O i bez takiej potrzeby nie ucieka się do wywołań systemowych.
Wydajność
W przeciwieństwie do innych międzyplatformowych sterowników pseudojądra, takich jak VirtualBox czy HAXM, NVMM jest dobrze zintegrowany z jądrem NetBSD i to pozwala na optymalizację zmian kontekstu między gośćmi a gospodarzem, aby w niektórych przypadkach uniknąć kosztownych operacji.
Bezpieczeństwo
System alokacji pamięci bazuje na podsystemie pmap, że Umożliwia przenoszenie stron z pamięci gościa do partycji wymiany w przypadku braku pamięci w systemie.
NVMM jest wolny od globalnych blokad i skalowania, co pozwala na jednoczesne używanie różnych rdzeni procesora do uruchamiania różnych maszyn wirtualnych gościa.
W oparciu o QEMU przygotowano rozwiązanie wykorzystujące NVMM umożliwiające uruchomienie mechanizmów wirtualizacji sprzętu.
Trwają prace nad włączeniem przygotowanych poprawek do głównego zespołu QEMU.
El Paquete QEMU + NVMM pozwala już z powodzeniem uruchamiać systemy gości z FreeBSD, OpenBSD, Linux, Windows XP / 7 / 8.1 / 10 i inne systemy operacyjne w systemach x86_64 z procesorami AMD i Intel (sam NVMM nie jest powiązany z określoną architekturą).
Backend będzie mógł pracować na systemach ARM64). Z dodatkowych obszarów zastosowań NVMM zaobserwował również izolację w obszarze testowym poszczególnych aplikacji.
źródło: http://blog.netbsd.org