Virtualizzare con KVM

06/02/23 (aggiornamento: 19/05/23) | ~ 3 minuti

Virtualizzare su Linux è più semplice di quanto sembri. Una piccola guida sconclusionata per orientarsi nel mondo delle macchine virtuali.

Hypervisor di tipo 1 e 2

Probabilmente vi sarà capitato di installare, o avrete sentito parlare di, Virtualbox o VMware Player (sto invecchiando, ora si chiama VMware Workstation Player) due software gratuiti disponibili anche per Linux.
Si tratta di Hypervisor, (fondamentalmente) software per la gestione di macchine virtuali guest sull'hardware reale di un host; per la precisione i due programmi sono Hypervisor di tipo 2.
Un Hypervisor di tipo 2 è generalmente più semplice da installare e configurare, ma non gode di prestazioni ottimali in quanto la comunicazione con l'hardware è filtrata dal sistema operativo dell'host (qualunque esso sia), sul quale viene eseguito come un applicativo qualsiasi.

Un Hypervisor di tipo 1, invece, si trova ad un livello più vicino all'hardware, bypassando il sistema operativo dell'host e potendolo controllare direttamente.
In questo modo si riescono ad ottenere migliori prestazioni (ma non miracolose, a meno di non ricorrere a tecniche particolari come il passthrough della scheda video) soprattutto lato CPU. Intel VT-x o AMD-V sono degli esempi di tecnologie integrate nei moderni SoC che possono essere sfruttate meglio da un Hypervisor di tipo 1 rispetto ad uno di tipo 2.

La rappresentazione grafica degli hypervisor di tipo 1 e di tipo 2.
I due tipi di Hypervisor. Fonte: Wikipedia

KVM l'ibrido

Una soluzione intermedia integrata nel kernel Linux a partire dalla versione 2.6 è KVM.
KVM, insieme a QEMU e libvirt (rispettivamente il motore di virtualizzazione e un insieme di librerie usate da software come virt-manager, di cui parleremo a breve), permette di integrare l'Hypervisor all'interno del sistema operativo, unendo i vantaggi di un Hypervisor di tipo 1 e tipo 2.

Interfacciarsi con libvirt

Con l'uso di interfacce grafiche come virt-manager, infine, si ha il completo controllo della gestione delle macchine virtuali basate su QEMU/KVM.
Virt-manager è solo una delle interfacce che possono essere usate. Oltre che con altri strumenti similari, le macchine virtuali possono essere gestite anche da riga di comando con virsh (che fa parte di libvirt e non richiede l'installazione di pacchetti aggiuntivi).

Hyper-V

Un modo ancora più semplice per provare un Hypervisor di tipo 1 è quello di usare Hyper-V su Windows. In pochi passaggi illustrati nelle guide ufficiali di Microsoft, è possibile attivare la funzionalità e l'interfaccia di gestione. Un buon modo per provare delle distro Linux senza passare da Hypervisor di tipo 2.

Vedi anche Virt-manager: installazione e messa in opera