Virtualizzazione

Cos'è Hypervisor?

Definizione

A hypervisor is the software layer that creates and runs virtual machines, allocating physical CPU, memory and IO between them. A type-1 hypervisor runs directly on the hardware; KVM is unusual in being a type-1 hypervisor implemented as a Linux kernel module, which lets it use the whole Linux driver ecosystem.

Perché Hypervisor è importante

Un hypervisor di tipo 1 gira direttamente sull'hardware; KVM è insolito nell'essere un hypervisor di tipo 1 implementato come modulo del kernel Linux, il che gli consente di utilizzare l'intero ecosistema dei driver Linux.

Hypervisor in pratica

Quando esegui un server su un hypervisor KVM, guardi l'allocazione hardware effettiva: vCPU, RAM, I/O del disco. Li regoli dal pannello, spesso aggiungendo memoria a caldo senza riavviare. Se sbagli sovraccaricando l'host, i carichi di lavoro rumorosi dei tuoi vicini impoveriscono la tua CPU o I/O, trasformando un guest perfettamente configurato in uno lento. La virtualizzazione annidata significa che puoi eseguire un hypervisor dentro il tuo hypervisor, utile per test, ma costa prestazioni e può confondere il tuo stesso conteggio delle risorse.

Errori comuni su Hypervisor

L'errore comune è trattare l'hypervisor come un confine di container. Non lo è. Un hypervisor ti dà una macchina virtuale completa, il tuo kernel, il tuo /proc, nessun namespace condiviso. La gente presume che i processi del vicino siano invisibili o che il proprio kernel personalizzato sia impossibile, poi si scontra con i limiti. La correzione: con KVM ottieni isolamento e controllo genuini, quindi puoi avviare un'immagine fatta a mano o eseguire virtualizzazione nidificata, cose che un container non può fare.

Hypervisor — domande frequenti

Cosa significa hypervisor di tipo 1?

Un hypervisor di tipo 1 gira direttamente sull'hardware host, non sopra un sistema operativo. KVM è speciale perché è un hypervisor di tipo 1 implementato come modulo del kernel Linux, quindi può usare l'intero ecosistema di driver Linux per gestire l'hardware. Questo ti dà le prestazioni della virtualizzazione bare-metal con la flessibilità di Linux.

In cosa KVM è diverso dai container come OpenVZ?

KVM fornisce virtualizzazione vera: ogni guest ha il proprio kernel, il proprio /proc e nessun namespace condiviso, quindi hai accesso root completo e puoi eseguire kernel personalizzati. I container condividono il kernel host e i namespace, il che limita ciò che puoi fare. Con KVM ottieni isolamento e controllo, inclusa la possibilità di eseguire virtualizzazione nidificata o avviare un ISO personalizzato.

Altro da virtualizzazione

KVM
KVM è una virtualizzazione completa dell'hardware integrata nel kernel Linux, che dà a ogni guest il proprio kernel e un isolamento dal hardware di altri tenant.
OpenVZ
OpenVZ è una virtualizzazione basata su container in cui ogni istanza condivide il kernel dell'host, quindi i guest non possono caricare moduli del kernel o eseguire un sistema operativo diverso.
LXC
LXC è una containerizzazione nativa di Linux che isola i processi con namespace e cgroups condividendo il kernel dell'host.
Virtualizzazione annidata
La virtualizzazione annidata consente a una macchina virtuale di eseguire a sua volta macchine virtuali, esponendo le estensioni di virtualizzazione del processore al guest.
vCPU
Una vCPU è un processore virtuale presentato a un guest, supportato da tempo di pianificazione su un core o thread fisico.
cloud-init
cloud-init è il meccanismo standard per configurare una macchina virtuale al primo avvio, usando metadati forniti dalla piattaforma.