In questa guida vedremo come abilitare la virtualizzazione nidificata in KVM in Linux. Virtualizzazione nidificata è una funzionalità che consente di eseguire una macchina virtuale all'interno di un'altra macchina virtuale mentre si utilizza ancora l'accelerazione hardware dal sistema host. In altre parole, la virtualizzazione nidificata è un meccanismo per eseguire un hypervisor all'interno di una macchina virtuale (VM), che a sua volta gira su un hypervisor.
Abilita la virtualizzazione nidificata in KVM in Linux
Prima di abilitare la funzionalità VT nidificata, spegnere tutte le macchine virtuali in esecuzione.
Quindi, scarica i moduli KVM.
Per scaricare il modulo KVM su INTEL sistemi, eseguire:
$ sudo modprobe -r kvm_intel
Su AMD sistemi:
$ sudo modprobe -r kvm_amd
Ricaricare il modulo KVM con la funzionalità annidata abilitata sulle CPU INTEL con il comando:
$ sudo modprobe kvm_intel nested=1
Ricarica il modulo KVM con la funzione nidificata abilitata sulle CPU AMD usando il comando:
$ sudo modprobe kvm_amd nested=1
Abilita la virtualizzazione nidificata in modo permanente
Si noti che la funzione VT nidificata è abilitata solo fino al riavvio del sistema host KVM. Per abilitare in modo permanente la funzione nidificata, modifica /etc/modprobe.d/kvm.conf file:
$ sudo vi /etc/modprobe.d/kvm.conf
Se il file non esiste, crealo.
Aggiungi la seguente riga su INTEL host:
options kvm_intel nested=1
Aggiungi la seguente riga su AMD host:
options kvm_amd nested=1
Salva e chiudi il file.
Fatto! Abbiamo abilitato VT nidificato sul sistema host KVM.
Verifica se la virtualizzazione nidificata è abilitata nell'host KVM
Se il tuo processore è INTEL, controlla "/sys/module/kvm_intel/parameters/nested" file usando il comando "cat":
$ cat /sys/module/kvm_intel/parameters/nested
Verifica se la virtualizzazione nidificata è supportata in Linux
Se restituisce "Y" o "1" , significa che il tuo sistema supporta la virtualizzazione nidificata. Se l'output è "N" o "0" , il tuo sistema non supporterà la virtualizzazione nidificata.
Se il tuo processore è AMD, controlla il contenuto di "/sys/module/kvm_amd/parameters/nested" file.
In alternativa, puoi usare il comando seguente per assicurarti che il modulo del kernel "kvm_intel" abbia la nidificazione abilitata:
$ modinfo kvm_intel | grep -i nested
Risultato di esempio:
parm: nested_early_check:bool parm: nested:bool
Su CPU AMD:
$ modinfo kvm_amd | grep -i nested
Bene, il mio host KVM supporta la virtualizzazione nidificata ed è già abilitato.
Abilita la virtualizzazione nidificata su macchine guest KVM
Possiamo abilitare la funzionalità nidificata su una VM KVM dalla riga di comando o utilizzando un'applicazione di gestione KVM grafica come Virt-manager .
Abilita la funzionalità nidificata nei guest KVM dalla riga di comando
Accedi alla console virsh:
$ virsh
Modifica la macchina virtuale in cui desideri abilitare la funzionalità nidificata:
virsh # edit centos
Per trovare tutte le macchine virtuali disponibili, esegui questo comando all'interno della console virsh:
virsh # list --all
Trova il parametro "cpu mode" e imposta il suo valore come "host-model".
<cpu mode='host-model' check='partial'/>
Abilita la funzionalità nidificata nei guest KVM utilizzando il comando virsh
Salva e chiudi il file.
Avvia la VM:
virsh # start centos8
Verifica se la funzionalità nidificata è abilitata per la macchina virtuale:
virsh # dumpxml centos8
Dovresti vedere che tutte le politiche delle funzionalità necessarie nella direttiva "modalità CPU" sono aggiornate ora:
<cpu mode='custom' match='exact' check='full'> <model fallback='forbid'>SandyBridge-IBRS</model> <vendor>Intel</vendor> <feature policy='require' name='vme'/> <feature policy='require' name='vmx'/> <feature policy='require' name='pcid'/> <feature policy='require' name='hypervisor'/> <feature policy='require' name='arat'/> <feature policy='require' name='tsc_adjust'/> <feature policy='require' name='umip'/> <feature policy='require' name='md-clear'/> <feature policy='require' name='stibp'/> <feature policy='require' name='arch-capabilities'/> <feature policy='require' name='ssbd'/> <feature policy='require' name='xsaveopt'/> <feature policy='require' name='ibpb'/> <feature policy='require' name='amd-ssbd'/> <feature policy='require' name='skip-l1dfl-vmentry'/> <feature policy='disable' name='aes'/> </cpu>
La funzionalità di virtualizzazione nidificata è stata abilitata per CentOS 8 VM.
Abilita la funzionalità nidificata nei guest KVM utilizzando Virt-manager
Aprire l'applicazione GUI Virt-manager e fare doppio clic sul guest KVM in cui si desidera abilitare la funzione VT nidificata. Fai clic sul pulsante "Mostra dettagli hardware virtuali" e vai alla sezione "CPU" nel menu a sinistra.
Seleziona "Copia configurazione CPU host" casella di controllo nella finestra di configurazione della CPU e fare clic su Applica.
Configura la virtualizzazione nidificata in VIrt-manager
Ora il modello e la configurazione della CPU dell'host fisico verranno applicati alla VM.
Verifica se i guest KVM supportano la virtualizzazione
Accendi e accedi alla macchina guest KVM in cui hai abilitato la funzione nidificata.
Eseguire il comando seguente nel terminale del guest KVM per verificare se la virtualizzazione è abilitata o meno:
# egrep --color -i "svm|vmx" /proc/cpuinfo
Risultato di esempio:
Verifica se i guest KVM supportano la tecnologia di virtualizzazione in Linux
Se vedi “vmx” (tecnologia Intel-VT) o “svm” (supporto AMD-V) nell'output, la macchina guest KVM può funzionare come hypervisor e host VM. Come puoi vedere nell'output sopra, la mia macchina virtuale KVM CentOS 8 supporta la virtualizzazione.
Consulta la seguente guida per scoprire altri modi per verificare se un sistema Linux supporta o meno VT.
- Come scoprire se una CPU supporta la tecnologia di virtualizzazione (VT)
Lettura correlata:
- Come abilitare la virtualizzazione annidata in VirtualBox