La virtualizzazione del kernel è uno dei numerosi metodi in cui il kernel di un sistema operativo (OS) viene adattato per supportare diversi utenti che eseguono applicazioni contemporaneamente su una singola macchina. Il kernel è il nucleo essenziale di un sistema operativo che fornisce servizi di base per tutte le altre parti del sistema operativo.
La virtualizzazione è un modo per creare più sistemi virtuali che condividono risorse di calcolo fisiche, come cicli del processore, spazio di memoria, larghezza di banda di rete e così via. Nel modello di virtualizzazione convenzionale, un hypervisor isola i sistemi operativi e le applicazioni dall'hardware del computer sottostante, consentendo alla macchina host di utilizzare più macchine virtuali indipendenti (VM) come guest, che condividono le risorse dell'host. La virtualizzazione del kernel può essere basata su hypervisor o container.
Esempi di virtualizzazione del kernel includono:
KVM (macchina virtuale basata su kernel) è un QEMU (emulatore rapido) modificato che utilizza estensioni del processore di virtualizzazione (Intel-VT e AMD-V) per connettersi alle VM. KVM utilizza il kernel Linux come hypervisor. Il software è in bundle con il sistema operativo Linux e può essere installato insieme al kernel Linux.
La virtualizzazione del sistema operativo è un metodo di virtualizzazione del kernel basato su container in cui un sistema operativo viene adattato in modo che funzioni come sistemi multipli e discreti per supportare diversi utenti che eseguono applicazioni contemporaneamente su una singola macchina. La virtualizzazione del sistema operativo consente di distribuire ed eseguire applicazioni distribuite senza avviare un'intera VM per ciascuna applicazione. Invece, più sistemi isolati, chiamati contenitori, vengono eseguiti su un singolo host di controllo e accedono a un singolo kernel.
I progetti di contenitori Linux, come LXD, LXC e LXCFS, coinvolgono immagini autonome, complete dei propri ambienti di esecuzione, in esecuzione a livello di sistema operativo piuttosto che come una macchina virtuale completa. Con CPU, memoria, storage e risorse di rete personalizzabili e dedicate, i contenitori consentono agli ambienti Linux isolati di funzionare in una VM ridotta a livello di sistema operativo e consentono di limitare i programmi che altrimenti potrebbero consumare tutte le risorse disponibili.