Il peut être intéressant de pouvoir virtualiser à l'intérieur même d'une VM, que l'on soit adepte des scénario type Inception, des poupées russes, ou tout simplement pour tester des choses, comme les solutions logiciels de gestion de datacenter virtualisé (ou autres termes fumeux, tel que cloud, private cloud, etc). Heureusement, depuis quelques temps il est possible d'activer le support de la virtualisation dans une VM avec KVM, en anglais, nested kvm.

Pour l'activer, il faut créer un fichier /etc/modprobe.d/kvm_nested.conf avec le contenu suivant:

options kvm_intel nested=1
options kvm_amd nested=1

Au prochain chargement du module kvm que vous utilisez, l'option sera prise en compte. Ne pas oublier d'activer le flag svm (pour Amd) ou vmx (pour Intel) dans la configuration de la VM (dans virt-manager, details de la VM, Processor, Configuration, CPU Features).

Dans la VM, un cat /proc/cpuinfo permet de voir le flag souhaité:

flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx lm constant_tsc up arch_perfmon rep_good nopl pni __vmx__ ssse3 cx16 sse4_1 __hypervisor__ lahf_lm

En terme de performance, il ne devrait pas y avoir de soucis, cela donne bien accès aux registres CPU dédiés à la virtualisation, ce n'est pas une émulation/encapsulation.