Xen ou comment bidouiller sans risque
C'est à la mode, tout le monde en parle, les fondeurs l'intègrent, les éditeurs d'OS s'y mettent : la virtualisation. Pourquoi, comment, quels avantages, quels inconvénients ? Suivez mon modeste guide...
Un peu de vocabulaire pour commencer
- Système d'exploitation hôte
- Système initial qui est installé directement sur le matériel et qui gère les systèmes invités.
- Système d'exploitation invité
- Système déconnecté du matériel physique. Chaque intéraction avec le matériel physique est contrôlé et approuvé par le système hôte.
Différentes méthodes
Il faut tout d'abord distinguer plusieurs méthodes de virtualisation. J'en ai, pour ma part, testé deux : les machines virtuelles et les hyperviseurs.
Les machines virtuelles sont des logiciels du type de QEMU (libre) ou VMware (propriétaire). Ces logiciels émulent du matériel. Le système d'exploitation invité croit dialoguer directement avec le matériel. En fait, la machine virtuelle intercepte les utilisations du matériel pour faire la traduction vers le vrai matériel. J'ai utilisé QEMU et VMWare player, ces deux solutions offrent des performances tout à fait honorable (pour exemple, un Windows XP Pro dans QEMU démarre en moins de 40 secondes).
Les hyperviseurs comme Xen sont, quant à eux, une solution tout à fait différente. Un hyperviseur est un noyau conçu pour faire tourner plusieurs autres noyaux. Le système d'exploitation invité sait qu'il est virtualisé. Son noyau a été modifié pour dialoguer avec l'hyperviseur. Cette solution offre de très bonne performance, meilleure que les machines virtuelles. Néanmoins, l'obligation d'un noyau dédié est très contraignante. Il est par exemple impossible d'installer un système d'exploitation propriétaire comme Windows puisque Microsoft ne fourni pas de noyau pour Xen. J'ai testé Xen avec un noyau Linux (2.6.18) comme noyau hôte et OpenSolaris (build 44) comme noyau invité. OpenSolaris démarre en 25 secondes là ou il mettait tout de même 2 minutes avec QEMU (j'ai encore du mal à m'expliquer cette si grande différence).
Pourquoi virtualiser ?
En tant que (futur) administrateur systèmes et réseaux, il est pratique de pouvoir déployer tout un réseau afin de tester différentes configuration (un serveur NIS, NFS, ...) Seulement, je n'ai pas vraiment la place (ni les moyens, ni l'envie) nécessaire pour installer 5 ou 6 ordinateurs dans mon chez moi. Pourtant, il faut bien...
La solution passe donc par la virtualisation de tous ces postes. Un poste virtuel comme serveur, des postes virtuels comme clients et mon OS à moi intact, ce qui me permet d'avoir un système fiable pour administrer ces machines virtuelles et continuer de surfer sur le web (toujours pratique lorsqu'on a un problème). J'ai par exemple déployé de cette façon un serveur NIS/NFS avec deux clients sans toucher à la configuration de mon système.
Petit comparatif rapide
Le grand intérêt des machines virtuelles est d'être des solutions très peu intrusives et sans danger pour le système. En effet, installer VMWare ou QEMU ne modife en rien le système hôte, si ce n'est par l'ajout d'un module noyau (quoique VMWare est assez imposant). Néanmoins, les performances sont très nettement en retrait sur certains aspects par rapport à un hyperviseur.
Le principal avantage de l'hyperviseur réside dans les très bonnes performances qu'il donne. De plus, si vous avez la chance de posséder un des derniers processeurs d'Intel (avec le flag VT), vous n'avez même plus à vous soucier d'avoir un noyau particulier (on quitte là le domaine des hyperviseurs pour passer vers le domaines de la virtualisation matériel). Néanmoins, installer un noyau qui a pour charge de lancer les autres noyaux n'est pas une opération anodine, il faut un minimum de maîtrise de son système. C'est pour cela que pour débuter, je conseille une machine virtuelle.
Du point de vue des performances, j'ai réalisé un petit test : j'ai installé Solaris 10 en tant que système invité et j'y ai configuré un serveur NFS. Les données de l'export NFS sont stockées sur 3 disques dur en RAID-Z via ZFS (voir le billet précédent). Les mesures sont assez approximatives, je les ai faites avec un simple chronomètre. Les résultats sont tout de même assez significatif :
| Solution | Temps de démarrage | Débit en écriture | Débit en lecture |
|---|---|---|---|
| Solaris 10 sur QEMU | 110 s. | 2 Mo/s | 5 Mo/s |
| Solaris 10 sur Xen | 25 s. | 18 Mo/s | 18 Mo/s |
Conclusion
Je vous encourage vivement à tester ces solutions si vous devez régulièrement tester des configurations ou si vous souhaitez simplement essayer le dernier système d'exploitation à la mode. J'espère que vous prendrez goût à la virtualisation, plutôt que de redémarrer 10 fois votre ordinateurs.
Commentaires
Il y a un petit guide pour installer Windows sur Xen ici :
http://www.xensource.com/files/xen_install_windows.pdf
Sinon niquel
Pour répondre au commentaire de Sébastien au-dessus, je n'ai pas la connaissance d'une version de Xen développée pour tourner au dessus de Windows.. donc XP en système principal je ne pense pas... mais je peux me tromper
Sinon, même si je partage ton avis sur Windows, on respect les choix des gens oliv. Je sais que mon cher cousin n'est pas un fan de Linux... Personne n'est parfait
Mais en attendant, j'ai pas trouvé mieux dans le sens simplicité/souplesse/évolution. J'attends beaucoup de FreeBSD. Espérons que je ne serais pas déçu...

Est-il possible d'utiliser, sous Xen, par exemple XP en système principal, et MacOS X en second système pour travailler tantos sous l'un, tantot sous l'autre, comme on pourrait travailler sur un Mac tantot sous MacOS X, tantot sous MacOS 9 grace à Classic ?