Kernel-based Virtual Machine

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj
Kernel-based Virtual Machine
Hipernadzorca
Kvmbanner-logo2 1.png
Logo programu
Kvm running various guests.png
Producent Open Virtualization Alliance (OVA)
Platforma sprzętowa Linux
Napisane w C
Licencja GNU General Public License i GNU Lesser General Public License
www.linux-kvm.org

Kernel-based Virtual Machine, czyli maszyna wirtualna bazująca na jądrze to środowisko wirtualizacyjne dla systemów linuksowych.

Wyróżnia się system gospodarza i gościa. Gospodarz to system operacyjny (OS) kontrolujący sprzęt - "goły 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ękowa, porty I/O itd. Dla wirtualnej maszyny (VM) sprzęt może być emulowany, parawirtualizowany, lub dostępny (pass through) przelotowo. 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), np. 30 ms i jest trudno wykrywalna przez OS gościa. Może to być np. wykorzystane do przenoszenia ciągle pracującego Windowsa z Polski za ocean żeby ominąć (bez rozbadania 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 | edytuj kod]

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 | edytuj kod]

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 tłumaczenie sieciowe. 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 | edytuj kod]

KVM nie obsługuje trybu parawirtualizacji Xena.

Zobacz też[edytuj | edytuj kod]

Przypisy

  1. kvm.modules sprawdza: 'if [ $(grep -c svm /croc/cpuinfo) -ne 0 ];' z RHEL v 6.3
  2. 5.2. KVM limitations[1]
  3. Virtual Machine Manager
  4. 0 w eth0 itp. jest zapisem umownym
  5. RHEL v6.3
  6. ma problemy z mostkowaniem zalecana jest tu virtio
  7. Faq - Kvm

Linki zewnętrzne[edytuj | edytuj kod]