Virtio

Virtio je standard pro tzv. paravirtualizované (paravirtualized) I/O ovladače. Jedná se o abstrakční vrstvu, která umožňuje virtuálním strojům (VM) komunikovat s hypervisorem efektivněji než prostřednictvím emulace reálného hardwaru.

V ekosystému Linuxu se Virtio stalo standardem pro virtualizaci v prostředí KVM a QEMU.

Proč Virtio vzniklo? (Emulace vs. Paravirtualizace)

Při klasické emulaci se hypervisor snaží napodobit existující fyzické zařízení (např. starou síťovou kartu Realtek).

Problém: Operační systém hosta si myslí, že komunikuje s reálným hardwarem, což vyžaduje složité a pomalé překlady instrukcí v hypervisoru.

Řešení: Paravirtualizace (Virtio) přiznává virtuálnímu stroji, že běží ve virtualizovaném prostředí. Host a hypervisor pak používají sdílenou paměť k extrémně rychlému přenosu dat.

Jak Virtio funguje?

Virtio využívá mechanismus zvaný virtqueue (virtuální fronty). Funguje to následovně:

1. Operační systém hosta zapíše data do sdíleného bufferu (fronty) v paměti RAM.
2. Hypervisor (hostitel) si tato data přímo převezme a odešle je na fyzický hardware.
3. Tento proces eliminuje potřebu emulovat registry a přerušení (interrupts) reálného hardwaru.

Hlavní typy Virtio ovladačů

V konfiguraci virtuálních strojů se nejčastěji setkáte s těmito moduly:

Typ	Název v systému	Popis
Síť	virtio-net	Nejrychlejší síťové rozhraní pro VM. Snižuje režii procesoru při vysokém provozu.
Disk	virtio-blk	Blokové zařízení pro pevné disky. Podporuje pokročilé funkce jako ořezávání (TRIM).
SCSI	virtio-scsi	Pokročilejší diskové rozhraní umožňující připojení stovek disků k jedné VM.
Grafika	virtio-gpu	Umožňuje 2D a 3D akceleraci v rámci virtuálního stroje.
Paměť	virtio-balloon	Umožňuje hypervisoru dynamicky odebírat nebo přidávat RAM běžícímu virtuálnímu stroji.

Výhody Virtio

Vysoká propustnost: Blíží se rychlosti fyzického hardwaru (zejména u 10Gbps+ sítí).

Nižší zátěž CPU: Hypervisor nemusí plýtvat výkonem na simulaci starých čipů.

Standardizace: Jeden typ ovladače funguje pro různé hypervisory (KVM, VirtualBox, bhyve).

Podpora v operačních systémech

Linux: Podpora Virtio je součástí jádra již mnoho let. Většina distribucí detekuje Virtio automaticky.

Windows: Windows standardně Virtio ovladače neobsahuje. Pro jejich funkci je nutné během instalace (nebo po ní) nahrát tzv. virtio-win ovladače (často distribuované jako ISO obraz).

Praktické nasazení

Pokud spravujete virtuální servery (např. v Proxmoxu nebo přes virsh), vždy se doporučuje nastavit model síťové karty i diskového řadiče na Virtio, pokud to operační systém hosta podporuje. Výkonnostní rozdíl oproti emulaci (např. Intel E1000 nebo IDE) může být i několikanásobný.

— Související termíny: KVM, QEMU, Hypervisor, Virtuální stroj, IaaS.