====== 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 ([[virtual_machine|VM]]) komunikovat s hypervisorem efektivněji než prostřednictvím emulace reálného hardwaru. V ekosystému [[linux|Linuxu]] se Virtio stalo standardem pro virtualizaci v prostředí [[kvm|KVM]] a [[qemu|QEMU]]. ===== Proč Virtio vzniklo? (Emulace vs. Paravirtualizace) ===== Při klasické **emulaci** se [[hypervisor|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|KVM]], [[qemu|QEMU]], [[hypervisor|Hypervisor]], [[virtual_machine|Virtuální stroj]], [[iaas|IaaS]].