ISITCom Hammam Sousse
Matière : Virtualisation et cloud computing
A.U. : 2023/2024
Niveau :
Enseignante : Rahma Haouas
TP Paravirtualisation KVM
Objectifs du TP :
⁻ Maitrise de KVM avec ses outils de gestion
o Préparation de l’environnement et activation de la virtualisation matérielle
o Installer KVM et ses outils de gestion
o Créer une VM avec virt-manager
o Administration avec virsh
o Créer une VM avec virt-install
o Accéder à la console (graphique et texte)
⁻ Création d’un réseau virtuel à l’aide de KVM
KVM Virtualization
KVM is short for Kernel-based Virtual Machine. It was originally an open source project developed by
Qumranet. In 2008, Red Hat acquired Qumranet. However, KVM is still an open-source project
supported by providers such as Red Hat and IBM.
KVM is a kernel-based VM because KVM is a Linux kernel module. After this module is installed on a
physical machine running Linux, the physical machine becomes a hypervisor without affecting other
applications running on Linux. KVM supports CPU architectures and products, such as x86/x86_64
CPU architecture (also for Xen), mainframes, midrange computers and ARM architecture.
KVM makes full use of the hardware-assisted virtualization of CPU and reuses many functions of the
Linux kernel. As a result, KVM consumes a few resources. Avi Kivity, the founder of KVM, claimed
that the KVM module had only about 10,000 lines of code. However, we cannot naturally conclude
that KVM hypervisor just had that amount of code, because KVM is actually a module that can be
loaded in the Linux kernel. It is used to turn the Linux kernel into a bare-metal hypervisor.
A Linux kernel is converted into a hypervisor by loading a KVM module. The Linux runs in kernel
mode, a host process runs in user mode, and a VM runs in guest mode, so the converted Linux kernel
can perform unified management and scheduling on the host process and the VM. This is why KVM
got its name.
KVM et QEMU
QEMU est un émulateur de toutes les ressources nécessaires pour la VM (mémoire, processeur,
équipements E/S, USB et NIC)
Dans la solution de virtualisatipon KVM, KVM virtualise le Processeur et la mémoire et QEMU
virtualise les I/O. Ceci rend la solution performante parce que la virtualisation du processeur et de la
mémoire, qui consomment plus de performances CPU, sont effectuées au niveau du Kernel. Seul le
module de virtualisation des E/S est effectué au niveau de l’espace utilisateur. Cela évite les
basculements fréquents entre le mode utilisateur et le mode noyau et optimise les performances.
Virtualization Platform Management Tool – Libvirt
Libvirt est une API open source, un démon et un outil de gestion conçu pour gérer les technologies
de virtualisation de plate-forme. Il gère non seulement les clients virtualisés, mais également les
réseaux et le stockage virtualisés.
Outils de gestion libvirt:
⁻ virsh : cli pour libvirt (ligne de commande et shell)
⁻ qemu-img : permet de gérer les images des disques
⁻ virt-manager : client graphique
⁻ virt-install : commande pour la création des machines virtuelles
⁻ virt-viewer : client console graphique (spice)
⁻ virt-clone : outil de clonage
⁻ virt-top : top de VM libvirt
travail à réaliser
1. création de l’hôte
Dans ce TP, nous para-virtualisons un hôte Linux. Pour éviter les éventuelles
modifications de l’OS hôte, nous opterons à la création d’une Machine virtuelle virtualBox
qui jouera le rôle de l’hôte.
Le système d’exploitation de la VM hôte utilisé dans ce TP est ubuntu 22.04.
a. sur virtualBox, créer la VM avec les paramètres suivants :
i. name : HOST
ii. OS : Linux/Ubuntu
iii. Memory size : 4096MB
iv. Create virtual hard disk (VHD)
v. VHD size = 30 GB
vi. Configurer les paramètres de la VM pour démarrer sur le disque dur
• System: boot on hard disk
b. configuration des paramètres réseau
i. laisser adapter 1 configuré en NAT
ii. Network/adapter2: enable network adapter attached to bridged adapter
c. activez la virtualisation matérielle
i. System/acceleration:
• Paravirtualization interface : KVM
• Enable nested paging
ii. System/processor: enable nested VT-x/AMD-V
Si cette option est grisée, procédez comme suit :
⁻ Enregistrer la configuration actuelle de la VM
⁻ Démarrer PowerShell de windows (wind + X)
⁻ Aller dans le répertoire d’installation de virtualBox :
Cd C:\Program Files\Oracle\VirtualBox
⁻ Modifier le VBoxManage.exe pour activer la virtualisation matérielle pour votre VM
.\ VBoxManage.exe modifyvm “Host ‘’ --nested-hw-
virt on
iii. Vous pouvez maintenant cocher : enable nested VT-x/AMD-V
d. installer le système d’exploitation, activer les deux interfaces réseau NIC1
et NIC2, configurez le mot de passe root et redémarrer
2. préparation et mise à jour du système de l’hôte
sudo apt-get update sudo
apt-get upgrade
3. vérification de l’installation de KVM
sudo apt install cpu-checkersudo kvm-
ok
Le résultat doit afficher :
Un redemmarrage pourrais être nécessaire pour le bon fonctionnement de cette étape.
4. installation de qemu et des outils de gestion
sudo apt-get install qemu-kvm libvirt-bin virtinst bridge-
utils qemu-utils
ou bien
sudo apt install qemu-kvm libvirt-clients libvirt-daemon-
system bridge-utils virtinst libvirt-daemon
5. activation et démarrage du démon libvirt
sudo systemctl enable --now libvirtd sudo
systemctl start libvirtd
6. création d’une VM en utilisant virt-install en ligne de commande
a. mettre le fichier image de l’OS à installer en local
b. créer la machine virtuelle VM1.img dans le fichier déjà crée TP de taille 10
sudo virt-install --name VM1 --ram=2048 --vcpus=1 –disk path=/TP/VM1.img,size=10 --
cdrom /root/RHEL-7.0-20140507.0-Server-x86_64-dvd1.iso
Si un problème de permission de stockage est affiché : ERROR Cannot access
storage file ' /home/nihed/TP/VM1.img
$ sudo getfacl -e /home/nihed/ #votre dossier
$ sudo setfacl -m u:other:rx /home/nihed/ #si dans l’affichage de la
requête précédant, l’utilisateur kvm existe, remplacer other par kvm
Verifier que vous avez accordé les droits d’écriture à user : other
$ sudo getfacl -e /home/nihed/
Redémarrer libvirt
$ sudo systemctl restart libvirtd
7. clonage d’une VM en ligne de commande
Pour avoir plusieurs VM avec le même OS et la même configuration, il est recommandé de
cloner des VM existantes plutôt que d'installer l'OS sur chacun d'eux.
Dans cet exemple, nous allons cloner VM1. La nouvelle VM cloné sera nommée VM1C.
a. Suspendre la VM à cloner. Ceci est nécessaire pour garantir que toutes les
données et les E/S du réseau sur la VM sont arrêtées : # virsh suspend vm
b. Clonage en ligne de commande avec virt-clone
virt-clone --connect qemu:///system --original VM1 --name VM1C --file /vm-
images/VM1C.img
c. Une fois terminé, vous pouvez reprendre la VM d'origine : # virsh resume vm1
d. La VM clonée est placée en mode arrêt. Pour le démarrer : # virsh start vm1-clone
8. installation de virt-manager
sudo apt install virt-manager -y
9. création d’une VM en utilisant virt-manager
a. démarrer virt-manager : sudo virt-manager
b. utiliser l’interface graphique pour créer la VM
10. Démarrez les deux VMs déjà crées et vérifier la connexion entre les deux machines