concetti di virtualizzazione
This commit is contained in:
parent
abc0353584
commit
3c578329cb
@ -0,0 +1,65 @@
|
||||
# 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 usod i 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.
|
||||
|
||||
```bash
|
||||
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:
|
||||
|
||||
```bash
|
||||
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.
|
||||
|
||||
![container_vs_vm](/asset/image/container_vs_vm.png)
|
||||
|
BIN
101/asset/image/container_vs_vm.png
Normal file
BIN
101/asset/image/container_vs_vm.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 145 KiB |
Loading…
x
Reference in New Issue
Block a user