Page

Introduction à KVM et son histoire

Cours: Introduction à KVM et son Histoire

KVM (Kernel-based Virtual Machine) est une technologie de virtualisation pour les systèmes Linux qui permet à une machine d'agir comme de multiples machines virtuelles indépendantes. Voici les points clés de son développement et de son intégration dans l'écosystème Linux:

  1. Définition: KVM est une solution de virtualisation complète qui est assistée par le matériel, c'est-à-dire qu'elle utilise des extensions de processeur pour améliorer les performances de la virtualisation.

  2. Origines: Le développement de KVM a été initié en 2006 par Avi Kivity au sein de la startup Qumranet.

  3. Intégration Linux: En février 2007, KVM a été intégré dans le noyau Linux version 2.6, permettant ainsi à tout système Linux équipé de ce noyau de profiter de cette technologie.

  4. Acquisition par Red Hat: En 2008, Red Hat, une entreprise bien connue dans le monde du logiciel libre et open source, a acquis Qumranet et par conséquent les droits sur KVM.

  5. Choix par OpenVirtualization Alliance: KVM a été sélectionné par l'OpenVirtualization Alliance comme hyperviseur de choix, ce qui indique sa reconnaissance dans la communauté de la virtualisation.

  6. Linux Foundation: L'OpenVirtualization Alliance est une partie du projet de la Linux Foundation, une organisation dédiée à la promotion et au développement de solutions open source.


Fonctionnalités Clés de KVM

Dans ce module, nous allons explorer les fonctionnalités avancées offertes par KVM (Kernel-based Virtual Machine), qui enrichissent l'expérience de la virtualisation.

  1. Virtualisation matérielle: KVM tire parti des extensions matérielles de virtualisation fournies par les processeurs modernes pour exécuter des machines virtuelles avec des performances proches du matériel natif.

  2. Paravirtualisation: En plus de la virtualisation complète, KVM supporte la paravirtualisation, où l'OS invité est conscient de la virtualisation et est optimisé pour améliorer les performances.

  3. Systèmes d'exploitation invités: KVM est capable d'exécuter une multitude de systèmes d'exploitation comme invités, y compris mais sans se limiter à Linux, FreeBSD, MS Windows, et Mac OSX. Il peut également supporter des hyperviseurs imbriqués (nested hypervisors), permettant ainsi la virtualisation dans la virtualisation.

  4. Live Migration: Cette fonctionnalité permet de déplacer une machine virtuelle en cours d'exécution d'un hôte physique à un autre sans interruption de service, ce qui est crucial pour la maintenance et l'équilibrage de charge.

  5. Interface avec Libvirt: KVM s'intègre avec l'API Libvirt, qui offre une façon standardisée de gérer les machines virtuelles et d'autres aspects de la virtualisation, rendant l'administration plus facile et plus cohérente.


Architecture de KVM

  1. Module noyau KVM: Au cœur de l'architecture se trouve le module noyau KVM, qui est essentiel pour la virtualisation dans les systèmes Linux. Ce module agit comme le gestionnaire de la virtualisation, permettant la création et la gestion des machines virtuelles.

  2. Périphérique /dev/kvm: KVM introduit un périphérique spécial, /dev/kvm, qui est utilisé pour interagir avec le module noyau. Ce périphérique est crucial pour le contrôle des machines virtuelles à un bas niveau.

  3. QEMU-KVM: QEMU, couplé avec KVM (qemu-kvm), est responsable de l'émulation des périphériques matériels tels que les interfaces USB, réseaux et les disques. Cela permet aux systèmes invités de fonctionner comme s'ils étaient sur du matériel physique.

  4. Outils KVM: Un ensemble d'outils KVM interagit avec le périphérique /dev/kvm pour créer et gérer les machines virtuelles. Ces outils facilitent les opérations de virtualisation et la maintenance des invités.

  5. Interaction avec le matériel: Au niveau le plus bas, KVM et les outils associés interagissent avec le matériel physique, comme les disques, la mémoire et les périphériques réseau, pour allouer les ressources nécessaires aux machines virtuelles.


Outils KVM Principaux:

  1. Interaction avec /dev/kvm:

    • Les utilisateurs ne communiquent pas directement avec le périphérique KVM /dev/kvm ni avec les commandes ioctl.
    • Les outils de gestion sont conçus pour simplifier ce processus.
  2. QEMU:

    • qemu-system-{x86_64,i386,arm,...}: Ce sont des variantes de QEMU adaptées à différentes architectures, permettant l'émulation des systèmes invités correspondants.
    • qemu-img: Un outil pour créer et gérer les images disque des machines virtuelles.
  3. Libvirt:

    • virsh: Une ligne de commande pour gérer les machines virtuelles via Libvirt.
    • virt-install: Un outil pour installer de nouvelles machines virtuelles.
    • virt-clone: Utilisé pour cloner des machines virtuelles existantes.
    • virt-manager: Une interface graphique (GUI) pour gérer les machines virtuelles de manière plus intuitive.
  4. Solutions de gestion de virtualisation:

    • oVirt: Une plateforme de gestion de virtualisation open-source pour les data centers.
    • Proxmox: Une solution de virtualisation qui combine les fonctionnalités de KVM et les conteneurs.
    • OpenStack: Une plateforme cloud qui utilise souvent KVM comme hyperviseur pour la gestion de machines virtuelles dans les infrastructures cloud.

Last modified: Monday, 4 December 2023, 4:33 PM