Comment activer la virtualisation KVM imbriquée
Agence web » Actualités du digital » Comment activer la virtualisation KVM imbriquée

Comment activer la virtualisation KVM imbriquée

KVM est une technologie de virtualisation intégrée au noyau Linux. Un système avec KVM activé peut agir comme un hyperviseur de type 1, à condition que le processeur le prenne en charge.

Il existe plusieurs façons de créer une machine virtuelle à l’aide de KVM. QEMU peut utiliser KVM et libvirt et son interface utilisateur Virtual Machine Manager fournit une interface pratique autour de lui.

KVM peut être utilisé pour créer des machines virtuelles imbriquées sur du matériel compatible. Cela vous permet de créer des machines virtuelles à l’intérieur de machines virtuelles pour s’adapter à des cas d’utilisation plus complexes. Envisagez un environnement de développement virtualisé qui s’exécute sur votre hôte. Vous devrez peut-être exécuter des émulateurs de périphériques virtuels dans cet environnement, niché à deux niveaux de profondeur du matériel métallique nu.

Cet article vous montrera comment configurer la virtualisation KVM imbriquée et tester son bon fonctionnement. Avant de continuer, vérifiez que vous disposez d’une installation KVM fonctionnelle et que vous êtes familiarisé avec la création de nouvelles machines virtuelles KVM.

Vérifier si la virtualisation imbriquée est activée

La virtualisation imbriquée est prise en charge par la plupart des familles de processeurs modernes qui offrent la virtualisation matérielle. Vous pouvez vérifier si l’imbrication est déjà activée sur votre hyperviseur en utilisant le cat commande pour lire l’un des chemins suivants, selon que vous avez un système Intel ou AMD :

# Intel
$ cat /sys/module/kvm_intel/parameters/nested

# AMD
$ cat /sys/module/kvm_amd/parameters/nested

La sortie doit être soit Y ou N. Voyant Y signifie que vous êtes prêt à partir – la virtualisation imbriquée est déjà activée. Vous pouvez passer à la section « Activation de la virtualisation imbriquée pour un invité » ci-dessous. Si tu vois N dans votre terminal, il est temps d’activer l’imbrication dans le module noyau de KVM.

Activation de la virtualisation imbriquée

L’imbrication est contrôlée par un paramètre de module de noyau KVM. Vous pouvez changer le paramètre en éditant /etc/modprobe.d/qemu-system-x86.conf. Sur certains systèmes, ce fichier peut être appelé /etc/modprobe.d/kvm.conf.

Vous verrez probablement une seule ligne semblable à l’une de celles-ci :

options kvm_intel
options kvm_intel nested=0

options kvm_amd
options kvm_amd nested=0

Chacune de ces variantes signifie que KVM est actif mais que l’imbrication est désactivée.

Pour activer l’imbrication, il suffit d’ajouter ou de modifier le nested paramètre donc il a 1 comme sa valeur :

# Intel systems only
options kvm_intel nested=1

# AMD systems only
options kvm_amd nested=1

Ensuite, vous devez recharger le module du noyau KVM pour appliquer votre modification. Vous devez arrêter toutes les machines virtuelles en cours d’exécution avant de le faire.

# Unload the module
$ sudo modprobe -r kvm_intel

# Reload the module with new settings
$ sudo modprobe kvm_intel

Remplaçant kvm_amd à la place de kvm_intel si vous avez un processeur AMD.

Répétez maintenant la commande précédente pour vérifier si l’imbrication est activée. Tu devrais obtenir Y comme sortie.

# Intel
$ cat /sys/module/kvm_intel/parameters/nested
Y

# AMD
$ cat /sys/module/kvm_amd/parameters/nested
Y

Cette méthode active en permanence la virtualisation imbriquée. Il persistera à travers les redémarrages jusqu’à ce que vous supprimiez nested=1 à partir des paramètres du module KVM.

Activation de la virtualisation imbriquée pour un invité

Les machines virtuelles invitées ne peuvent utiliser la virtualisation imbriquée que lorsqu’elles sont configurées avec un mode CPU qui la prend en charge. L’invité a besoin d’une définition de CPU qui corresponde exactement au matériel physique de votre hôte.

La plupart des invités fonctionneront lorsque le mode CPU est défini sur host-model, qui est généralement la valeur par défaut. Cela signifie que l’invité reçoit une définition de CPU similaire à celle de votre hôte. Dans certains cas, vous devrez peut-être utiliser le host-passthrough mode qui passe exactement par toutes les caractéristiques du CPU hôte.

Vous pouvez vérifier et modifier le type de CPU d’un invité en récupérant son manifeste avec virsh. Exécutez d’abord le virsh commande pour lancer un shell interactif. Tapez ensuite list --all pour récupérer toutes vos VM :

virsh # list --all
 Id   Name          State
------------------------------
 -    ubuntu22.04   shut off
 -    win10         shut off

Prochaine exécution edit <vm-name> pour ouvrir le manifeste d’une VM nommée :

virsh # edit ubuntu22.04

Dans le fichier, recherchez la ligne qui commence par <cpu mode=. Remplacez-le par l’un de ceux-ci :

<cpu mode="host-model" check='partial' />
<cpu mode="host-passthrough" check='none' />

Enregistrez et fermez le fichier, puis tapez exit dans le shell virsh pour le fermer. L’invité devrait maintenant être prêt à démarrer ses propres invités imbriqués. Essayez de changer de mode s’il semble y avoir un problème.

Vérifier qu’un invité peut s’imbriquer

La plupart des systèmes d’exploitation peuvent vous dire s’ils peuvent créer une machine virtuelle. Exécutez la commande suivante dans votre VM pour vérifier si un invité Linux a accès à la virtualisation :

cat /proc/cpuinfo | grep "svm|vmx"

La virtualisation est disponible si vous obtenez une sortie avec svm ou vmx mis en évidence en rouge. SVM apparaîtra sur les machines AMD ; VMX apparaît pour Intel.

Installez maintenant une technologie de virtualisation au sein de l’invité. Vous devriez constater que vous pouvez démarrer une nouvelle machine virtuelle imbriquée. Voici une capture d’écran montrant une machine virtuelle Ubuntu qui exécute elle-même un invité Alpine à l’aide de KVM imbriqué :

une image montrant des machines virtuelles KVM imbriquées

Limites

Les invités imbriqués sont soumis à quelques limitations. Certaines fonctionnalités KVM deviennent indisponibles pour les invités qui ont démarré une machine virtuelle imbriquée. Vous ne pourrez pas migrer, enregistrer ou charger ces machines virtuelles tant que la machine virtuelle imbriquée n’est pas arrêtée.

L’effet réel d’essayer d’effectuer l’une de ces opérations n’est pas défini. Certains systèmes pourraient y résister ; d’autres peuvent provoquer une panique du noyau. Essayez toujours d’arrêter vos invités imbriqués avant d’effectuer une opération sur les machines virtuelles au-dessus d’eux dans la chaîne.

Sommaire

La virtualisation imbriquée offre plus de puissance et de flexibilité. Vous pouvez utiliser des technologies de bac à sable qui nécessitent leur propre virtualisation pour fonctionner, telles que les IDE qui lancent des émulateurs de périphériques.

Faire fonctionner l’imbrication avec KVM est normalement simple. Tout dépannage doit commencer par vérifier le nested Le paramètre est activé pour votre module de noyau KVM. Après cela, vérifiez le modèle de processeur attribué à votre invité et vérifiez que vous utilisez un hyperviseur de second niveau compatible au sein de la machine virtuelle.

★★★★★