Ceci est une ancienne révision du document !
Utilisation de KVM pour la virtualisation
KVM (pour “Kernel-based Virtual Machine”), est une technologie de virtualisation Open Source integrée au noyau Linux. Cela permet de transformer une distribution Linux en hyperviseur de type 1 (système nu), offrant de meilleures performances et une compatibilité matérielle plus large que les hyperviseurs de type 2 (Virtualbox, Hyper-V…).
Le logiciel QEMU, complémentaire à KVM, permet d'émuler différentes architectures processeur et ajoute des fonctions analogues à KVM. On nomme ce duo QEMU/KVM.
Configuration des pré-requis
Lors de l'utilisation de KVM, il est fortement recommandé d'avoir une interface graphique sur sa machine, ou d'avoir des connaissances en affichage avec X11 (Server X Window).
Les bibliothèques à installer pour utiliser QEMU/KVM sont :
qemu-system,libvirt-clients, etlibvirt-daemon-systempour la partie “système”virt-managerpour l'interface d'administration des VMvirt-viewerpour l'affichage des VM
Installer tout d'un coup avec cette commande :
apt-get install qemu-system libvirt-clients libvirt-daemon-system virt-manager virt-viewer
Et ajouter les futurs utilisateurs de KVM au groupe libvirt (remplacer admlnx par un utilisateur à ajouter au groupe) :
adduser admlnx libvirt
Prise en main de KVM
KVM s'administre avec l'utilitaire virsh. C'est lui qui permettra la gestion des machines virtuelles. On peut aussi se servir de virt-manager comme interface graphique mais elle n'est pas aussi complète. Les machines virtuelles dans KVM sont appelées “Domaines”.
Tout d'abord, on peut vérifier la configuration matérielle de l'hyperviseur (processeur & mémoire), avec :
virsh nodeinfo
Ensuite voici la commande qui permet de lister tous les domaines :
virsh list --all
Ici, c'est tout simplement vide car il n'y a encore aucune machine virtuelle de créée !
Pour n'afficher que les VM actives, il suffit de retirer l'argument –all.
Les commandes de base pour gérer les domaines sont :
virsh start domaine: démarrer une machine virtuelle existante (remplacer domaine par le nom de la machine virtuelle à démarrer)virsh shutdown domaine: arrêter une machine virtuelle proprement (envoi du signal d'extinction)virsh destroy domaine: éteindre une machine virtuelle brutalement (comme si on coupait l'alimentation)virsh undefine domaine: supprimer une machine virtuelle (ne supprime pas le disque dur virtuel, il faut le supprimer manuellement dans/var/lib/libvirt/images)virsh dominfo domaine: afficher des informations sur une machine virtuelle existante
La commande virsh help permet de lister les commandes utilisables dans virsh.
Création d'une machine virtuelle
Lorsque l'on souhaite créer un nouveau domaine dans KVM, on utilise le script virt-install. Pour cela, il faut générer un fichier de configuration décrivant la machine virtuelle à générer avec différents paramètres (hardware, disque de boot…).
Par exemple, la commande suivante permet de générer un domaine qui sera nommé “Win10” de type Windows 10, avec un disque dur virtuel de 40Gb, 4096Mb de mémoire, 1 CPU virtuel, ainsi qu'avec le fichier /home/admlnx/ISO/Win10.iso en tant que CD-ROM.
virt-install --virt-type kvm --name Win10 \ --description "VM de Test" \ --cdrom "/home/admlnx/ISO/Win10.iso" \ --os-variant win10 \ --disk size=40 --memory 4096 --vcpu 1
A la place de - -cdrom, on peut demander à KVM de télécharger directement le disque sur lequel le système devra démarrer depuis Internet :
--location http://deb.debian.org/debian/dists/buster/main/installer-amd64/ \
On peut aussi désactiver l'interface graphique d'un domaine en précisant une console texte qui lui sera associée (pratique si on a aucune interface graphique sur l'hyperviseur ou pour les VM Linux). Il faudra obligatoirement utiliser l'option
- - location à la place de - -cdrom et préciser la console série virtuelle à utiliser :
<code>virt-install –virt-type kvm –name Debian10 \
–location “/home/admlnx/ISO/deb10.iso” \
–os-variant debian10 \
–disk size=10 –memory 1024 \
–graphics none \
–extra-args console=ttyS0
Ci-dessus, on demande à KVM de lier la VM au terminal série ttyS0 sur la machine physique. Le paquet screen permet de se connecter au terminal série voulu avec la commande :
<code>screen /dev/ttyS0</code>
Configuration du réseau pour les VM
Activer les fonctions réseau par défaut pour les domaines KVM avec :
virsh net-start default
Pour que cela démarre tout seul au lancement de KVM, faire ceci :
virsh net-autostart default
