Les solutions libres de Virtualisation
Rédigé par Xavier - -
Ce petit article va lister les solutions de virtualisation libres que vous pourrez trouver sur Linux ou FreeBSD/NetBSD. Je les ai classés par technologie, vous pourrez trouver un résumé sur Wikipedia si besoin.
Isolation
L'idée est la suivante : mon serveur tourne sur Linux, et je veux des machines virtuelles sous Linux également. C'est donc un peu dommage d'avoir des composants en double voire en triple ainsi qu'un empilement de couches identiques n'est-ce pas ?
L'isolation consiste à créer des "cloisons" dans lesquelles vous exécutez les OS invités. Ils utilisent le système de fichiers de l'hôte ainsi que son kernel mais avec des droits limités (accès et ressources). La perte de performances est nulle, puisqu'il n'y a pas d'émulation, en revanche vous devez utiliser le même type d'OS que l'hôte. Si votre serveur tourne sur Linux, vos OS isolés devront être également de type Linux.

- OpenVZ : Solution fiable et robuste de longue date. Vous pouvez la mettre en place très facilement avec Promox VE.
- Linux V-Server : Je ne fais que la citer car je ne l'ai jamais testée.
- LXC : Assez récent et visiblement de plus en plus utilisé. Il utilise plusieurs features du kernel Linux dont les cgroups.
- chroot : Se limiste à isoler une arborescence du système de fichiers, ne permet pas de cloisonner à proprement parler un OS.
- FreeBSD Jail : Outil très puissant qui peut se limiter à faire le boulot d'un chroot ou alors cloisonner un système invité FreeBSD tout entier.
- Solaris Containers : Jamais testé mais similaire aux Jails.
Virtualisation complète
La machine virtuelle émule le matériel et le bios pour le système invité. Celui-ci dispose donc de son propre environnement et fonctionne en autonomie. Il n'a pas conscience d'être virtualisé.
Le gros avantage est que tous les OS peuvent tourner en machine virtuelle du moment qu'ils disposent des bons pilotes (mais on émule des périphériques anciens et courants justement pour ça). Il y a aussi une "abstraction" du matériel physique. Quelque soit le serveur sur lequel vous faites tourner votre machine virtuelle, cette dernière verra toujours le même matériel (qui est émulé). Donc pas besoin de réinstaller de drivers si on change de support. L'inconvénient est la perte importante de performances du fait de la nécessité d'émuler le matériel. La consommation de mémoire vive est aussi importante (il n'est pas rare de trouver des serveurs avec 24GB de ram, voire plus).

- QEMU : Une machine virtuelle capable d'émuler de nombreuses architectures (i386, x86_64, arm...). Libre et disponible sur de nombreux OS.
- KVM : Il s'agit de QEMU + quelques extensions indispensables, notamment le support des instructions de virtualisation CPU (Intel VT-x et AMD-v). La machine virtuelle n'émule plus de CPU, elle peut accéder au vrai. Les performances sont de loin meilleures (d'un facteur de 10 ou 20). On trouve aussi VirtIO qui n'est rien d'autre que de la paravirtualisation pour certains périphériques (carte réseau et stockage). KVM est la solution de virtualisation phare sur Linux.
Paravirtualisation
Le principe est encore différent, cette fois nous n'avons plus d'OS "principal" sur lequel les autres s'empilent. Tous les systèmes cohabitent ensemble et se partagent l'accès au matériel. Néanmoins, l'un d'eux est dit "privilégié" et fournit des outils pour administrer l'ensemble. Sur Xen, c'est Dom0.
VMware ESX et Hyper-V sont des solutions de paravirtualisation propriétaires très utilisées en entreprise. Elles sont tellement connues et répandues que je suis bien obligé de les citer, même si elles ne sont pas libres.

- Xen : Disponible sur la majorité des OS libres : Linux, FreeBSD, NetBSD, et même Hurd. Fonctionne aussi sur Windows avec quelques conditions (notamment les instructions de virtualisation CPU). Xen appartient aujourd'hui à Citrix mais reste libre. Le kernel Linux 3.0 va l'intégrer.
Conclusion
Pour bien comprendre les avantages et inconvénients il faut mettre en place ces différentes solutions soit-même. C'est très instructif et intéressant.
Chaque solution s'utilise selon la situation. Un administrateur qui souhaite faire fonctionner un serveur avec des services critiques se tournera vers l'isolation. L'entreprise qui souhaite faire de la haute disponibilité et s'émanciper des contraintes matérielles se tournera vers la virtualisation ou paravirtualisation.