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 |
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 |
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"
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ů
# 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
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.
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.
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.
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