Table of Contents

Présentation des hyperviseurs Xen et KVM

Xen

Xen est un hyperviseur distribué sous licence GPLv2. A l’origine développé à l’Université de Cambrige, la première version publique est disponible en 2003.

Architecture de Xen

Dom0 DomU DomU DomU Noyau Noyau Noyau Noyau Driver Driver PV Driver PV Driver HVM Hyperviseur XEN MATERIEL cBLU

Techniquement Xen est un hyperviseur « bare metal », aussi appelé hyperviseur de « type 1 ». Le code de Xen est exécuté juste au-dessus du matériel, avec un niveau de privilèges d’accès aux ressources système (CPU, IO, RAM) maximal. Xen implémente certaines fonctions qu’on retrouve dans tous les OS : un ordonnanceur, un gestionnaire d’interruptions, quelques drivers etc. La philosophie principale est d’avoir un minimum de code pour réduire le nombre de bugs/failles de sécurité et de limiter le code partagé entre les différentes machines virtuelles pour augmenter leur isolation réciproque.

Les performances des opérations d’E/S des VM paravirtualisées sont significativement meilleures que celles des VM HVM. Les machines virtuelles Windows, dont le noyau ne peut être modifié, sont nécessairement HVM. Cependant, pour améliorer les performances de ces VM, des drivers additionnels peuvent être installés après le système d’exploitation « de base », ces drivers étant spécialement optimisés pour être exécutés dans un contexte virtualisé. On parle alors de « PV on HVM » et les performances, comparées à la paravirtualisation, sont similaires.

Distributions Linux qui ont un noyau Xen Dom0

Distributions Versions
Alpine Linux 2.4.x (2012-05-02) et plus récent
CentOS and autres clones de RHEL 5.x
CentOS 6.4+ 6.4 et plus récent, utilise Xen4CentOS 1)
Debian 4.0 (Etch), 5.0 (Lenny), 6.0 (Squeeze), 7 (Wheezy) et plus récent
Fedora Support complet à partir de Fedora 16
Mageia Toutes les versions
OpenEmbedded Toutes les versions depuis la 1.3, via la couche de méta-virtualisation pour ARM et x86
OpenSUSE Toutes les versions depuis 11
Oracle VM for x86 (OVS) Toutes les versions
Redhat Enterprise Linux (RHEL) 5.x uniquement
SUSE Linux Enterprise (SLE) Toutes les versions depuis 11
Ubuntu Toutes les versions depuis 11.10
XenServer Toutes les versions, mais open source à partir de XenServer 6.2. Auparavant, XCP était disponible en tant que sous-ensemble open source de XenServer.
XCP-ng Toutes les versions depuis son existence (remplaçant XCP)

KVM

KVM pour Kernel Virtual Machine est une autre technologie de virtualisation Open Source et est distribuée sous licence GPLv2 ou LGPL. A l’origine fork de l’émulateur QEMU, les deux projets sont régulièrement synchronisés et la partie spécifique à KVM se concentre sur l’accélération matérielle des VM (profitant des jeux d’instructions des CPU) et sur l’intégration dans le noyau Linux. Le module noyau KVM est disponible nativement dans le noyau Linux depuis février 2007.

Architecture de KVM

Outils d'administration des VMs Applications Natives Linux Noyau Linux Module KVM VMs VMs MATERIEL

L’architecture de KVM est très différente de celle de Xen. KVM est disponible sous forme de module Linux, intégré au noyau Linux. Le processus de démarrage du serveur hôte n’est pas modifié par la présence de KVM et une machine virtuelle se résume à un processus Linux comme un autre. On peut comparer KVM à Virtualbox ou VMWare Workstation (hyperviseur de « type 2 »), à ceci près que, bien que l’administration de l’hyperviseur se fait depuis « l’espace utilisateur » (user-land), la machine virtuelle elle-même tourne en espace noyau (kernel-land).

KVM ne supporte pas la paravirtualisation donc nécessite une CPU avec le support de la virtualisation matérielle. Pour obtenir des performances d’E/S satisfaisantes pour les VM HVM, KVM profite de l’intégration native des pilotes VirtIO (Virtual IO) dans le noyau Linux depuis la version 2.6.25 (avril 2008). Ces pilotes sont optimisés pour un contexte de virtualisation (PV on HVM). On profite ainsi de la facilité de la virtualisation complète (inutile de modifier le système invité) avec les performances de la paravirtualisation. Évidemment comme les drivers VirtIO ne sont pas intégrés d’office dans Microsoft Windows, ainsi comme c’est le cas pour Xen, il faudra les mettre en place a posteriori d’une installation d’une VM Windows.

Bien qu’il existe des implémentations de KVM pour *BSD, KVM est d’abord développé pour Linux. Toutes les distributions majeures de GNU/Linux supportent KVM.

1)
Xen4CentOS est en fait un concept assez simple: le noyau embarqué dans la distribution est remplacé par un noyau standard de kernel.org et inclus quelques bibliothèques nécessaires pour faciliter l'hyperviseur.