Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

KVM: virtualizzazione senza confini per Linux

KVM è una tecnologia di virtualizzazione molto utilizzata in ambito Linux. Vediamo insieme come funziona.
KVM è una tecnologia di virtualizzazione molto utilizzata in ambito Linux. Vediamo insieme come funziona.
Link copiato negli appunti

Una delle crescenti necessità dei grandi sistemi server Linux, è fornire la possibilità ad amministratori e sistemisti di godere delle funzionalità di più sistemi operativi. Questo genere di richieste può essere soddisfatto dal supporto alla virtualizzazione, ovvero la possibilità di rendere virtuali le risorse hardware di cui un sistema operativo ha bisogno, per poi installare l’intera piattaforma “virtualmente” su di esse. Per capire quanto ciò sia conveniente, si pensi ai dischi che un sistema virtuale utilizza, che in realtà non sono altro che semplici file, e come essi si prestino meglio alle operazioni di backup. Anche le periferiche virtuali sono facilmente standardizzabili e, quindi, uniformabili; ciò rende l’hardware (che può essere molto vario), “virtualmente compatibile” con qualsiasi sistema virtualizzato, azzerando i problemi di compatibilità, ed è a questo che serve KVM.

Molti utenti avranno certamente avuto a che fare con strumenti come Virtualbox, VMWare o GNOME Boxes, tipicamente utili proprio allo scopo di installare altri sistemi operativi (Linux e non), detti guest, su un sistema host Linux, per potere utilizzarne qualche funzionalità (o semplicemente per provarlo). Questi strumenti, oltre a rappresentare un’interfaccia software vera e propria, sfruttano il supporto hardware che i moderni processori implementano, proprio allo scopo di ottimizzare la virtualizzazione. Essi sono molto indicati per sistemi desktop, o comunque per tutte quelle situazioni in cui l’interfaccia grafica ha un ruolo dominante. Per soluzioni più vicine, appunto, alla sfera server, lo strumento che rappresenta lo standard “de facto” per la virtualizzazione su Linux è KVM (acronimo che sta per Kernel-based Virtual Machine). In questo articolo vedremo proprio come installarlo ed utilizzarlo.

Verificare il supporto alla virtualizzazione

KVM sfrutta il supporto hardware alla virtualizzazione che il processore installato nel PC deve, necessariamente, implementare. Molte delle moderne CPU soddisfano questo requisito, considerando che sia AMD che Intel (che insieme raggiungono circa il 98% del mercato dei processori) includono da tempo le tecnologie AMD-V ed Intel VT-x rispettivamente, in grado proprio di supportare la virtualizzazione. Ciò è fondamentale, poiché senza tale supporto hardware, KVM non può funzionare.

Quindi, prima di installare KVM dobbiamo verificare che l’hardware supporti la virtualizzazione. Per farlo, possiamo digitare, sul terminale, il comando seguente:

egrep -c ‘(svm|vmx)’ /proc/cpuinfo

Se l’output è diverso da 0, siamo certi che la nostra CPU è compatibile con la virtualizzazione, e possiamo passare al processo di installazione vera e propria. Altrimenti, ahimé, non sarà possibile sfruttare questo potentissimo strumento. La wiki di Ubuntu approfondisce un po’ meglio come essere certi del supporto alla virtualizzazione anche se si utilizzano kernel XEN o a 64 bit.

Nel seguito, per ovvi motivi, supporremo di utilizzare una piattaforma che supporti la tecnologia di virtualizzazione (come del resto sarà nella maggior parte dei casi).

Installare KVM

A questo punto possiamo finalmente installare KVM. La procedura è abbastanza semplice, soprattutto se si utilizzano le maggiori distribuzioni server. Ammesso (e non concesso) che KVM non faccia già parte del sistema out-of-the-box, se utilizziamo una distribuzione Debian-based (come Ubuntu server) possiamo sfruttare apt, digitando da terminale il comando seguente:

# apt-get install qemu-kvm libvirt-bin bridge-utils virt-manager

Se, invece, non è così, e possiamo avvalerci di yum, utilizzeremo i comandi seguenti:

# yum groupinstall "Virtualisation Tools" "Virtualization Platform"
# yum install python-virtinst

oppure, in alternativa:

# yum install kvm qemu-kvm python-virtinst libvirt libvirt-python virt-manager libguestfs-tools

