# 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](https://www.ionos.it/digitalguide/server/know-how/linux-lalternativa-conveniente-a-windows/ "Linux, l’alternativa conveniente a Windows") è 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.

## 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](https://www.ionos.it/digitalguide/server/configurazione/virtualizzazione/ "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](https://www.ionos.it/digitalguide/server/know-how/che-cose-un-hypervisor/ "Che cos’è un 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.

N.B. “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](https://www.ionos.it/digitalguide/server/tools-o-strumenti/che-cose-openstack/ "Che cos’è 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](https://www.ionos.it/digitalguide/server/know-how/microsoft-hyper-v/ "Microsoft 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.

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


This is a markdown version of: [https://www.ionos.it/digitalguide/server/know-how/che-cose-kvm/](https://www.ionos.it/digitalguide/server/know-how/che-cose-kvm/) for AI/LLM consumption.