KVM: la virtualizzazione nel kernel di Linux
Da tempo la virtualizzazione è diventata indispensabile nel contesto aziendale e nei server di uso professionale. Su un unico computer fisico possono essere gestiti diversi sistemi ospiti virtuali. Vi elenchiamo alcuni tra i vantaggi principali:
- i sistemi possono essere separati in base alla funzione senza hardware aggiuntivi, ad esempio in server di posta, di file e di applicazioni.
- Un sistema ospite può essere per così dire messo in pausa (“congelato”) e ripristinato semplicemente premendo un pulsante.
- La migrazione verso un nuovo hardware avviene in brevissimo tempo.
- I sistemi ospiti sono infine scalabili a proprio piacimento e consentono di reagire dinamicamente ai picchi di utilizzo.
- Si crea una base hardware uniforme per tutti i sistemi ospiti. I conflitti tra driver sono previamente esclusi.
Mentre il sistema operativo Linux è piuttosto singolare nell’area del desktop e per gli utenti privati, lato server è considerato già da tempo come sistema consolidato. Ecco perché svolge un ruolo importante come base per la virtualizzazione.
- Certificato SSL Wildcard incluso
- Registrazione di dominio sicura
- Indirizzo e-mail professionale da 2 GB
Che cos’è KVM?
La Kernel-based Virtual Machine (KVM), introdotta dalla società Qumranet nel 2006, è stata ufficialmente acquisita nel kernel Linux 2.6.20 all’inizio del 2007. L’anno successivo Qumranet è stata acquistata dal distributore Linux RedHat. Per sviluppare ulteriormente la tecnologia, RedHat ha fondato la Open Virtualization Alliance (OVA) con IBM. A questa alleanza hanno partecipato aziende come Suse, Intel e HP.
KVM è strettamente collegato al software di emulazione QEMU; esso mette a disposizione delle funzioni per la virtualizzazione dell’hardware, mentre Linux KVM gestisce l’assegnazione delle risorse dal sistema ospite. Per questo motivo spesso si utilizza la denominazione KVM/QEMU. Poiché KVM è parte integrante di Linux, la soluzione di virtualizzazione non può essere utilizzata su computer Windows. Viceversa, Windows è supportato come sistema ospite accanto alla maggior parte dei sistemi operativi unixoid come Linux, Solaris e BSD. KVM è incluso di default nella maggior parte delle distribuzioni Linux, ma deve essere abilitato.
Funzionamento di KVM-Linux nel dettaglio
Per capire come funziona la Kernel-based Virtual Machine, è necessario prima di tutto aprire una parentesi sui principi di virtualizzazione. Virtualizzazione significa che uno o più sistemi operativi completi (sistemi ospiti) possono essere eseguiti su un computer host. L’hardware messo a disposizione dal sistema ospite è ricreato lato software o, gestito da un hypervisor, ripartito con le risorse hardware reali. L’hypervisor è un livello di gestione e traduzione tra hardware reale e virtuale. A seconda del tipo di virtualizzazione, è quindi necessario tradurre i requisiti dell’hardware reale o effettuare solo l’assegnazione delle azioni richieste, come ad esempio un calcolo nel processore.
Ci sono diversi tipi di virtualizzazione:
- Virtualizzazione completa: l’hardware è completamente simulato lato software. Non è quindi necessaria alcuna interazione con l’hardware reale, il che rende superflui anche i driver relativi. Questa variante è relativamente lenta.
- Paravirtualizzazione: il sistema ospite interagisce direttamente con l’hypervisor e richiede driver configurati appositamente.
- Paravirtualizzazione supportata da hardware: il supporto hardware è già integrato nel processore. Questo aumenta l’efficienza e riduce lo sforzo di adeguamento necessario per i sistemi ospiti. I moderni processori Intel (Intel-VT-x) e AMD (AMD-V) sono dotati di questa funzionalità. Eventualmente potrebbe essere necessario attivarli nel BIOS/UEFI.
Inoltre, si possono distinguere due tipi di hypervisor:
- Tipo 1 (Bare Metal): l’hypervisor funziona direttamente sull’hardware utilizzato senza essere incorporato in un sistema operativo.
- Tipo 2 (Hosted): l’hypervisor è integrato nel sistema operativo ospite ed è attivato da questo.
Linux KVM è un hypervisor di tipo 2 e utilizza la paravirtualizzazione supportata da hardware. Ciò che lo rende speciale, tuttavia, è la sua integrazione diretta nel kernel.
“Kernel” è la parola inglese utilizzata in informatica per indicare il “cuore” di un sistema operativo. In esso sono integrate le funzioni basilari del sistema operativo, ad esempio l’accesso all’hardware e l’assegnazione del tempo di calcolo ai processori in un sistema multitasking. L’accesso al kernel è particolarmente protetto (modalità kernel) e i requisiti a esso richiesti sono trattati in modo privilegiato dai processori.
A causa della stretta connessione con il kernel, si discute sul fatto che il sistema non presenti anche elementi di un hypervisor di tipo 1.
Quali sono i componenti della Kernel-based Virtual Machine?
Il pacchetto KVM complessivo è composto da diversi componenti:
- Estensione del kernel: contiene l’estensione effettiva kernel.ko, che è il livello di traduzione da hardware reale a virtuale. Comprende anche i moduli kvm-amd e kvm-intel adattati ai processori.
- libvirt: l’interfaccia di programmazione delle applicazioni (API) per l’indirizzamento delle macchine virtuali, che possono così essere controllate e gestite. Libvirt include anche strumenti, come una riga di comando chiamata virsh e l’interfaccia grafica Virtual Machine Manager.
- QEMU: si tratta di un programma fondamentalmente indipendente per emulare i computer e gestire le macchine virtuali. Linux KVM utilizza le sue funzionalità per emulare l’hardware e migliorare la velocità attraverso la paravirtualizzazione. In molte distribuzioni entrambi i componenti sono offerti in un unico pacchetto di installazione.
- Kvmtool: un’alternativa più snella a QEMU, non ancora in grado, però, di sostituirlo.
- VirtIO-Driver: driver speciali per sistemi ospiti che sono adattati all’hypervisor e consentono la paravirtualizzazione.
Campi di applicazione di KVM
La Kernel-based Virtual Machine è usata frequentemente, specialmente quando si lavora con sistemi di server professionali.
Il KVM di Linux acquista ulteriore rilevanza grazie alla sua integrazione come hypervisor nella popolare soluzione cloud OpenStack.
Vantaggi e svantaggi di KVM
Infine, consideriamo brevemente alcuni vantaggi e svantaggi della soluzione di virtualizzazione:
Vantaggi:
- sistema maturo e consolidato
- già incluso nella maggior parte delle distribuzioni Linux
- gratuito e open source
- una “Kernel Virtual Machine” autentica, il che assicura prestazioni e stabilità
- sviluppo da parte di aziende rinomate
- amministrazione automatizzata possibile tramite libvirt
Svantaggi:
- disponibile solo per sistemi Linux
- necessità di un hardware potente per il computer host
- impegno formativo per la gestione
- la centralizzazione dell’hardware aumenta il rischio di guasto del sistema (un “Single Point of Failure” può essere ridotto con una strategia di backup intelligente)
Alternative a Linux KVM
Nell’ambito dei software liberamente accessibili con funzionalità simili, esistono diverse alternative a Linux KVM. Una di queste è XEN, soluzione di virtualizzazione sempre strettamente legata a Linux ma non integrata nel kernel.
L’affermato provider commerciale VMWare offre alternative alla paravirtualizzazione con i suoi server ESXi e una virtualizzazione completa con la sua workstation. Il lettore VMWare è disponibile gratuitamente per uso privato.
Un’altra alternativa gratuita alla virtualizzazione completa è Virtualbox, disponibile come base per tutti i comuni sistemi operativi.
Con il sistema Hyper-V, Microsoft fornisce una soluzione di paravirtualizzazione per Windows la cui funzionalità è paragonabile a quella di KVM perché dotato sia di un server Windows Hyper-V dedicato sia di funzionalità integrate nei sistemi operativi dei server. In più, Hyper-V è incluso anche nelle versioni Windows 10 Professional e Enterprise.
- Backup automatici e recupero dei dati
- Pianificazione e gestione intuitive delle attività
- Protezione dalle minacce basata sull'intelligenza artificiale
In sintesi
Flessibilità e scalabilità sono due argomenti quasi imbattibili quando si parla di virtualizzazione. I sistemi operativi ospiti continuano a essere mantenuti snelli e utilizzati per applicazioni specifiche. Se i sistemi sono regolarmente sottoposti a backup su supporti di memorizzazione separati dal punto di vista spaziale, il rischio di guasto è minimo.
Chiunque utilizzi Linux per il proprio server non può fare a meno di prendere in considerazione KVM. L’integrazione nel kernel e lo sviluppo da parte di produttori affermati sono due buoni motivi per sceglierlo.