KVM (hardware)

From DCEwiki
Jump to navigation Jump to search

Jak bylo napsáno hned v úvodu manuálu pro KVM, QEMU bylo původně vyvíjeno jako virtualizační nástroj, který emuloval kompletní hardware virtuálního stroje. To bylo pochopitelně velmi náročné na výpočetní výkon, proto se začala kolem r. 2010 integrovat podpora hardwarové virtualizace přímo v CPU. A z QEMU, které umělo emulovat funkce ostatního hardware, se stal především nástroj, který funguje jako prostředník mezi systémem virtuálního stroje a hostitelským strojem.

Původní koncept konfigurace QEMU

Původní koncept konfigurace QEMU byl zaměřen především na jednoduchost. Proto je do značné míry i dnes zachována určitá kompatibilita. Kupř. chceme-li pouze otestovat linuxové LiveCD, stažené z webu, stačí pouze předhodit pomocí parametru -cdrom stažený ISO soubor:

Poznámka
user@stroj:~$ qemu-system-x86_64 -cdrom livecd.iso

Pro sofistikovanější použití však takto jednoduchá konfigurace nestačí. Proto se objevily konfigurační volby, pojmenované nikoliv podle obvyklého jména zařízení, ale podle typu. Pro ukázku viz výše uvedený příklad, ovšem tentokrát zpracovaný s využitím parametru -drive:

Poznámka
user@stroj:~$ qemu-system-x86_64 -drive file=livecd.iso,cache=unsafe,if=ide,media=cdrom

Tímto způsobem lze poměrně jednoduše vytvořit virtuální stroj s prakticky neomezeným počtem blokových zařízení[1]. Jenže zrovna u blokových zařízení poměrně záhy přestaly konfigurační možnosti vyhovovat. V rámci jednoho parametru totiž byly současně uvedeny jak konfigurační hodnoty určené pro virtuální prostředí hosta (volby if a media, které jsou důležité pro systém virtualizovaného stroje), tak volby důležité především pro hostitele (volby file a cache, které určují kde jsou uložená data a jak se má s nimi pracovat).

Proto byl koncept upraven tak, že původní parametry se používají pro nastavení na straně hostitele a konfigurace hardwarových zařízení pro virtuál se dělá přes parametr -device. S tím, že lze pro zjednodušení používat i konfiguraci dle původního konceptu.

Konfigurace HW zařízení podle typu

Jaké jsou typy virtuálních virtuální zařízení, se kterými pak bude pracovat systém virtuálního stroje, lze zjistit tak, že se parametru -device předá místo názvu zařízení klíčové slovo help. QEMU pak vypíše na konzoli seznam všech dostupných zařízení:

Poznámka
… -device help

Kombinací jména vybraného zařízení a klíčového slova help, lze vypsat další parametry, kterými lze upřesnit vlastnosti virtuálního zařízení:

Poznámka
… -device qxl-vga,help …
Poznámka Místo klíčového slova help, lze použít také znak otazníku ?. Výchozí parametry není nutné měnit, pokud jejich výchozí hodnota dostačuje.

Paměť

Grafická karta

Přes původní parametr -vga lze nastavit pouze jednu VGA grafickou kartu na PCI. Použít jej lze i u aktuálních verzí QEMU, pokud si vystačíte s výchozími parametry grafické karty, které lze ovšem označit za minimalistické - 16MB paměti grafické karty pro výchozí std (VGA) adaptér.

Poznámka
… -vga std …

Chcete-li mít k dispozici větší množství paměti, musíte použít místo -vga parametr -device:

Poznámka
… -device VGA,vgamem_mb=128

Volba vgamem_mb zajistí, že virtuální VGA karta bude mít k dispozici 128MB paměti.

Nastavení dalších grafických karet

Přes parametr -device, lze pro virtuální stroj nastavit více než jednu VGA kartu, ale záleží na typu jejím typu:

