Recherche sur le site Web

Comment créer et gérer les machines virtuelles KVM à partir de CLI


Objectif

Apprenez à créer et à gérer les machines virtuelles KVM à partir de la ligne de commande

Système d'exploitation et versions logicielles

  • Système d'exploitation: - toutes les distributions Linux

Exigences

  • Accès aux racines
  • Packages:

    • Qemu-kvm - le package principal
    • LibVirt - Comprend le serveur LibVirtd exportant le support de virtualisation
    • LibVirt-Client - Ce package contient VIRSH et d'autres utilitaires côté client
    • Virgin-install - Utilité pour installer des machines virtuelles
    • Virt-Viewer - Utilité pour afficher la console graphique pour une machine virtuelle

Difficulté

MOYEN

Conventions

  • # - Exige que les commandes Linux soient exécutées avec des privilèges racine
    directement en tant qu'utilisateur root ou par utilisation de la commande sudo
  • $ - Exige que les commandes Linux soient exécutées en tant qu'utilisateur régulier non privilégié

Présentation

Savoir comment créer et gérer les machines virtuelles KVM à partir de la ligne de commande peut être vraiment utile dans certains scénarios: lorsque vous travaillez sur des serveurs sans tête, par exemple. Néanmoins, être en mesure de scripter les interactions avec des machines virtuelles peut considérablement améliorer notre productivité. Dans ce tutoriel, vous apprendrez à créer, supprimer, cloner et gérer les machines KVM à l'aide de quelques utilitaires.

Une certaine terminologie

Avant de commencer à travailler, il serait utile de définir ce que sont kvm et qemu et comment ils interagissent. kvm signifie la machine virtuelle du noyau , et c'est un module du noyau Linux qui permet à un programme d'accéder et d'utiliser les capacités de virtualisation des processeurs modernes , en exposant le/interface dev/kvm. Qemu est, plutôt le logiciel qui effectue réellement l'émulation du système d'exploitation. Il s'agit de l'émulateur de machine et du virtualiseur open source qui peut utiliser la fonction d'accélération fournie par kvm lors de l'exécution d'une machine émulée avec la même architecture de l' hôte.

Configuration préliminaire

La première chose que nous devons faire, c'est de vérifier que le CPU que nous utilisons présente une prise en charge de la virtualisation. À moins que vous ne couriez sur une très vieille machine, ce sera sûrement le cas, mais pour le vérifier, nous exécutons simplement:

$ cat /proc/cpuinfo

Faites défiler la sortie de la commande ci-dessus jusqu'à ce que vous voyiez la liste des «drapeaux» de CPU: parmi eux, vous devriez voir svm si vous utilisez un processeur AMD, ou vmx si Le fournisseur du processeur est Intel.

La deuxième chose que nous devons faire est de s'assurer que les modules de noyau nécessaires ont été chargés, pour vérifier cela, nous exécutons:

# lsmod | grep kvm
kvm_intel             200704  0
kvm                   598016  1 kvm_intel
irqbypass              16384  1 kvm

Je cours sur un CPU Intel, par conséquent, en plus du module kvm , également le kvm_intel , l'un a été chargé. Si vous utilisez un processeur AMD, le module kvm_amd sera chargé à la place. Si les modules ne sont pas chargés automatiquement, vous pouvez essayer de les charger manuellement en utilisant la commande modprobe :

# modprobe kvm_intel

Enfin, nous devons démarrer le démon libvirtd : la commande suivante le permet à la fois au démarrage et le démarre immédiatement:

# systemctl enable --now libvirtd

Créer la nouvelle machine virtuelle

Maintenant que nous avons installé et commencé le service libvirtd , nous pouvons utiliser la commande verrut-install pour configurer notre machine virtuelle. La syntaxe du programme est vraiment simple. La commande Linux suivante doit être exécutée comme root, ou, si vous souhaitez le lancer en tant qu'utilisateur normal, en tant que membre du groupe KVM . La syntaxe du programme est la suivante:

# virt-install --name=linuxconfig-vm \
--vcpus=1 \
--memory=1024 \
--cdrom=/tmp/debian-9.0.0-amd64-netinst.iso \
--disk size=5 \
--os-variant=debian8

Analysons la commande ci-dessus:

Tout d'abord, nous avons utilisé l'option - nom : c'est obligatoire et il est utilisé pour attribuer un nom à la nouvelle machine virtuelle.

L'option suivante est la - VCPUS . Nous l'utilisons pour spécifier le nombre de CPU virtuels à configurer pour l'invité.

L'option - mémoire est utilisée pour sélectionner la quantité de mémoire réservée à la machine invitée dans mib et - CDROM nous permet de spécifier le chemin Dans un fichier ou un appareil à utiliser comme CD-ROM virtuel: il peut s'agir d'une image ISO, d'un périphérique CDROM ou d'une URL à partir de laquelle accéder à une image ISO de démarrage.

