Fullplatform virtualizálás Linuxon desktop célra: helyzetjelentés

Egyik fejlesztésem tesztelése végett Windows -t kellett installálnom. A virtualizáció kézenfekvő megoldás ilyenkor, csak az eszköz nem, mindenki mást dícsér. Nem szeretek felülni az aktuális hype -nak, előítéletektől mentesen próbáltam végig minden említésre méltó megoldást. Lássuk.

Nálam a host Fedora 12 (x64), guest -nek Win7 -et (x64) néztem ki, mivel egyszerű installálni és decens. A guest -en kattingatós desktop szoftverrel tesztelek aminek nem kell sok erőforrás, sokat idle, így a virtualizáció teljesítménye nem a legfontosabb. Legfontosabb szempontjaim a következők:

  • jó GUI videoteljesítmény és kellemes júzerélmény a guest -ben, tudjátok: az egér ne akadozzon, kép/szöveg scrollozásakor ne legyen lag, a menü azonnal felugorjon, stb
  • alacsony cpu és memória használat, főleg ha a guest idle (desktopon sokat az)
  • támogatott legyen a legfrissebb linux disztribeken is
  • könnyű install és konfigurálás a host -on
  • kis overhead/nagy teljesítmény mint utolsó szempont

Miután a kívánságlista megvolt, megvizsgáltam a következő megoldásokat: Vmware, Virtualbox, KVM, Parallels.

Xen: Bizony, nem próbáltam ki. Gyakorlatilag a nagy új desktop disztribek már nem szállítják a dom0 támogatást, legalábbis addig, amíg nem lesz pv_ops alapú (mainline -ba bekerülő) dom0. Ezen dolgoznak a Xen -esek, a 2.6.35 -ba már be akarják tolni, ami persze esélytelen, de legalább van mozgás. Windows -ra egyébként nincs free Xen video driver, emiatt is nem erőltettem, a GUI teljesítmény valszeg nem nyűgözne le. Nem igazán desktop kategória.

Virtualbox: Az újabb disztribek eleve tartalmazzák, yum|apt-get install és készen áll, reboot se kell. A GUI a Vmware Player koppintása. A Win7 -et gyerekjáték volt feltenni, a guest drivereket első inditáskor magától leszedte a netről .iso -ban és felcsatolta a guest -be, autorun -al simán fel is ment.
Alapértelmezésben writeback cache -t használ, egy áramszünet kinyírhatná a guest fájlrendszerét, bizony sokat áldoz a teljesítményért. A GUI teljesítmény és a juzer-élmény ezzel a legjobb, ezt a mérés is kimutatta, igazán fürge!

Vmware: A Vmware sokféle kiadást kínál, de alapvetően csak 2 virtualizációs technológia áll mögöttük különböző körítéssel: egy oprendszerbe épülő hypervisor (Player) és egy standalone hypervisor (ESX/i). A Player, ami a desktop virtualizáláshoz ideális, ingyenes.
Az install egy binary blob, tele statikusan fordított binárisokkal és libekkel. Sajnos Fedora 12 -n újra kell forgatni miatta a libcurl -t, a bináris terjesztés szépségei, ugye.. A Win7 install már sima ügy volt.
Sok driver van benne Win7 -hez, a videóhoz egy WDDM driver is. Nem találtam benne semmit amivel több lenne mint a Virtualbox, se teljesítményben, se használhatóságban. Cserébe a statikusan fordított binárisok miatt a GUI lassan indul és sok ramot zabál..