Terminata l’installazione, c’è ancora un dettaglio da tenere in considerazione. Di norma, le virtual machine di KVM possono essere gestite ed utilizzate soltanto dall’utente root, o da tutti gli utenti appartenenti al gruppo libvirtd. Per questo motivo, se vogliamo utilizzare KVM con il nostro account (diciamo, ad esempio, con l’account pippo), dovremo ultimare l’installazione con il comando seguente:

# adduser pippo libvirtd

Fatto ciò, possiamo verificare che KVM sia stato correttamente installato, riavviando il sistema e verificando che il comando seguente:

$ virsh -c qemu:///system list

produca come output una lista vuota di virtual machine, come mostra la figura seguente.

Figura 1. L’output di virsh mostra che KVM è correttamente installato (fonte: www.howtogeek.com)
L’output di virsh mostra che KVM è correttamente installato (fonte: www.howtogeek.com)

Se ciò non dovesse accadere, potrebbe non essere stato avviato libvirtd, il demone che gestisce il sistema di virtualizzazione. Possiamo avviarlo con i seguenti comandi:

# chkconfig libvirtd on
# service libvirtd start

A questo punto non resta che configurare in maniera esauriente KVM, ed iniziare a creare ed avviare le macchine virtuali. Se abbiamo a disposizione un ambiente grafico, possiamo affidarci a virt-manager.

Utilizzare virt-manager

Citando la wiki di Ubuntu, “KVM è stato concepito per […] ospitare sistemi operativi server non grafici” e “se si sta cercando un software per ottenere macchine virtuali basato sulla grafica allora […] ci sono alternative più convenienti”. Tuttavia esiste una utility grafica molto interessante, che consente di gestire graficamente tutte le macchine virtuali create con KVM. Questo tool è virt-manager, che con la precedente procedura abbiamo già installato. Esso consente di accedere a tutte le principali funzionalità di KVM, in maniera molto più user-friendly della riga di comando.

Dopo l’installazione (oltre al metodo sopra citato, possiamo fare riferimento alla guida del sito ufficiale), possiamo avviare virt-manager direttamente cercandolo tra le applicazioni installate, oppure digitando da terminale:

virt-manager

Figura 2. L’interfaccia grafica di virt-manager (fonte: vettore.org)
L’interfaccia grafica di virt-manager (fonte: vettore.org)

Una volta avviato, possiamo subito creare una nuova virtual machine, cliccando sul primo pulsante da sinistra, sulla barra principale della finestra di virt-manager. Qui possiamo:

  • inserire il nome della macchina virtuale
  • scegliere come installare il sistema operativo guest (se utilizzando un’immagine ISO locale, o se effettuare un’installazione via network)
  • selezionare il tipo di sistema operativo che stiamo installando
  • impostare la quantità di memoria RAM da assegnare al sistema, nonché il numero di CPU
  • definire alcune impostazioni avanzate, come l’architettura del sistema, nonché le preferenze di rete

Una nota importante riguarda proprio queste ultime impostazioni relative alla rete. Per default, la virtual machine accede ad internet non come macchina a sé stante, ma tramite un NAT bridge che la rende, dal punto di vista della rete, un tutt’uno col sistema host. E’ possibile modificare questa impostazione tramite le Opzioni avanzate subito prima della fine del processo di creazione della macchina virtuale. Ciò può risultare molto utile se si vuole utilizzare la macchina virtuale come server accessibile all’esterno (una situazione abbastanza tipica).

Figura 3. L’ultimo step di creazione della macchina virtuale (fonte: fedorapeople.org)
L’ultimo step di creazione della macchina virtuale (fonte: fedorapeople.org)

Possiamo, adesso, avviare l’installazione della nostra macchina virtuale. Tutti i precedenti passaggi, inoltre, hanno il pregio di essere molto vicini alle corrispondenti procedure offerte da software come VirtualBox o VMWare, il che rende virt-manager molto user-friendly. Una caratteristica che, soprattutto nella sfera degli amministratori di sistema e dei sistemisti, viene spesso sottovalutata.

A questo punto, in modo semplice e rapido, abbiamo la possibilità di attivare, spegnere, clonare o migrare le nostre macchine virtuali. Cliccando sul tasto Open, infatti, possiamo accedere a tutte le informazioni relative alla virtual machine selezionata, per modificarle o semplicemente per visualizzarle, in modo in tutto e per tutto simile agli altri software di questo tipo.

Figura 4. Con virt-manager è possibile visualizzare i dettagli di ogni virtual machine (fonte: libvirt.org)
Con virt-manager è possibile visualizzare i dettagli di ogni virtual machine (fonte: libvirt.org)

Ti consigliamo anche