Ces deux hyperviseurs ont étés choisis pour une comparaison succincte dans le cadre de cet article, car ils ont au moins un point commun : ils sont open-source et tournent sous Linux. A part ce point important, les différences entre les deux logiciels ne sautent pas forcément aux yeux pour ceux qui s’intéressent à la virtualisation depuis peu de temps.

Virtualbox, l’hyperviseur de Innotek racheté par Sun

Historique de Innotek à Oracle

VirtualBox est un hyperviseur qui existe depuis 2007, il est originellement développé par Innotek qui fut racheté en 2008 par Sun Microsystems, société qui finira elle-même rachetée par Oracle. Il est donc maintenu depuis maintenant 9 ans, ce qui lui confère un statut d’alternative crédible à VMWare pour la virtualisation sur postes de travail à des fins d’utilisation professionnelle ou de test.

Les particularités de Virtualbox

Une utilisation orientée bureau

Cet hyperviseur est utilisable en mode texte pour manipuler les images disque et les fichiers de configuration, mais c’est avec son interface graphique qu’il est le plus connu et le plus utilisé. En effet, c’est un logiciel qu’on utilise principalement sur des stations de travail  pour une utilisation à la souris, ce qui le distingue de KVM dans son mode d’utilisation.

Le coté ergonomique et pratique de VirtualBox ne s’arrête pas là, des efforts particuliers ont été fournis pour permettre une utilisation « de bureau » sur les machines virtuelles. Ainsi il vous sera pratique d’ajouter un lecteur CD matériel ou virtuel, de connecter des périphériques USB directement sur la machine virtuelle, voire même d’allouer un peu de mémoire vidéo dans le but de faire tourner des applications graphiques avec Direct3D (support expérimental). Plus encore, la gestion du presse-papier partagé est presque parfaite, ce qui vous permet d’effectuer des copier-coller entre le système invité et le système hôte.

Les performances graphiques de l’hyperviseur sont plutôt bonnes. N’espérez pas non plus faire tourner vos jeux gourmands sans aucun ralentissement, mais VirtualBox est parfaitement capable de lire des vidéos et jouer de la musique sans saccades. C’est déjà pas mal pour une application bureautique.

Multiplateforme Linux, Windows et MacOS

Un avantage de taille, VirtualBox est multiplateforme ce qui signifie qu’il tourne aussi bien sous Linux, Windows et MacOS. Bien que je ne l’ai jamais testé, cela signifie que vous pouvez éventuellement déménager une machine virtuelle d’un OS à l’autre sans rencontrer de problème de migration.

A lui tout seul, VirtualBox se paye le luxe d’être une alternative crédible à Hyper-V sous Windows, Parallels sous MacOS ou VMWare sous Linux, en tout cas en ce qui concerne les versions « bureau » de ces produits.

 

Les cas d’utilisation les plus répandus

A mon avis, VirtualBox c’est l’hyperviseur de prédilection à installer sur votre station de travail si vous avez besoin ponctuellement de tester des systèmes d’exploitation, ou alors si vous avez besoin ponctuellement d’un OS différent de votre OS de base.

Par exemple, une utilisation intéressante consiste à mettre en place un environnement logiciel facilement duplicable et sauvegardé pour des « retours dans le temps ». Les développeurs ont couramment besoin de cela pour installer leur logiciel sur différents systèmes d’exploitation pour tester le bon fonctionnement.

Mais à mon avis le cas d’usage par excellence, c’est l’installation d’une machine virtuelle en tant que « bureau complémentaire » pour y installer tout ce qui n’est pas compatible avec l’OS principal. Utilisateurs de Linux, vous avez parfois besoin de Windows pour votre logiciel de retouche d’images ou votre traitement de texte favori ? Vous avez besoin de connecter votre iPhone sur iTunes avec Windows depuis votre machine Linux ? VirtualBox est fait pour vous.

 

KVM, la formule 1 de la virtualisation sous Linux

Historique

KVM signifie « Kernel-based Virtual Machine », il est intégré au noyau Linux depuis sa version 2.6.20, c’est à dire autour de 2007. De par son appartenance au noyau Linux, KVM est correctement maintenu dans le temps par la communauté et surtout par RedHat, société éditrice de la distribution Linux éponyme.

Les particularités de cet hyperviseur

Hyperviseur de type 1

KVM consiste en un module du noyau qui transforment un noyau Linux de base en un hyperviseur de type 1. La notion intéressante à comprendre est que KVM fait partir du noyau Linux, ce n’est pas un logiciel user-space qui tourne par-dessus. Il en résulte des performances excellentes notamment en calcul processeur et en IO réseau et disque.

