Virtualisation

Qu'est-ce que KVM ?

Également connu sous le nom de: Kernel-based Virtual Machine
Définition

KVM is full hardware virtualisation built into the Linux kernel, giving each guest its own kernel and hardware-enforced isolation from other tenants. Because a KVM guest runs its own kernel, it can load kernel modules, run non-Linux operating systems, use real swap and support nested virtualisation.

Pourquoi KVM est important

Comme un invité KVM exécute son propre noyau, il peut charger des modules noyau, exécuter des systèmes d'exploitation non-Linux, utiliser un swap réel et prendre en charge la virtualisation imbriquée. La mémoire allouée à un invité KVM est réellement réservée, ce qui constitue la différence pratique avec la virtualisation par conteneurs.

KVM en pratique

Lorsque vous exécutez un serveur KVM, la première chose que vous vérifiez est /proc/cpuinfo dans l'invité—s'il ne correspond pas aux indicateurs de l'hôte, vous voyez probablement des raccourcis paravirtualisés, pas du KVM complet. Vous définissez l'allocation mémoire avec de véritables réservations : la surallocation fera déclencher le tueur OOM de l'invité pendant que l'hôte semble inactif. Si vous configurez mal la virtualisation imbriquée, vous perdez la pagination assistée par matériel et les invités tournent à une fraction de la vitesse. Se tromper coûte des performances que vous ne pouvez pas récupérer sans redémarrer.

Ce qu'on comprend mal à propos de KVM

Les gens supposent que KVM est identique à OpenVZ ou LXC parce que les deux utilisent le noyau Linux. La correction est que KVM donne à chaque invité son propre noyau, tandis que les conteneurs partagent le noyau de l'hôte. Vous ne pouvez charger des modules noyau et exécuter des OS non-Linux que sur KVM. L'isolation par espaces de noms partagés n'est pas appliquée par le matériel.

KVM — questions fréquentes

Que signifie KVM pour les performances ?

La virtualisation matérielle de KVM signifie que chaque invité a son propre noyau, donc les performances sont quasi natives pour le CPU et la mémoire. La mémoire est véritablement réservée, non partagée. Vous pouvez vous attendre à un débit prévisible et isolé par rapport aux conteneurs.

Puis-je exécuter Windows sur KVM ?

Oui, un invité KVM exécute son propre noyau, il peut donc exécuter des systèmes d'exploitation non Linux comme Windows. Vous devrez télécharger une ISO et attacher une console VNC. Une licence Windows Server est disponible en option supplémentaire dans certaines régions.

Plus de virtualisation

OpenVZ
OpenVZ est une virtualisation par conteneurs dans laquelle chaque instance partage le noyau hôte, de sorte que les invités ne peuvent pas charger de modules noyau ni exécuter un système d'exploitation différent.
LXC
LXC est la conteneurisation native de Linux qui isole les processus avec des espaces de noms et des cgroups tout en partageant le noyau hôte.
Hyperviseur
Un hyperviseur est la couche logicielle qui crée et exécute des machines virtuelles, allouant les CPU physiques, la mémoire et les entrées-sorties entre elles.
Virtualisation imbriquée
La virtualisation imbriquée permet à une machine virtuelle d'exécuter elle-même des machines virtuelles, en exposant les extensions de virtualisation du processeur à l'invité.
vCPU
Un vCPU est un processeur virtuel présenté à un invité, adossé au temps d'ordonnancement sur un cœur ou un thread physique.
cloud-init
cloud-init est le mécanisme standard pour configurer une machine virtuelle au premier démarrage, en utilisant des métadonnées fournies par la plateforme.