3.8 KiB
Concetti
La virtualizzazione consente ad un software, denominato hypervisor, di eseguire processi che contengono un sistema informatico completamente emulato.
Si tratta di un software che crea e gestisce macchine virtuali (VM), definite guest dell HV. Le macchine virtuali sono ambienti isolati che possono eseguire sistemi operativi e applicazioni come se fossero computer fisici separati.
Esistono due tipi principali di hypervisor:
-
Hypervisor di tipo 1 (bare-metal): vengono eseguiti direttamente sull'hardware fisico. Non richiedono un sistema operativo sottostante e gestiscono direttamente le risorse hardware. Esempi di hypervisor di tipo 1 includono VMware ESXi, Microsoft Hyper-V e Xen.
-
Hypervisor di tipo 2 (hosted): vengono eseguiti su un sistema operativo esistente. Esempi di hypervisor di tipo 2 includono VMware Workstation, VirtualBox e Parallels Desktop.
Gli hypervisor comunemente usati su Linux sono:
- Xen: un hypervisor di tipo I o bare-metal
- KVM: Kernel Virtual Machine e' un modulo del Kernel per la virtualizzazione. E' un hypervisor sia di tipo I che di tipo II. Le VM erogate tramite KVM usano il demone libvirt per essere create e gestite. qemu e' il software su cui si basano le VM gestite da KVM. Fornisce all'HV il software per emulare i dispositivi HW che la VM utilizza.
Macchine virtuali
Esistono tre tipi di VM:
-
completamente virtualizzate: un guest completamente virtualizzato e' quello in cui il guest non e' consapevole di essere un'istanza virtuale in esecuzione. Nelle CPU x86 bisogna abilitare le estensioni VT-X per CPU Intel e AMD-V per CPU AMD.
-
paravirtualizzate: un guest completamente paravirtualizzato e' quello in cui il guest e' consapevole di essere un'istanza virtuale in esecuzione. Questi tipi di guest fanno uso di driver speciali (guest driver) per utilizzare le risorse hardware e software dell'hypervisor.
-
ibride: questo approccio combina elementi di virtualizzazione completamente virtualizzata e paravirtualizzata. In un ambiente ibrido, alcune parti del SO guest possono essere paravirtualizzate, mentre altre possono essere completamente virtualizzate
Immagini disco
I tipi principali di immagini disco utilizzate dalle VM sono:
- COW: copy-on-write. E' un metodo che crea un file su disco con un limite di dimensione predefinito. La dimensione dell'immagine sul disco aumenta, ma non oltre il limite prestabilito, solo quando i dati vengono effettivamente scritti sul disco. Il formato usato e'
qcow2
. - RAW: si tratta di un file che ha tutto il suo spazio pre-allocato. Per esempio, un file di immagine disco raw da 10GB occupa esattamente 10GB sull'HV.
D-BUS Machine ID
Si tratta di un numero che identifica univocamente un sistema Linux, che si genera la momento della sua creazione.
dbus-uuidgen --ensure # Se non viene restituito un errore, esiste un ID per il sistema
dbus-uuidgen --get
e3c4be9c5ad146d4800150b18f31d073
Il D-BUS Machine ID si trova in /var/lib/dbus/machine-id
, che e' un collegamento simbolico a /etc/machine-id
.
Per generare un nuovo ID:
rm -rf /etc/machine-id
dbus-uuidgen --ensure=/etc/machine-id
Container
La principale differenza tra macchine virtuali e container è che questi ultimi condividono lo stesso kernel del sistema operativo host, Contengono solo le librerie e le dipendenze necessarie per l'applicazione, senza l'intero sistema operativo. I container vengono eseguiti direttamente sull'host, senza la necessità di un hypervisor.
Ogni VM esegue un sistema operativo completo, con il proprio kernel, librerie e applicazioni. Ogni VM ha il proprio sistema operativo guest installato, che può essere diverso dal sistema operativo host. Richiedono un hypervisor per gestire l'allocazione delle risorse hardware.