La bibliothèque d’interaction libvirt

Libvirt est une bibliothèque qui permet de faire le lien entre le noyau de la machine hôte et de son hyperviseur. Pas étonnant que les interactions soient nombreuses puisque le noyau gère les ressources matérielles qui doivent être exploitées par les machines virtuelles : CPU, RAM mais aussi disques durs, réseau , USB voire bus PCIe entiers.

Bien que KVM soit le plus souvent utilisé avec libvirt, cette librairie est aussi capable de contrôler différents hyperviseurs comme par exemple VMWare ESX, VirtualBox ou Hyper-V.

Les deux interfaces utilisateur les plus connues à libvirt sont virsh  en mode texte et virt-manager  en graphique.

La paravirtualisation virtio

KVM propose depuis ses débuts les interfaces virtio pour gérer par exemple le réseau, le disque dur ainsi que l’allocation mémoire dynamique. Le noyau Linux est compatible avec ces interfaces depuis la version 2.6.25, et il existe également des pilotes virtio pour Windows.

La particularité de virtio, c’est d’utiliser un principe similaire à la paravirtualisation pour que les machines virtuelles accèdent directement aux ressources matérielles avec le moins d’émulation possible. En ayant conscience d’être virtualisée, la machine virtuelle dotée des pilotes appropriés aura ainsi accès à des ressources extrêmement performantes.

Les performances générales de KVM peuvent par ailleurs être défavorables en cas de non-utilisation de virtio.

L’écosystème qemu

Techniquement KVM est « une instance de qemu », c’est à dire que KVM reprend des caractéristiques du projet qemu, auquel il rajoute des améliorations comme par exemple la prise en charge des modules kvm_amd  et kvm_intel  pour supporter les accélérations AMD-V et Intel VT des processeurs.

L’héritage de qemu se fait sentir lors de l’utilisation de divers outils, comme celui qui permet de manipuler des image disques, qemu-img .

Ses meilleurs cas d’usage

A l’origine, j’ai découvert KVM en louant une machine virtuelle chez un hébergeur d’envergure internationale qui utilise cet hyperviseur massivement. Cela m’avait rassuré sur les capacités du logiciel, mais je me rends compte maintenant que c’est plutôt l’inter-dépendance de KVM et de Linux qui est un gage de qualité indiscutable. De nombreuses entreprises utilisent KVM professionnellement, comme par exemple Apple. De notre coté nous avons emboité le pas puisque nous utilisons KVM en production pour héberger des VM pour notre propre usage, ainsi que pour nos clients.

KVM, c’est le genre d’hyperviseur qui ne s’utilise qu’en mode texte sur un serveur hébergé en centre serveur. Il existe des interfaces graphiques à KVM, notamment virt-manager, mais elles se connectent à l’hyperviseur par le réseau, si bien qu’on peut aussi bien piloter le système depuis le serveur hôte que n’importe quelle autre ordinateur distant.

Les performances graphiques de KVM ne sont pas excellentes si on utilise VNC par défaut. Il existe également le protocole de bureau distant,  Spice associé à un driver vidéo QXL développé spécifiquement pour la virtualisation et qui améliore les performances. Les applications bureautique sont fluides en 2D, et la capture de la souris est bonne grâce aux additions invité pour une utilisation type bureau distant, mais n’espérez pas faire tourner des application multimédia, même en local. A moins bien sur de configurer une carte graphique dédiée à la machine virtuelle en PCIe passthrough.

Le PCIe passthrough, voilà une bien belle possibilité offerte par KVM. A l’instar d’un périphérique USB, on peut choisir de connecter une carte graphique PCIe directement sur la machine virtuelle sans que la machine hôte n’en ait l’usage. Cette possibilité est offerte par des hyperviseurs dernier cri comme Xen, Hyper-V et VMWare. Elle n’est possible que sur les plate-formes carte mère-processeur compatibles IOMMU (extensions Intel VT-d ou AMD-Vi). Il devient possible d’avoir une machine virtuelle dédiée à la création 3D ou au jeu vidéo, voir cet article pour du passthrough avec un GPU Nvidia GTX 10xx.

Conclusion

Cet article ne fait qu’effleurer le sujet tellement il y a de choses à dire. KVM ou VirtualBox, en réalité cette question ne se pose jamais longtemps tellement les buts de ces deux projets sont différents. Une chose est sure, ce sont deux bons produits qui représentent bien la qualité des logiciels Open Source.