L'indicateur - disque est utilisé pour configurer le stockage multimédia pour l'invité. Diverses options séparées par des virgules peuvent être spécifiées, par exemple: taille qui est utilisée pour spécifier la taille du disque virtuel dans GB et Path qui est utilisé pour spécifier un chemin Utiliser pour le disque (il sera créé s'il n'existe pas déjà). Si ces options sont spécifiées, vous devez vous assurer que le chemin cible est accessible et dispose du bon contexte Selinux (pour en savoir plus sur SELINUX, vous pouvez lire cet article).

Si l'option path n'est pas spécifiée, le disque sera créé dans $home/.local/share/libvirt/images si la commande est exécutée comme utilisateur normal ( membre de le groupe KVM) ou in/var/lib/libvirt/images si l'exécution de racine.

Ensuite, nous avons passé l'option - OS-Variant . Bien que cela ne soit pas obligatoire, il est fortement recommandé de l'utiliser, car il peut améliorer les performances de la machine virtuelle. L'option essaiera d'affiner l'invité à la version spécifique du système d'exploitation. Si l'option n'est pas adoptée, le programme tentera de détecter automatiquement la valeur correcte à partir du support d'installation. Pour obtenir une liste de tous les systèmes pris en charge, vous pouvez exécuter:

$ osinfo-query os

Si tout s'est bien passé et que le package Vir-Viewer est installé, une fenêtre apparaîtra affichant le programme d'installation du système d'exploitation invité.

L'utilitaire VIRSH

L'utilitaire VIRSH peut être utilisé pour interagir avec les machines virtuelles. Par exemple, disons que vous souhaitez répertorier tous les invités configurés, en utilisant VIRSH, vous pouvez simplement exécuter:

# virsh list --all

La sortie affichera le id , name et état de tous les invités configurés, qu'ils soient en cours d'exécution ou non.

Mais que se passe-t-il si vous voulez modifier certains paramètres de la machine invités? Vous pouvez utiliser virsh pour accomplir cette tâche, par exemple:

# virsh edit linuxconfig-vm

Voici une capture d'écran de la sortie de commande:

Comme vous pouvez le voir, la sortie est une représentation XML des propriétés de la machine virtuelle, ou, en utilisant la terminologie VIRSH, un domaine . Si vous souhaitez modifier, par exemple, le nombre de VCPU, il vous suffit de trouver la balise pertinente et de modifier la valeur. Dans ce cas, nous avons:

<vcpu placement='static'>1</vcpu>

Nous voulons ajouter 1 VCPU, nous allons donc le changer en:

<vcpu placement='static'>2</vcpu>

Tout ce que nous avons à faire maintenant, c'est simplement redémarrer la machine virtuelle pour que les paramètres soient appliqués:

# virsh reboot linuxconfig-vm

Si nous exécutons maintenant LSCPU dans la console invitée, nous devrions voir le nombre accru de processeurs:

La commande VIRSH peut également être utilisée pour effectuer d'autres opérations communes: par exemple, VIRSH Shutdown peut être utilisé pour arrêter l'invité, VIRSH DESTRESS est l'équivalent d'un arrêt de force brute (il peut donc être dangereux) et VIRSH Undefine peut être utilisé pour supprimer une machine invitée (pour indéfinir un domaine).

AutoStart une machine virtuelle sur le démarrage

Vous pouvez également profiter de la commande VIRSH si vous voulez que certains invités soient démarrés automatiquement lorsque le système hôte est en bogue: la syntaxe, encore une fois, très intuitif:

# virsh autostart linuxconfig-vm

Pour désactiver cette option, nous exécutons:

# virsh autostart --disable linuxconfig-vm

Cloner un invité

Un autre utilitaire, Virg-Clone peut être utilisé pour créer une nouvelle machine virtuelle en clonant une nouvelle machine existante. Pour continuer, nous devons d'abord nous assurer que l'invité à cloner est en panne que nous courons:

virt-clone \
--original=linuxconfig-vm \
--name=linuxconfig-vm-clone \
--file=/var/lib/libvirt/images/linuxconfig-vm.qcow2

Ce que nous avons ici est très simple à comprendre: nous avons spécifié que l'invité est cloné à l'aide de l'option - Original et le nom du nouvel invité en utilisant - Nom comme si Nous l'installions à partir de zéro. Avec l'option - fichier , nous référons à la place tous les disques durs virtuels associés à l'invité d'origine que nous voulons cloner. Le programme fera son travail et, en cas de succès, créera un nouveau domaine nommé LinuxConfig-vm-Clone . Nous savons déjà comment le vérifier:

# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     linuxconfig-vm                 shut off
 -     linuxconfig-vm-clone           shut off

Réflexions finales

Dans ce tutoriel, nous avons configuré une nouvelle machine virtuelle et nous avons vu comment interagir avec elle. Les options que nous avons spécifiées au moment de la création sont juste nécessaires pour une configuration de travail. Beaucoup d'autres options peuvent être utilisées pour ajuster plusieurs aspects de la machine invitée et ils sont vraiment bien décrits dans la page de manche Virt-Install . Comme toujours, le meilleur conseil possible est: lire le manuel.

Articles connexes: