Windows jako domU v režimu HVM
HVM, jako typ virtualizace je nejméně efektivní, protože se emuluje vše od Biosu přes procesor, no zkrátka vše. Ovšem má to jednu výhodu. Nepotřebujete žádnou podporu pro Xen. Proto také je to způsob, jak spustit systémy, které nedisponují modifikovaným kernelem domU.
Předpokladem pro následující postup je, že jste si (podle prvního dílu našeho miniseriálu o Xenu) nainstalovali NetBSD 8 jako dom0 se síťovou konektivitou pro virtuály.
Konfigurační soubor pro instalaci i spuštění Windows je téměř stejný. V obou případech používáme HVM loader jako zavaděč. Zajímavá je volba tablet, která umravňuje USB myš. Myš totiž ve VNC jinak poněkud chová divně a ukazatel myši ve virtuálu nesleduje správně pozici kurzoru.
Prázdný 50Gb image disku vytvoříme příkazem:
# cd /var/xen # dd if=/dev/zero of=windows.img bs=1m count=51200
Konfigurační soubor Windows bude vypadat následovně, v tomto případě je logicky u disku zvoleno pro instalaci fyzické CD/DVD. Pochopitelně, šlo by instalační disk přepsat na file image pomocí dd
.
# vim /usr/pkg/etc/xen/windows.cfg name = "windows" memory = "2048" builder = 'hvm' vcpus=1 acpi=1 apic=1 vif = [ 'type=ioemu, mac=00:01:3e:11:9c:15, bridge=bridge0' ] disk = [ 'file:/var/xen/windows.img,hda,w', 'phy:cd0a,hdc:cdrom,r' ] usbdevice = 'tablet' # po instalaci zakomentuj nasledujici radek boot="d" # po instalaci odkomentuj nasledujci radek # boot="c" sdl=0 opengl=1 vnc=1 stdvga=0 soundhw='sb16' on_reboot = 'restart' on_crash = 'destroy'
Instalaci Windows spustíme pokynem:
# xl create /usr/pkg/etc/xen/windows.cfg Parsing config from /usr/pkg/etc/xen/windows.cfg
Následně se připojíme do grafiky pomocí VNC
# vncviewer :0
Po instalaci změníme boot="d"
na boot="c"
a máme vyhráno. Podle tabulek jsou Windows v HVM sice asi o čtvrtinu pomalejší než ve VirtualBoxu nebo VMWare. Nicméně s během Windows v Xenu není žádný problém, takže pokud nepotřebujete ďábelský výkon, můžete klidně provozovat Windows na Xenu.
Magické PVHVM
Konečně se dostáváme k tomu nejzajímavějšímu na Xenu. Co to je PVHVM? Je to HVM, tak jak jsme ho viděli u Windows, ovšem s PV drivery v jádru, které dokáží převzít od Xenu otěže a výrazně zrychlit běh. Dokonce tak výrazně, že to odporuje selské logice. Normální člověk by si řekl, OK mám paravirtualizaci, minimální režii, takže nejrychlejší. Pak mám HVM, tam je velká režie, je tam všechno emulované, bude to pomalé.
No a když emuluji a používám do toho PV drivery, tak to bude tak na půlce cesty. Omyl! V testech, které provádělo vícero zvědavců na internetu, jasně vyplývá, že HVM je relativně pomalé, PV je velmi rychlé, ale PVHVM je ďábelsky rychlé.
Testy ukazují, že určité operace jsou stejně rychlé, ale u mnoha operací je výrazný rozdíl. Např. PHP je o 5 % rychlejší, Apache je o 14 % rychlejší na PVHVM než na PV, kompilace kernelu nebo běh SQlite je o 15 % rychlejší, ale u některých diskových operací je rozdíl obrovský. Podívejme se na pro zajímavost na graf UnixBench8 ze stránek xen-orchestra.com , který ukazuje jak si PV a PVHVM debian vede při různých diskových operacích. Chvílemi je PVHVM Debian dvakrát rychlejší než PV Debian.
Jak nainstalovat OpenBSD nebo Linux domU jako PVHVM
To je triviální, v podstatě úplně stejně jako jsme instalovali Windows HVM výše. Rozdíl je v tom, že OpenBSD a Linux mají v kernelu zakompilované drivery pro PVHVM a poznají, že běží v Xenu a samy se „přepnou“ do PVHVM. Ačkoli podpora pro PVHVM existuje v kernelu už dávno, moje zkušenost je taková, že ne všechny linuxové distribuce ve všech verzích jsou na tento běh připraveny a z různých důvodů prostě nenabootují.
Použití ovladačů PVHVM můžeme ovlivnit jednak v konfiguračním soboru na hostitelském stroji (NetBSD dom0) následovně: direktivou xen_platform_pci=1
, nebo vypnout xen_platform_pci=0
v /usr/pkg/etc/xen/vas_konfig.cfg
.
Použití ovladačů PVHVM některé distribuce podporují pouze pomocí balíčků, které je třeba doinstalovat. Jsou to například některé verze CentOS, SLES nebo openSUSE. Pokud si nejste jisti, jestli v Linuxu jedete na PVHVM ovladačích, postupujte následovně:
- v grubu si nastavte
loglevel=9
- restartujte svůj virtuál
dmesg |grep "Xen HVM callback vector for event delivery is enabled"
Pokud výše uvedenou, nebo podobnou hlášku ve svém výstupu dmesg v linuxovém domU najdete, potom používáte PVHVM.
Závěr
Ukázali jsme si jak spustit pod Xenem operační systémy, které nepoužívají modifikovaný kernel jako HVM anebo PVHVM. Dále jsme porovnávali rychlosti různých druhů virtualizace a zjistili jsme, že jednoznačně nejrychlejší formou virtualizace je v Xenu nový typ paravirtualizace PVHVM. To je systém, který nepoužívá modifikovaný kernel, ale speciální PV ovladače.
Co dál? Sedněte si ke svému oblíbenému testovacímu stroji a pusťte se do toho…