Kernel-based Virtual Machine
KVM, Kernel-based Virtual Machine, czyli Maszyna Wirtualna bazująca na Jądrze srodowisko wirtualizacyjne dla systemów linuksowych.
Środowisko KVM umożliwia tworzenie sieci maszyn wirtualnych. Każda maszyna wirtualna posiada prywatny zwirtualizowany sprzęt: bios, kartę sieciową, dysk twardy, kartę graficzną, dzwiękową, porty I/O itd. Dla wirtulnej maszyny (VM) sprzet może być emulowany, parawirtualizowany, lub dostepny (pass trought) przepustowo. Im mniejszy stopień programowej emulacji tym obciązenie procesora jest mniejsze, wydajność VM jest większa, jednocześnie niekożystnie maleje kontrola przez OS co może zmniejszać bezpieczństwo systemu. KVM wykorzystuje sprzętowe technologie wirtualizacyjne. Dla AMD-V lub Intel VT-x) warunek sprzętowej wirtualizacji jest spełniony wtedy gdy /proc/cpuinfo zawiera odpowienio znacznik svn lub vmx[1].
Pod maszynami wirtualnymi możliwa jest instalacja i wspólne działanie naraz dowolnej ilości systemów Linux, Windows i innych. KVM umozliwia zatrzymanie, zapisanie stanu (snapshot), klonowanie lub przenoszenie (migrację) pracującej wirtualnej maszyny na inny sprzęt. Możliwe jest wyłaczenie komputera na kótrym uruchomiono wirtualną maszyanę tak by dla jej uzytkowników VM pracowała nieprzerwanie. Możliwa jest też wilokrotna wirtualna podróż w czasie do stanu pracy wirtualnego komputera zamrożonego z przeszłości. Inne środowiska wirtualizacji mają podobne możliwości.
Zarządzanie KVM może się odbywać przez klikanie w virt-manager[2] lub z palca przez virsh.
historia
KVM historycznie pochodził od w pełni wirtualizowanego rozwiązania dla systemu Linux na sprzęcie x86. Zawiera moduł jądra (nazwany kvm.ko) i komponent przestrzeni użytkownika (zmodyfikowaną wersję Qemu). Komponent KVM pojawił się w jądrze Linuksa wraz z wersją 2.6.20.
sieć
W KVM sieć może być w trybie VEPA, mostowym, prywatym lub przepustowym. Urządzenia sieciowe konfigurowane są jako macvtap do eth0[3] , most miedzy vibro0-nic i macvetap lub virtualną sieć między vnet0 i macvetap. Głównie do komunikacji inicjalizowanej z VM do świata używana jest też NAT czyli tłumaczenie sieciowe i jest ustawiniem domyślnym w LSD KVM [4]. Wirtualne NIC w KVM to e1000, ne2k_pci, pcnet, rtl8139[5] i vitrio. W przepustowym trybie sieci współdzielona jest niewirtualna karta sieciowa.
porównaie
KVM nie obsługuje trybu parawirtualizacji Xena.