KVM: A mainline kernel megoldása, a libvirt és a virt-manager épül fölé mint management-réteg. A GUI kicsit buta, néha a libvirt xml fájljaiba kell nyúlni.
Alapértelmezésben writethrough cache -el, ami miatt fájl alapú storage írása nagyon lassú, annyira, hogy a Win7 install kb 2 óra! A writeback cache -t a libvirt xml fájljába kell bekapcsolni, megtáltosodik tőle. A Redhat készített lan/block drivert Win7 -hez, viszont a Microsoft nem írta alá, emiatt csak windows hekkeléssel lehet használni őket, nekem nem is sikerült installálni, feladtam. A KVM konzol teljesítménye max 33FPS (ld. GUI_REFRESH_INTERVAL), ami igen gyatra GUI élmény. Ismert hiba, hogy az -usbdevice opció nagy cpu használatot okoz a host -on, a virt-manager pedig alapból hozzárendeli a "Tablet" eszközt a guest -ekhez (ami egyelő az -usbdevice tablet opcióval), ezt kell eltávolítani és utána a KVM produkálja a legkisebb idle cpu használatot! A KVM érdeme továbbá a 2.6.32 -ben debütált Kernel Samepage Merging (memória deduplikáció), ami remekül működik, sokkal több szabad memória maradt a host -on mint a többi megoldással!
A Linux guest -ek automatikusan paravirtualizációra váltanak KVM alatt, amitől a host -on a cpu használat 0-1% között van ha a guest idle (az előző két megoldással ez 4-5%).

Parallels: Főleg Mac -en ismert, a Linux/Windows verzió régebbi is mint a Mac -es. 2.6.32 -es kernelre nem fordult le a modulja, nálam itt el is bukott, nem fogok downgrade -elni miatta. A leírások szerint nincs benne semmi ami miatt megérne felküszködni..

Sok apró hibája ellenére engem a KVM lenyűgözött, az alacsony cpu használat, a memória deduplikáció, a headless mód (becsukhatod a virtualizált oprendszer ablakát átmenetileg) remek, ugyanakkor a 33Hz -es konzolfrissítés alkalmatlanná teszi desktop virtualizálásra. Kipróbáltam azt is, hogy rdesktop -al csatlakoztam a Win7 -re, sajnos az az élmény is elmaradt a Virtualbox konzol-élménytől.

A Virtualbox egyszerű, gyors, Windows guest -hez ideális. Memória deduplikáció kéne bele, illetve nem bánnám, ha kicsit alacsonyabb lenne a cpu használat ha a guest idle, de ettől függetlenül remek eszköz, amit desktop virtualizálásra terveztek. Perpillanat ezt fogom használni a Win7 -hez, ha pedig szervert/szerverfarmot kell virtualizálni akkor KVM..

Ti hogy látjátok..?

UPDATE: Most találtam meg a Redhat által indított Spice project -et, ami a KVM gyenge konzolteljesítményére lehet gyógyír. Egyelőre sok infó nincs róla, de félek, hogy egyelőre csak Windows XP -n működik. Mindenesetre hiánypótló és ígéretes project, kipróbálom amint tudom.

Hozzászólások

Köszönöm szépen, hasznos és érdekes írás!

egy oprendszerbe épülő hypervisor (Player) és egy standalone hypervisor (Server)
Finom kis korrekció hozzá: az OS-fölé települő hosted megoldára épül a Player, Workstation és a *Server* is. A "bare-metal" standalone hypervisorra az ESX és ESXi Serverek épülnek.

A VMware Server tehát tkp. egy kicsit lebutított Workstation, webes kezelőfelülettel ellátva. Van belőle ingyenes változat. Többet tud, mint a Player, de desktop használatra szerintem kényelmetlen. VirtualBox-hoz képest mindenképpen, az azért lassacskán már kezd egy súlycsoport lenni a Workstationnel.

Megjegyzem az utóbbi időkben a Workstation Linuxos változatával is egyre többet szívok. Bizonyos virtuális gépek futtatásakor hajlamos signal 6-tal elszállni. Sokféle host gépen, többféle disztróval. Kapok egy szép kis stack trace-t a logba, csupa bináris címekkel és nem örülök neki, mert még debuggolni sem igazán tudom.

A Linux guest -ek automatikusan paravirtualizációra váltanak KVM alatt
Ehhez azért relatíve friss kernel kell a guestbe is. CentOS és hasonlókban még "özönvíz előtti" LTS kernelek vannak, amikbe úgy látom, hogy nem backportolták ezt a feature-t. De szerencsére hamarosan jön az RHEL6 és akkor nemsokkal később várható a CentOS 6 is.
---
Internet Memetikai Tanszék

2.6.21 -el jött a KVM paravirtualizált mód, ami épp 3 éve lett kiadva
CentOS 5.4-ben (és RHEL 5.4-ben is) 2.6.18 LTS kernel van. Persze lehet fordítani újabbat rá, csak ezekben a disztrókban pont az a pláne, hogy nem szokás kicserélgetni a repo-s kernelt.
---
Internet Memetikai Tanszék

