TP Virtualisation & Cloud
KVM, Virtualisation Imbriquée et
Configuration VNC/NoVNC
Présenté Par :
Madjiguene Ndong
Nadjwa Hassani
Bassirou Diakité
Ebode Bomba Yan
Table des matières
Partie I : Fondamentaux Théoriques.......................................................................3
1. Introduction.................................................................................................. 3
1.1 Concepts de virtualisation.....................................................................3
1.2 Hyperviseur........................................................................................... 3
1.3 Virtualisation imbriquée........................................................................3
2. Présentation de KVM.................................................................................... 4
1.1 Architecture KVM................................................................................... 4
1.2 Composants clés................................................................................... 5
1.3 Avantages et limitations........................................................................5
Partie II : Installation et Configuration de Base.......................................................6
3. Mise en place de la virtualisation imbriquée et Installation de KVM.............6
Partie III : Configuration avance............................................................................. 8
4. Installation et configuration d’une machine virtuelle Windows sur KVM......8
4.1 Gestion des machines virtuelle avec virsh..........................................13
Partie IV : TP Configuration et Utilisation de VNC et NoVNC.................14
Partie I : Fondamentaux Théoriques
1. Introduction
1.1 Concepts de virtualisation
La virtualisation de l’infrastructure informatique consiste à créer des
versions virtuelles des composants matériels traditionnels. Au lieu de
s’appuyer sur des ressources physiques dédiées, la virtualisation permet
de tirer parti de l’abstraction des ressources, ce qui signifie que ces
ressources sont définies et gérées par des logiciels au lieu d’être liées à un
matériel physique spécifique.
1.2 Hyperviseur
Un hyperviseur est un logiciel de gestion de ressources informatiques qui
permet de créer, d'exécuter et de superviser simultanément plusieurs
machines virtuelles (VM) sur un même matériel physique. Il agit comme un
gestionnaire qui alloue et partage dynamiquement les ressources
(processeur, mémoire, stockage) entre différents systèmes d'exploitation
virtuels, garantissant leur isolation et leur indépendance
Ces hyperviseurs s’exécutent Ces hyperviseurs s’exécutent sur
directement sur le matériel sans un système d’exploitation hôte.
nécessiter de système Bien qu’ils puissent être plus
d’exploitation hôte. simples à configurer.
1.3 Virtualisation imbriquée
La virtualisation imbriquée (Nested Virtualisation) permet d'exécuter un
hyperviseur à l'intérieur d'une machine virtuelle, créant ainsi plusieurs
niveaux de virtualisation.
Fonctionnement :
Niveau 0 : Matériel physique
Niveau 1 : Premier hyperviseur (VMware dans notre cas)
Niveau 2 : Machine virtuelle Linux avec KVM
Niveau 3 : Machines virtuelles créées sous KVM
2. Présentation de KVM
KVM, acronyme de Kernel-based Virtual Machine est un hyperviseur
intégré au noyau Linux. Ce n’est pas une application autonome, mais
plutôt une extension du noyau Linux lui-même. Grâce à cette intégration,
KVM bénéficie d’une performance accrue et d’une meilleure gestion des
ressources par rapport à des solutions de virtualisation traditionnelles, qui
s’exécutent en tant qu’applications distinctes au-dessus du système
d’exploitation.
L’un des aspects les plus intéressants de KVM est sa capacité à
transformer le noyau Linux en un hyperviseur de type 1, souvent désigné
comme un hyperviseur « bare-metal ». Cela permet à KVM de gérer
directement le matériel, offrant ainsi une efficacité et des performances
optimales.
1.1 Architecture KVM
1.2 Composants clés
Module noyau KVM(/dev/kvm) : Module intégré au noyau Linux
transformant le système d'exploitation en hyperviseur natif. Permet
l'exploitation directe des capacités de virtualisation matérielles.
Interface système localisée à /dev/kvm. Supporte des appels
systèmes spécifiques pour la création et l'exécution de machines
virtuelles. Gère l'isolation et la sécurisation des environnements
virtuels.
Interface utilisateur QEMU : Émulateur de processeur et interface
de configuration pour les machines virtuelles. Élément central de
l'écosystème de virtualisation Linux. Supporte l'émulation de
différents types de processeurs et architectures. Permet la
configuration détaillée du matériel virtuel (CPU, mémoire, réseau,
disques).
Bibliothèque libvirt : Bibliothèque de gestion de la virtualisation
qui fournit une interface unifiée pour différents hyperviseurs. Elle
permet une abstraction complète des technologies de virtualisation.
Intégration avec virsh pour la gestion en ligne de commande.
Compatible avec des interfaces graphiques comme virt-manager.
1.3 Avantages et limitations
Comme KVM fait partie du système d'exploitation Linux et que Linux
fait partie de KVM, on peut les considérer comme un seul et même
système. Examinons les principaux avantages de la mise en œuvre
de l'hyperviseur KVM dans l'infrastructure d'une entreprise :
Gestion efficace de la mémoire : Elle utilise des techniques telles
que le ballooning, qui ajuste dynamiquement l'allocation de mémoire
pour les machines virtuelles en fonction de leurs besoins.
Sécurité renforcée : KVM renforce la sécurité en utilisant sVirt en
conjonction avec SELinux, offrant un contrôle d'accès obligatoire
pour les machines virtuelles afin de les isoler et d'empêcher tout
accès non autorisé, améliorant ainsi la sécurité globale de
l'environnement virtuel.
Migration dynamique des machines virtuelles : L'hyperviseur
KVM permet la migration en direct des machines virtuelles entre les
hôtes physiques sans causer d'interruption de service, ce qui
garantit une haute disponibilité et un équilibrage efficace de la
charge entre les serveurs.
Contrôle et planification efficaces des ressources : S'appuyant
sur le noyau Linux, l'hyperviseur KVM assure une gestion efficace
des ressources informatiques, le planificateur avancé de Linux
répartissant de manière optimale les ressources entre les machines
virtuelles, ce qui garantit une utilisation efficace des ressources.
Évolutivité et performances : Idéal pour les déploiements de
virtualisation à grande échelle, comme dans les centres de données,
l'hyperviseur KVM est hautement évolutif, capable de gérer
efficacement un grand nombre de machines virtuelles et d'offrir des
performances élevées, même sous des charges importantes, grâce à
sa virtualisation assistée par le matériel et à sa gestion efficace des
ressources
La technologie de l'hyperviseur KVM, comme toute solution
logicielle, présente certains inconvénients. Heureusement, ceux-ci
ne sont pas nombreux et ne posent généralement pas de problèmes
importants. Les principaux inconvénients sont les suivants :
Complexité d'utilisation : La mise en place et la gestion d'un
environnement KVM nécessitent un certain savoir-faire technique, en
particulier avec le terminal du système d'exploitation Linux. Bien
que le KVM soit équipé de paramètres par défaut qui conviennent à
la plupart des utilisateurs, la compréhension et la personnalisation
de ces paramètres pour des tâches spécifiques peuvent s'avérer
difficiles si l'on ne dispose pas des compétences techniques
requises.
Jeunesse relative : KVM est plus récent que des technologies
établies de longue date comme Xen. Cette relative nouveauté peut
entraîner des difficultés occasionnelles au niveau de la prise en
charge des pilotes et de la compatibilité de KVM avec différentes
configurations logicielles et matérielles.
Partie II : Installation et Configuration de Base
3. Mise en place de la virtualisation imbriquée et
Installation de KVM
Assurez-vous que votre processeur prend en charge la
virtualisation (Intel VT-x ou AMD-V). Cela est nécessaire pour
activer la virtualisation imbriquée dans VMware (Virtual
Machine Settings > Processors > Virtualize Intel VT-x/EPT or
AMD-V/RVI)
Lancer votre machine virtuelle et ouvrez le terminal. Sur
l’invite de commande Shell mettre à jour le système avec la
commande.
sudo apt update && sudo apt upgrade -y
Vérifier si votre CPU prend en charge la virtualisation et si la
technologie de virtualisation a été active sur votre CPU.
Si le résultat > 0 la virtualisation est supportée.
Installer l'outil de vérification de virtualisation du CPU
Vérifier si les modules de virtualisation KVM (Kernel-based
Virtual Machine) sont chargés dans le noyau Linux
Installer les paquets nécessaires pour KVM
Démarrer le service libvirt
Apres l’installation de KVM on peut lancer Virt-Manager (Virtual Machine
Manager) qui est une application graphique qui permet de créer, gérer et
surveiller des machines virtuelles (VM) sur les systèmes Linux. Elle utilise
libvirt pour interagir avec des hyperviseurs comme KVM.
Partie III : Configuration avance
4. Installation et configuration d’une machine virtuelle
Windows sur KVM
Fichiers nécessaires
o ISO de Windows (Windows 10)
o Pilotes virtio ([Link]) pour de meilleures performances
Télécharger les pilotes virtio :
Création d’un pont réseau(bridge) pour que la machine puisse
se connecter au réseau et être visible par les autres appareils.
Pour cela on modifie le fichier avec l’extension . yaml dans
/etc/netplan/ et on ajoute un pont.
Maintenant il faut configurer la VM pour utiliser le pont :
Ouvrez Virt-Manager.
Cliquez avec le bouton AFFICHER, puis sur Détails.
Allez dans l'onglet NIC ou Interface réseau.
Modifiez la source de l'interface pour utiliser le pont (br0).
Cliquez sur Appliquer et redémarrez la VM.
On peut vérifier la connexion en faisant un ping sur notre VM hôte :
Sur notre Machine physique
Création de la VM via Virt-manager :
4.1 Gestion des machines virtuelle avec virsh
Virsh est un outil en ligne de commande pour interagir avec
libvirt, qui gère les VMs sous KVM.
Pour accède à virsh, il doit être installé sur le système.
Généralement, virsh est inclus avec l’installation de libvirt. Pour
vérifier si Virsh est installé, on tape la commande :
Lister toutes les VMs
Démarrer une VM
Arrêter une VM
Il existe d’autre commandes qui permettent d’utiliser virsh se référer au
manuel de virsh.
Partie IV : TP Configuration et Utilisation de VNC et
NoVNC
Objectifs : Configurer un serveur VNC sur une machine Linux pour
permettre une prise de contrôle distante sécurisée et efficace
Prérequis
Une machine Linux qui servira de serveur VNC.
Une machine cliente (Windows, Linux, ou macOS) pour se
connecter au serveur VNC.
Accès administrateur sur la machine serveur
Partie 1 : Installation et configuration du Serveur VNC
1. Mettre à jour le serveur pour notre cas il s’agira de notre VM Ubuntu
24.10
2. Installation du serveur VNC
3. Configuration de l’environnement de Bureau
4. Initialisation du serveur VNC
5. Mettre à l’arrêt le server pour la configuration avancé avec
vncserver -kill :2
6. Editer le fichier # ! /bin/bash
Rendre le script exécutable avec chmod avant de relancer le Serveur VNC.
Partie 2 : Connexion depuis une machine cliente
1. Installation du Client VNC sur la Machine Cliente : Pour notre
exemple nous avons installé RealVNC Viewer.
2. Puis nous allons nous connnecter a notre Serveur en renseignant
l’adresse IP et le numéro de port comme suit : Avant de cliquer sur
OK
Partie 3 : Sécurisation de la connexion VNC avec un Tunnel
SSH
1. A partir de là on peut configurer un Tunnel SSH pour
sécurité le trafic.
2. On peut vérifier si le trafic est envoyé à travers le tunnel
3. On peut aussi vérifier le chiffrement
TP : Mise en place d’un Accès à un serveur VNC via noVNC pour
le contrôle a distance d’un navigateur Web
4. Installation de noVNC depuis un répertoire git
5. Installation de Websockify
sudo apt install python3-pip -y
sudo pip3 install websockify
6. Lancer noVNC et Configurer le Service Web