KVM (hardware)

Z DCEwiki
Skočit na navigaci Skočit na vyhledávání

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

Grafická karta

Poznámka
… -vga qxl …

Výše uvedený parametr zajistí, že virtualizovaný stroj bude mít k dispozici jednu VGA virtuální grafickou kartu typu 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í

USB zařízení

Znakové zařízení

Síťová karta

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