Kernel-based Virtual Machine
Logo Kernel-based Virtual Machine
Logo programu
Ilustracja
Autor Open Virtualization Alliance (OVA)
Język programowania C
Platforma sprzętowa Linux
Rodzaj Hipernadzorca
Licencja GNU General Public License i GNU Lesser General Public License
Strona internetowa

Kernel-based Virtual Machine (maszyna wirtualna bazująca na jądrze) – środowisko wirtualizacyjne dla systemów linuksowych.

Wyróżnia się system gospodarza i gościa. Gospodarz to system operacyjny (OS) kontrolujący sprzęt, czyli tzw. „goły metal” (ang. bare metal). Gość to OS wewnątrz gospodarza, któremu gospodarz udostępnia sprzęt.

Środowisko KVM (gospodarz lub gospodarze) umożliwia tworzenie sieci maszyn wirtualnych (goście). Każda maszyna wirtualna posiada prywatny zwirtualizowany sprzęt: bios, kartę sieciową, dysk twardy, kartę graficzną, dźwiękową, porty I/O itd. Dla wirtualnej maszyny (VM) sprzęt może być emulowany, parawirtualizowany, lub dostępny przelotowo (pass through). Może przypadać do 32 urządzeń PCI na gościa. Im mniejszy stopień programowej emulacji, tym obciążenie procesora jest mniejsze, wydajność VM jest większa, jednocześnie może maleć kontrola przez OS gospodarza, co może zmniejszać bezpieczeń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 odpowiednio znacznik svm lub vmx[1].

Pod maszynami wirtualnymi możliwa jest instalacja i wspólne działanie naraz dowolnej liczby systemów Linux, Windows i innych. KVM umożliwia przepełnianie (overcommit) zasobów: pamięci i CPU[2]. KVM umożliwia zatrzymanie, zapisanie stanu (snapshot), klonowanie lub przenoszenie (migrację) pracującego cały czas gościa do innego gospodarza. Przenoszenie działa, gdy obaj gospodarze przenoszonego gościa, mają podobne procesory (nie działa migracja z AMD na Intela i odwrotnie). Przerwa w pracy gościa (konieczna na końcową synchronizację migrowanych stanów pamięci i rejestrów), jest prawie natychmiastowa, wynosi np. 30 ms i jest prawie niewykrywalna przez OS gościa. Może to być np. wykorzystane do przenoszenia ciągle pracującego Windowsa z Polski za ocean żeby ominąć (bez wyłączania systemu) sztuczne terytorialnie restrykcje w dostępie do zasobów sieciowych. Możliwa jest też wielokrotna wirtualna podróż w czasie do stanu pracy wirtualnego komputera zamrożonego z przeszłości. Inne środowiska wirtualizacji mogą mieć podobne możliwości.

Zarządzanie KVM może się odbywać przez interfejs graficzny w virt-manager[3] lub z poziomu wiersza poleceń przez virsh.

Historia

edytuj

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ć

edytuj

W KVM sieć może być w trybie VEPA, mostowym, prywatnym lub przepustowym. Urządzenia sieciowe konfigurowane są jako macvtap do eth0[4], most między vibro0-nic i macvetap lub wirtualną sieć między vnet0 i macvetap.

Do izolacji inicjalizowanego ze świata dostępu do gościa, używana jest też NAT, czyli translacja adresów IP. Jest to domyślne ustawienie w LSD KVM[5]. Wirtualne NIC w KVM to e1000, ne2k_pci, pcnet, rtl8139[6] i virtio. Można dla gościa używającego NAT podłączyć by był dostępny z zewnątrz przez przekierowanie portów.

W przepustowym trybie sieci 'macvtap do ethN' używane są słabo zwirtualizowane karty sieciowe. Ograniczenia w sterowniku (słaba wirtualność) wymaga oddzielnych ethN urządzeń dla gości, co wymaga by w systemie gospodarza istniały fizyczne dodatkowe porty sieciowe. Przy zastosowaniu macvtap do ethN ruch sieciowy z gościa wychodzi bezpośrednio do sieci, gość jest dostępny z sieci i monitorując sieć (np przez Wireshark) widać wirtualną maszynę gościa jako niezależny sieciowy komputer.

Porównanie[7]

edytuj

KVM nie obsługuje trybu parawirtualizacji Xena.

Zobacz też

edytuj

Przypisy

edytuj
  1. kvm.modules sprawdza: 'if [ $(grep -c svm /proc/cpuinfo) -ne 0 ];' z RHEL v 6.3
  2. 5.2. KVM limitations
  3. Virtual Machine Manager Home [online], virt-manager.org [dostęp 2017-11-24] (ang.).
  4. 0 w eth0 itp. jest zapisem umownym
  5. RHEL v6.3
  6. ma problemy z mostkowaniem zalecana jest tu virtio
  7. Faq - Kvm [online], www.linux-kvm.org [dostęp 2017-11-24] (ang.).

Linki zewnętrzne

edytuj

📚 Artikel Terkait di Wikipedia

Lista skrótów i skrótowców używanych w informatyce

Java Virtual Machine KDE – K Desktop Environment KDM – KDE Display Manager KISS – Keep It Simple, Stupid KNR – Katalog Nakładów Rzeczowych KVM – Kernel-based

SmartOS

która łączy w sobie technologię OpenSolaris z wirtualizacją Kernel-based Virtual Machine. joyent / illumos-joyent. github.com, 2015-04. [dostęp 2020-05-20]

Maszyna wirtualna

emulator Kernel-based Virtual Machine Xen VMware Workstation VirtualBox QEMU AMD Virtualization PearPC wirtualna maszyna Javy .NET Parrot Parallel Virtual Machine

KVM

podpięcie urządzeń jak klawiatura do wielu zestawów komputerowych Kernel-based Virtual Machine – mechanizm pełnej wirtualizacji, obecny w jądrze Linuksa od

QEMU

VirtualBox w znaczący sposób zwiększają komfort pracy (m.in. eliminując skokowe wyświetlanie kursora myszki, które ma miejsce w QEMU). Kernel-based Virtual

Spis formatów plików

file; dBASE IV $ED Editor temporary file; MS C $O1 Pipe file; DOS $VM Virtual manager temporary file; Windows 3.x )2( LHA archiver temporary file; LHA