KVM est le prolongement du noyau Linux qui permet de faire tourner des machines virtuelles avec accélération VT-x. Il se démarque coté hyperviseur par des périphériques para-virtualisés virtio pour le disque dur ainsi que la carte réseau. Mais ce n’est pas tout, et différentes additions invités sont possibles pour améliorer l’expérience utilisateur notamment en utilisation desktop. La distribution Debian 9 sert ici de référence pour la compatibilité et les exemples de noms de paquets.

TL; DR : utilisez KVM à la place de VirtualBox, avec le bon pilote graphique graphique et le partage du presse-papier. Faites du cloud desktop de compétition avec KVM.

Les pilotes de périphériques para-virtualisés

Dans les grandes lignes, la para-virtualisation signifie que la machine virtuelle est consciente de son état (être virtualisé), et a une interaction avec l’hyperviseur permettant d’améliorer les performances.

Le périphérique disque virtio

Sous Linux, le périphérique disque dur virtio nécessite le module noyau « virtio » qui est automatiquement chargé au boot. Le périphérique bus SCSI virtio nécessite le module « virtio_scsi » qui se charge dans les mêmes conditions.

Sous Windows, l’installation doit obligatoirement se faire sur un disque système qui maximise la compatibilité (donc IDE). Il est ensuite possible de rattacher un second disque virtio dans le but d’installer les pilotes. Enfin, le disque système pourra être basculé de IDE à virtio. Cette page du projet Fedora répertorie la dernière version de l’image ISO contenant les drivers. Le lien suivant semble se mettre à jour avec la dernière version (à ce jour 0.1.141). L’assistant Windows d’installation de pilotes fonctionne en mode automatique en lui indiquant de chercher à la racine du cdrom. C’est probablement dans le sous-dossier viostor qu’il trouvera son bonheur.

La manipulation avec les pilotes est plus délicate dans le cas d’une migration P2V comme décrit ici.

Le périphérique réseau virtio

Sous Linux, le module virtio_net se charge.

Sous Windows, même manipulation avec l’ISO fourni par Fedora. C’est le dossier NetKVM qui sert alors.

Le périphérique graphique QXL

Sous Linux, le module « qxl » permet de gérer l’affichage avec le périphérique virtualisé QXL. En mode graphique il faut également installer le paquet xserver-xorg-video-qxl.

Sous Windows, c’est encore la même démarche avec l’ISO. On reconnait le dossier qxl pour Windows 7 et antérieurs, ainsi que le dossier qxldod pour Windows 8 et ultérieurs. Il est à mon avis préférable s’installer le SPICE agent (ci-dessous) plutôt que le driver QXL seul.

Les additions invité

L’addition qemu-guest-agent

L’addition qemu-guest-agent permet de communiquer avec l’hyperviseur par le biais du périphérique « Canal qemu-ga ». Ce n’est rien d’autre qu’un port série virtuel qui permet en théorie de faciliter les tâches d’administration en transmettant des ordres aux VM depuis l’hyperviseur (notamment le suspend).

Sous Linux, le paquet qemu-guest-agent permet de gérer le « Canal qemu-ga ».

Sous Windows, il faut installer le fichier qemu-ga-x64.msi présent sur le cdrom, et qui écrit dans C:\Program Files\qemu-ga. On retrouve également l’installateur dans le dossier d’installation du SPICE agent (ci-dessous).

De mon point de vue, cette étape est facultative, je ne me sert pas de ce canal de communication mais seulement des signaux ACPI standards qui permettent l’extinction, le reboot, la mise en veille, …

L’addition SPICE agent

Cette addition invité est bien plus intéressante pour une utilisation poste de travail graphique. Elle permet le partage du presse-papier, le changement de résolution au redimensionnement de la fenêtre du client virt-viewer, ainsi que le passthrough de périphériques USB à distance.

Sous Linux, il faut installer le paquet spice-vdagent.

Sous Windows, on trouve l’équivalent sur la page du projet SPICE avec un installateur qui installe une multitude de fichiers dans C:\Program Files (x86)\SPICE Guest Tools. On y retrouve l’ensemble des pilotes sus-cités, ainsi que les exécutables vdservice.exe et vdagent.exe.

Le client SPICE

Après avoir installé les additions SPICE agent, encore faut-il utiliser le bon client SPICE. Je n’en connais qu’un de recommandable et c’est virt-viewer pour Linux (paquet du même nom) ou Windows (installateur ici).

En ligne de commande, la syntaxe virt-viewer est la suivante. Cela est utile pour créer des icônes de launchers.

La modification de résolution à la volée lors du redimensionnement de la fenêtre, c’est assez bluffant pour l’écosystème KVM qui ne nous avais pas habitués à la facilité.

Conclusion

En connaissant les noms des drivers et des paquets dont vous avez besoin, vous pourrez bénéficier des meilleures performances possibles sur votre machine virtuelle grâce aux périphériques optimisés par la para-virtualisation. Enfin, l’installateur SPICE agent permet une bonne intégration avec le bureau, ce qui rend KVM utilisable pour un poste de travail graphique au même titre que VirtualBox ou VMWare. Il n’y a plus qu’à tester tous ces pilotes en local, ou éventuellement trouver un bon fournisseur de VM pour faire du cloud desktop.