cirrus
QEMU umí emulovat tuto jednoduchou grafickou kartu jak pro virtuální PCI či ISA slot. Její ovladač je dostupný u drtivé většiny virtualizovaných systémů.
VGA
je virtuální grafická karta s podporou VGA, stejná jako se přidá přes … -vga std …, která má podporu pro rozlišení >= 1280x1024x16 (v závislosti na množství dostupné paměti.
vmware-svga
Emulace virtuální VMware SVGA-II karty. Vyžaduje nainstalovaný ovladač ve virtualizovaném systému. U MS Windows je součástí vmware-tools, určených pro virtualizaci v prostředí VMware a pro linuxové systémy má podobný ovladač k dispozici u Debianu X server v instalačním balíčku xserver-xorg-video-vmware
qxl
Virtuální grafická karta určená pro použití při přístupu přes SPICE protokol. U Debianu má X server ovladač dostupný v instalačním balíčku xserver-xorg-video-qxl ale na MS Windows se musí doinstalovat.

qxl[2]. Pokud pro použití v rámci virtualizovaného stroje postačí výchozích 64MB paměti grafické karty, nemusíte nic dalšího řešit. Pokud byste chtěli používat u virtualizovaného stroje grafický desktop s vyšším rozlišením, je třeba rozhodně navýšit dostupné množství paměti alespoň na dvojnásobek. To lze udělat buď globálně přes parametr -global :

Poznámka
… -vga qxl -global qxl-vga.ram_size_mb=256 -global qxl-vga.vram_size_mb=256 -global qxl-vga.vram64_size_mb=512

A nebo nastavením zařízení qxl-vga[3] přes -device :

Poznámka
… -device qxl-vga,ram_size_mb=256,vram_size_mb=256,vram64_size_mb=512

Ovladač virtuální grafické karty qxl má podporu pro více monitorů, takže kromě výchozího zařízení qxl-vga lze přidat i další grafické karty typu qxl. Pro každou z nich lze nastavit dostupné množství paměti samostatně, nebo lze pro jejich hromadnou konfiguraci využít parametru -global:

Poznámka
… -vga qxl -device qxl -device qxl …

Každá grafická karta se zobrazí na PCI sběrnici virtuálního stroje jako samostatné zařízení. Chcete-li zjistit, kolik má která z nich dostupné množství paměti, můžete k tomu využít konzolový příkaz lspci. Viz následující příklad jeho použití:

Poznámka
root@guest~# lspci
support (KVM) :~# lspci
...
00:02.0 VGA compatible controller: Cirrus Logic GD 5446
...
root@guest~# lspci -v -s 00:02.0
00:02.0 VGA compatible controller: Cirrus Logic GD 5446 (prog-if 00 [VGA controller])
        Subsystem: Red Hat, Inc Device 1100
        Flags: fast devsel
        Memory at fc000000 (32-bit, prefetchable) [size=32M]
        Memory at febf0000 (32-bit, non-prefetchable) [size=4K]
        Expansion ROM at febc0000 [disabled] [size=64K]
        Kernel driver in use: cirrus

root@guest~# modinfo cirrus
filename:       /lib/modules/3.9.0/kernel/drivers/gpu/drm/cirrus/cirrus.ko
license:        GPL
description:    qemu Cirrus emulation
author:         Matthew Garrett
srcversion:     C812356C85A3684D94B67F8
alias:          pci:v00001013d000000B8sv00001AF4sd00001100bc*sc*i*
depends:        drm,drm_kms_helper,ttm,syscopyarea,sysfillrect,sysimgblt
intree:         Y
vermagic:       3.9.0 SMP mod_unload modversions 
parm:           modeset:Disable/Enable modesetting (int)

Blokové zařízení

Konfigurace HW hosta

Konfigurace hostitele

file

format

snapshot

cache

aio

readonly

rerror

werror

USB zařízení

Znakové zařízení

Síťová karta

Konfigurace virtuálních síťových rozhraní je u QEMU úzce spjatá s řešením síťové konektivity. Proto je součástí samostatné manuálové stránky s názvem KVM (konfigurace sítě)

Zvuková karta

  1. Původní konfigurační koncept byl omezen na 4 bloková zařízení typu hd jednu cdrom a dvě disketové mechaniky.
  2. Ovladač qxl se používá pro 2D akceleraci videa přes SPICE protokol.
  3. Výchozí grafická karta, která se nastavuje přes parametr -vga