Comprendre KVM, QEMU, Libvirt, Virtual Machine Manager
Table des matières
Dans cet article, on va parler de la virtualisation et des outils qui la rendent possible sous linux.
On va définir ce que sont KVM, QEMU, Libvirt et Virtual Machine Manager, ces différents composant qui fonctionnent ensemble, en les définissant.
KVM est un module du noyau Linux qui permet à Linux de fonctionner comme un hyperviseur.
Il "transforme" le noyau Linux en un hyperviseur de type 1, ce qui signifie qu'il peut exécuter plusieurs machines virtuelles (VM) sur un seul hôte physique.
Chaque VM fonctionne comme un système d'exploitation indépendant, avec son propre matériel virtuel. KVM utilise les extensions de virtualisation des processeurs modernes (Intel VT-x ou AMD-V) pour offrir des performances proches de celles du matériel.
QEMU quant à lui est un émulateur et un virtualiseur qui peut fonctionner avec KVM pour fournir des fonctionnalités de virtualisation.
Il permet d'exécuter des systèmes d'exploitation pour différentes architectures matérielles. QEMU peut émuler des périphériques matériels et gérer les entrées/sorties.
Lorsqu'il est utilisé avec KVM, QEMU gère les aspects de virtualisation, tandis que KVM s'occupe de l'exécution des VM.
Libvirt est à lui seul 3 composants : une API, un ensemble d'outils et un démon qui facilitent la gestion des plateformes de virtualisation.
Il va fournir une interface unifiée pour interagir avec différents hyperviseurs.
Dans notre cas, il s'interface avec KVM/QEMU mais il sait gérer d'autres hyperviseurs tels que Xen par exemple.
Libvirt permet de créer, détruire, démarrer, arrêter et gérer des machines virtuelles, ainsi que de configurer des réseaux virtuels et des stockages. Il simplifie la gestion des environnements virtuels en offrant des abstractions et des outils de gestion.
Virtual Machine Manager est une "simple" interface graphique pour gérer les machines virtuelles via Libvirt.
Il va nous permettre facilement de créer et de gérer des VM de manière intuitive, sans avoir à utiliser la ligne de commande.
Avec virt-manager, on pourra visualiser l'état des machines virtuelles, configurer leurs ressources (CPU, mémoire, stockage), et accéder à la console de chaque VM.
Il existe d'autres outils graphiques ou web, avec plus ou moins de fonctionalités qui peuvent s'interfacer avec libvirt tels que Cockpit (avec son module cockpit-machines) ou GNOME Boxes.
KVM = Hyperviseur qui permet la virtualisation sur Linux.
QEMU = Émulateur et virtualiseur qui fonctionne avec KVM pour gérer les machines virtuelles.
Libvirt = API et outils pour gérer les environnements de virtualisation de manière unifiée.
Virtual Machine Manager = Interface graphique pour gérer les machines virtuelles via Libvirt.
Avec QEMU, il y a 2 modes de connexion possibles disponibles dans Virtual Machine Manager : qemu:///system et qemu:///session.
L'un tourne en mode utilisateur, lautre nécessite des droits root.
Ils auront des fonctionalités et limitations différentes.
Voici un tableau de quelques éléments qui ont retenu mon attention :
Je complèterai le tableau si d'autres éléments me viennent au fur et à mesure de l'utilisation ou de vos retours.
Introduction
Dans cet article, on va parler de la virtualisation et des outils qui la rendent possible sous linux.
On va définir ce que sont KVM, QEMU, Libvirt et Virtual Machine Manager, ces différents composant qui fonctionnent ensemble, en les définissant.
Définitions
KVM (Kernel-based Virtual Machine)
KVM est un module du noyau Linux qui permet à Linux de fonctionner comme un hyperviseur.
Il "transforme" le noyau Linux en un hyperviseur de type 1, ce qui signifie qu'il peut exécuter plusieurs machines virtuelles (VM) sur un seul hôte physique.
Chaque VM fonctionne comme un système d'exploitation indépendant, avec son propre matériel virtuel. KVM utilise les extensions de virtualisation des processeurs modernes (Intel VT-x ou AMD-V) pour offrir des performances proches de celles du matériel.
QEMU (Quick Emulator)
QEMU quant à lui est un émulateur et un virtualiseur qui peut fonctionner avec KVM pour fournir des fonctionnalités de virtualisation.
Il permet d'exécuter des systèmes d'exploitation pour différentes architectures matérielles. QEMU peut émuler des périphériques matériels et gérer les entrées/sorties.
Lorsqu'il est utilisé avec KVM, QEMU gère les aspects de virtualisation, tandis que KVM s'occupe de l'exécution des VM.
Libvirt
Libvirt est à lui seul 3 composants : une API, un ensemble d'outils et un démon qui facilitent la gestion des plateformes de virtualisation.
Il va fournir une interface unifiée pour interagir avec différents hyperviseurs.
Dans notre cas, il s'interface avec KVM/QEMU mais il sait gérer d'autres hyperviseurs tels que Xen par exemple.
Libvirt permet de créer, détruire, démarrer, arrêter et gérer des machines virtuelles, ainsi que de configurer des réseaux virtuels et des stockages. Il simplifie la gestion des environnements virtuels en offrant des abstractions et des outils de gestion.
Virtual Machine Manager (virt-manager)
Virtual Machine Manager est une "simple" interface graphique pour gérer les machines virtuelles via Libvirt.
Il va nous permettre facilement de créer et de gérer des VM de manière intuitive, sans avoir à utiliser la ligne de commande.
Avec virt-manager, on pourra visualiser l'état des machines virtuelles, configurer leurs ressources (CPU, mémoire, stockage), et accéder à la console de chaque VM.
Il existe d'autres outils graphiques ou web, avec plus ou moins de fonctionalités qui peuvent s'interfacer avec libvirt tels que Cockpit (avec son module cockpit-machines) ou GNOME Boxes.
En résumé
KVM = Hyperviseur qui permet la virtualisation sur Linux.
QEMU = Émulateur et virtualiseur qui fonctionne avec KVM pour gérer les machines virtuelles.
Libvirt = API et outils pour gérer les environnements de virtualisation de manière unifiée.
Virtual Machine Manager = Interface graphique pour gérer les machines virtuelles via Libvirt.
QEMU system vs user
Avec QEMU, il y a 2 modes de connexion possibles disponibles dans Virtual Machine Manager : qemu:///system et qemu:///session.
L'un tourne en mode utilisateur, lautre nécessite des droits root.
Ils auront des fonctionalités et limitations différentes.
Voici un tableau de quelques éléments qui ont retenu mon attention :
Caractéristique | qemu:///system | qemu:///session |
---|---|---|
Contexte d'exécution | Exécution en mode système | Exécution en mode session utilisateur |
Permissions | Nécessite des privilèges root | Exécuté avec les permissions de l'utilisateur courant |
Stockage des fichiers | Les fichiers de configuration des VM sont généralement stockés dans /etc/libvirt/qemu/ | Les fichiers de configuration des VM sont stockés dans le répertoire personnel de l'utilisateur, souvent sous ~/.config/libvirt/qemu/ |
Accès aux ressources | Accès à toutes les ressources système, y compris les périphériques matériels | Accès limité aux ressources de l'utilisateur, pas d'accès direct aux périphériques matériels |
Gestion réseau | Mode NAT, pont sur réseau dédié interne (bridge) et pont sur réseau local (macvtap) | Mode NAT, pont sur réseau dédié interne (bridge) |
Gestion des VM | Peut gérer des VM pour tous les utilisateurs du système | Gère uniquement les VM créées par l'utilisateur courant |
Démarrage des VM | Les VM peuvent être démarrées au niveau du système, même sans session utilisateur active | Les VM ne peuvent être démarrées que lorsque l'utilisateur est connecté |
Je complèterai le tableau si d'autres éléments me viennent au fur et à mesure de l'utilisation ou de vos retours.