Virtualizace

Lukáš Vacek, xvacek@fi.muni.cz

Obsah

Legenda

Termín Definice
VM VM, zkratka pro Virtual Machine. Je to instance operačního systému, která běži uvnitř jiného operačního systému. Ve velkém množství případů se většina komponent počítače emuluje do virtuálního stroje.
Hypervizor V této literatuře použito slovo Hypervizor jako anglické. Hypervisor je software který spravuje instance VM.
Host Systém, na kterém běží VM
Guest Systém, který je VM pod hostem
Process Instance programu

Formáty virtuálních disků

Název Virtualizační software Vlastnosti
Raw QEMU/KVM Celý se alokuje při vytváření, například příkazem dd IF=/dev/zero OF=path/to/file.raw a nenabízí pokročilé funkce jako jiné formáty
QCOW2 QEMU/KVM Nativní QEMU/KVM formát. Nabízí možnost částečné alokace. Příklad - VM má na disku naalokováno 5GB na 50GB QCOW2 -> 5GB velokost na hostovi
VMDK VMWare, (Virtualbox, QEMU/KVM) Nativní VMWare formát. Je podporován vetšinou hypervizorů
VDI VirtualBox Nativní VirtualBox formát.
HDD Parallels, (VirtualBox) Formát pro macOS virtualizační software Parallels

Virtualizace podle hypervisoru

Type 1 hypervisor

Příklady

Chování

Instrukce VM se provádí bez jakékoliv abstrakce přímo na úrovni hosta.

Toto řešení nabízí největší možný výkon, avšak je potřeba zajistit kompatibilita guest OS a host OS. Toto řešení také vytváří bezpečnostní díry. Nechtěné scripty mohou mít přístup na hardware host počítače a mohou toho využít pro infiltraci hosta.

Type 1 virtualizace se dá považovat za "Plnou virtualizaci"


Type 2 hypervisor

Příklady

Chování

Hypervisor abstraktuje VM od hosta. VM se pro hosta chová jako process, pro který hypervisor abstraktuje a executuje instrukce.

Toto řešení je bezpečnější, avšak nenabízí takový výkon jako Type 1 hypervisor.

Pokud guest běží na stejné architektuře jako host, je to považováno za "Paravirtualizaci".

Toto řešení také nabízí možnost "emulace", kde hypervisor může překládat instrukce z jiné architektury processoru.


Software pro management virtuálních strojů

Zprovoznění libvirt virtuálního stroje na Fedora server

Instalace virtualizačního software

# dnf install @virtualization

# systemctl enable --now libvirtd


Pokud chceme používat virtualizační software jako uživatel musíme se přidat do skupin libvirt a kvm

# usermod -aG libvirt,kvm user


Vytvořit qcow2 image

# qemu-img create -f qcow2 -o size=10G /var/lib/libvirt/images/Fedora-Workstation-36-20180518.0.x86_64.qcow2

Vytvořit VM

$ virt-install --name Fedora36 \
--description 'Fedora 36 Workstation' \
--ram 2096 \
--vcpus 1 \
--disk path=/var/lib/libvirt/images/Fedora-Workstation-36/Fedora-Workstation-36-20180518.0.x86_64.qcow2,size=10 \
--os-variant fedora36 \
--network network=default \
--graphics vnc,listen=127.0.0.1,port=5901 \
--cdrom /var/lib/libvirt/images/Fedora-Workstation-36/Fedora-Workstation-Live-x86-64-36-1.1.iso \
--noautoconsole

Připojení přes vnc pomocí ssh tunnelu.

$ ssh -L 5901:127.0.0.1:5901 -N proto17

A poté se mohu připojit přes VNC software na localhost

PCI PASSHTROUGH (VFIO)

Co je PCI passthrough a proč bych to potřeboval

Historicky se PCI passthrough využívalo na spoustu součástek, které v té době ještě neměli alternativy virtuálního hardware. Síťové karty, zvukové karty a další součástky.
Nyní se využívá na součástky, které jsou příliš komplikované na to aby pro ně mohl být efektivní virtualizační driver, a nebo tento driver nenabízí dostatečný výkon.

Na jaké součástky mohu využít PCI passthrough nyní?

M.2 ssd

Ssd se při zapínání VM odpojí od hosta, a zase ho host dostane zpět při vypnutí VM. Takto může host pracovat s tímto diskem, když je VM vypnutý, a zároveň to přinese výkonnostní bonus pro RW IO.
Také to nabízí možnost spustit VM na bare metal jako dual boot.

GPU

Host může svoji grafickou akceleraci provádět na fyzické GPU. Drivery pro grafickou akceleraci jsou u VM velice slabé a slouží hlavně pro render toho, co se děje ve VM.

GPU passthrough je skvělé pro možnost hraní počítačových her, či graficky akcelerovaného využití adobe sweet na windows guest z linux host.

Self promotion k tématu:

Dále bych rád prezentoval moji guide na VFIO do windows guest z linux host. Zde je nejen část vztahující se k VM, ale také ukázka možnost sdílení grafické paměti mezi host a guest a následný render host gpu na guest.

VFIO-Windows-install-walkthrough

Literatura