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.
Při klasické emulaci se hypervisor snaží napodobit existující fyzické zařízení (např. starou síťovou kartu Realtek).
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.
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. |
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.