"Ti hogy látjátok..?"

Én így: subscribe :)

Vmware-t használok, nekem bejön. Nem tudom, mennyivel lenne lassabb vagy döcögősebb a Virtualbox, mert ahhoz meg a Qt lib-eket kellene behúzni GNOME alá. :S

-----
"Egy jó kapcsolatban a társunkat az ő dolgában kell támogatni, nem a miénkben."

Mar megfigyeltem, mindig olyan bajaid vannak, amit meg sosem hallottam, meg a legtobbszor mas se. Peldaul nekem siman frissul a gtk is, komplett gnome kornyezetet hasznalok, megse esik pofara soha semmi emiatt. Mandriva es Gentoo egyarant jol veszi ezt az akadalyt.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

De pl probald meg tobb maggal. VirtualBox valami horror tud lenni ilyenkor, Vmware jol vette az akadalyt. Linuxos guest additions/video-vmware is jobban teljesitett. (Guest-be imho XP valo amugy, Win7-hez eleg eros gep kene virtualizaciohoz, pl nekem a C2Q EE keves elegge)

(Most ezt pl csomagkeszitesre szoktam hasznalni, etc. Oda pedig jol jon ha van tobb mag. ( Bar legutobb mar csak beSSH-zom a masik gepet itthon es a tobbi felhasznalo tudta nelkul azon dolgozgatom. Sajnos "COLINUX" meg nem fut, 64bites valtozata meg nincs kesz. :( )

"A VT -s dolgok mukodnek mindketto alatt"

Ha az "amd féle hardveres virtualizálás gyorsítás" (AMD-V) -ra gondolsz, akkor nem, fail. ( http://hup.hu/node/86125 ) Vmware (workstation) 7.x nem eszi Win7 x64 alatt, míg vbox igen. Ugyanakkor a két cucc szoftveres megoldása vmware -nél sokkal jobb.

********************
"Aki nem backupol az tehetsegtelen :-)"
"...ha nem tévedek!" (Sam Hawkins)
http://holo-media.hu

Köszönöm a leírást.

Én eddig szinte csak VirtualBox-ot használtam.

Nemrég fel kellett tennem egy virtuális XP-ét.
Ami nagyon tetszett, de sajnos csak a zártforrású változatban elérhető funkció, hogy képes a a guest-számára is elérhetővé tenni az USB portra kötött eszköz(öke)t, így pl. gond nélkül használható volt mikrokontroller programozására a guest XP alól.
(Host rendszer Linux x64)

VmWare-t csak régebben próbáltam, de a VirtualBox könnyebben kezelhetőnek látszott... :)

> Cserébe a statikusan fordított binárisok miatt a GUI lassan indul és sok ramot zabál..

nemkéne :(

szép kis összefoglaló, gratulálok hozzá, esetleg betolhatnád a hupwikibe is, hogy tudjuk javítani, bővíteni

én úgy látom, hogy ha szerverekről beszélünk, akkor a XEN-nek nincs párja, persze van az a pénz, ahonnan már a vmware megoldása többet tud, de az ingyenes megoldások között a XEN a leggyorsabb és a legtöbb funkcióval rendelkező cucc, mi RHEL 5 alatt használjuk, de ugyanazt tudja a CentOS 5 is...

--
by Mikul@s

Xen: Alapvetoen bajom nincs vele, csak az esx jobban tetszik. De ez mar az en egyeni maganproblemam.

Live migration: akkor valoszinuleg nem tudja. Mindenesetre, az ember nem szokott ESX clustereket telepitgetni a sufniban, ahol ESX clusterek kellenek, ott igenis vegyek meg a teljes ESX-et, foleg azert, mert vCenter is jar hozza, ami nagyon meg tudja konnyiteni a dolgokat. Raadasul van hozza jo support is, ami szerintem megfizethetetlen, ha az ember ilyesmivel foglalkozik.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

> A Virtualbox ... Memória deduplikáció kéne bele

tudtommal a KSM bármihez használható, nem csak KVM-hez