KVM: wirtualizacja w kategorii lekkiej



Wirtualizacja realizuje się generalnie na trzy sposoby:

  • Kontenery, czyli jedno jądro zapewnia kilka oddzielnych przestrzeni użytkownika. Do takiego rozwiązania zaliczają się solarisowe Zony, linuksowy OpenVZ i VServer, który podoba się Dosiowi
  • parawirtualizacja w rodzaju Xen, rozdzielne są dodatkowo jądra, ale wymaga to modyfikacji systemu operacyjnego
  • pełna wirtualizacja czyli znany VMware. Emuluje niemal całość sprzętu, nie wymaga modyfikacja systemu operacyjnego.
Do listy można jeszcze dopisać QEMU, jako ostatni punkt. Nie będę się jednak nad nim rozwodził, jak również nie będę opisywał wad i zalet pozostałych rozwiązań.

Moda na wirtualizację jest tak silna, że popularne procesory x86 i amd64 dorobiły się specjalnych rozkazów wspierających ją. Od strony Intela jest to VT-x (Virtualization Technology, nazwa kodowa Vanderpool), AMD zaś ma SVM (Secure Virtual Machine, zwana też Pacifica). Dostępne są w procesorach Core Duo, Opteron rev. F i wyższych. Oczywiście IBM ma wirtualizację od 30 lat, hypervisor obecny jest też w procesorach UltraSPARC i Cell Broadband Engine.

Problem z parawirtualizacją polega na tym, że wspomnianego zarządcę trzeba napisać, wyposażyć go w miarę sprawny scheduler i jeszcze jakoś zwirtualizować urządzenia I/O. Ale po co wynajdywać koło od nowa? Tak się składa, że bardzo blisko mamy dostępny całkiem sensowny proces szeregujący. Jest w jądrze Linuksa. Więc może zwykłe jądro wykorzystać jako hypervisora?

Jak pomyśleli, tak też zrobili programiści od Kernel Virtual Machine. Zastosowanie sprzętowych rozszerzeń wirtualizacji pzowoliło na znaczne uproszczenie modyfikacji jądra. Do emulacji urządzeń I/O użyli istniejącego już rozwiązania - QEMU, z niewielką łatką wyłączającą emulację CPU (bo przecież jest fizyczne do wykorzystania).

Efektem jest całkiem sprawnie działająca wirtualizacja. Każda uruchomiona maszyna wirtualna jest po prostu jednym z procesów działających w systemie. Wątki w obrębie tego procesu reprezentują wirtualne CPU. Czyli zarządzanie zasobami realizuję się poprzez zmiany priorytetu standardowymi narzędziami.

Maszyny mogą być uruchamiane przez zwykłych użytkowników -- dostępem do rzeczywistego sprzętu zarządza się przez odpowiednie uprawnienia w /dev/*.

Oczywiście zaletą użycia rozszerzeń wirtualizacyjnych jest możliwość uruchamiania niezmodyfikowanych systemów operacyjnych. Tak, pod kvm można uruchomić sobie MS Windows, również 64-bitowe. Rozwiązanie proponowane przez autorów KVM jest bardzo ciekawe i zostało zaproponowane do włączenia do jądra, co też pewnie niedługo się stanie.

Niestety, w tej chwili nie mogę podzielić się wrażeniami z ,,pierwszej ręki'', ponieważ debile z Lenovo postanowili zablokować wirtualizację w moim laptopie.


Archived comments:

sziwan 2006-11-08 10:36:22

Xen 3.0 na wspierającym sprzęcie (Intel z VT-x lub AMD z SVM) potrafi uruchamiać niezmodyfikowane guest OS-y (podobno również Windows), przez co zbliża się znacznie do prawdziwej wirtualizacji (choć technicznie jest to dalej parawirtualizacja ze względu na emulowane urządzenia I/O).

bmalkow 2007-08-06 21:32:23

Też mam lenovo (co prawda tylko n100) i też coś nie mogę się doszukać VT w biosie. /proc/cpuinfo mówi, że mam 'vmx', więc czy jest włączone?

zdz 2007-08-06 23:14:59

bmalkow: tak, to wygląda na włączone.

Comments


Comments powered by Disqus