Maszyna wirtualna oparta na jądrze
Opracowany przez | Open Virtualization Alliance (OVA) |
---|---|
Ostatnia wersja | 17 |
Kaucja | git: //git.kernel.org/pub/scm/virt/kvm/kvm.git |
Napisane w | VS |
Rodzaj | Hypervisor |
Licencja | Powszechna Licencja Publiczna GNU i pomniejsza Powszechna Licencja Publiczna GNU |
Stronie internetowej | http://www.linux-kvm.org |
KVM ( maszyna wirtualna oparta na jądrze ) to darmowy hiperwizor typu I dla systemu Linux . KVM został zintegrowany z jądrem Linuksa od wersji 2.6.20.
Początkowo działa na procesorach o architekturze x86 z instrukcjami wirtualizacji Intel VT lub AMD-V . Od tego czasu KVM został przeniesiony na architekturę Power PC , IA-64 i ARM od jądra Linux 3.9.
Rozwój KVM rozpoczął się w firmie Qumranet przez Avi Kivity. Firma Red Hat kupiła Qumranet4 września 2008. Od tego czasu KVM jest współzarządzany przez programistę Marcelo Tosatti .
KVM został zaprojektowany z gałęzi z QEMU , a następnie QEMU z kolei wprowadza się kod źródłowy drugiego tak, że dwa są współzależne. Główną zmianą jest obsługa modułu kvm . Kiedy mówimy o KVM, zwykle mamy na myśli całość: zmodyfikowaną wersję QEMU i moduł kvm .
QEMU jest w stanie, dzięki modułu KQEMU ( K dla Kernel „ jądra ” w języku angielskim), aby wykonać kod maszynowy bezpośrednio na procesorze hosta w celu przyspieszenia emulacji. Ta technologia, chociaż zapewnia znaczny wzrost wydajności, nie jest doskonała. Należy wprowadzić mechanizmy ochrony w celu przechwytywania i naśladowania uprzywilejowanych wydarzeń. Jednak kod jądra systemu gościa normalnie działa całkowicie w trybie uprzywilejowanym. Będąc emulowanym w klasyczny sposób, jest więc silnie karany, będąc kluczowym elementem systemu.
Procesory z rodziny x86 mają 4 poziomy uprawnień do wykonywania, zwane pierścieniami ochrony . Oprócz tych pierścieni, najnowsze procesory zawierają nowy mechanizm izolacji, który umożliwia uruchamianie systemu gościa bezpośrednio na procesorze niezależnie od pierścieni zabezpieczających, których wymaga do działania, zapewniając jednocześnie ochronę przed odczytem i zapisem w pamięci, która nie należy do maszyna wirtualna. Jest to możliwe głównie dzięki jednostce MMU dedykowanej dla każdej maszyny wirtualnej na procesorze oraz przekierowaniu przerwań sprzętowych do hiperwizora maszyn wirtualnych (w tym przypadku KVM) w celu emulacji sprzętu potrzebnego systemowi gościa.
Technologie wdrożone przez dwie główne huty, którymi są AMD i Intel, są różne, moduł KVM jest dostępny w dwóch podmodułach: kvm-intel i amd kvm-; moduł kvm jest ostatecznie obecny tylko po to, aby zapewnić emulatorowi dodatkową abstrakcję .
W najnowszych wersjach KVM (przynajmniej wersja 60) możliwe jest zastosowanie mechanizmu podobnego do parawirtualizacji przy użyciu virtio . Pilot virtio są zawarte w jądrze Linux od wersji 2.6.25 do minimum. Istnieją również sterowniki virtio dla systemu Windows . Mechanizm ten pozwala na zwiększenie szybkości wykonywania, ponieważ nie jest już konieczne emulowanie urządzeń sprzętowych. Jednak system ten opuszcza ramy wirtualizacji w ścisłym tego słowa znaczeniu, ponieważ konieczne jest, aby piloci byli informowani, że są wykonywani w zwirtualizowanym środowisku.