URL: https://linuxfr.org/users/obsider/journaux/un-petit-tour-sur-le-paysage-de-la-virtualisation-linux Title: Un petit tour sur le paysage de la virtualisation Linux Authors: Obsider Date: 2009年09月17日T16:34:15+02:00 Tags: fedora et selinux Score: 35 Cher lecteurs, avec tout ce qu'il se profile à l'horizon concernant la virtualisation sous Linux je me suis dit qu'un point semblait opportun. Tout d'abord Xen: La version 3.4.1 étant sortie il y a peu, force est de constater que cet hyperviseur est en pleine phase de transition concernant le Dom0. A l'heure actuelle pas moins de 5 candidats s'offrent à nous pour ce domaine privilégié (Lien 1). Sur ces 5 seul l'ancestral 2.6.18 est pleinement fonctionnel à ce jour. Tous les efforts se portent néanmoins sur l'architecture pvops pour la prochaine version 3.5 (cf. page suscitée). Malheureusement, il semble que l'inclusion dans la branche principale du kernel Linux soit deja abandonnée pour le 2.6.32 et que les espoirs se fondent maintenant sur la version 2.6.33, dixit le wiki de Fedora (Lien 2). Sachant que l'initiative XCI (Xen Client Initiative, une distribution bare-metal pour le desktop) utilise un Dom0 à base de noyau 2.6.27 modifié, accompagné d'outils de contrôle nouveaux ( RIP xend et anciens fichiers de configuration, Lien 3) et que Cloud Xen est encore bien mystérieux (Lien 4), il apparait que cette solution a besoin à l'heure actuelle d'un peu de temps afin de retrouver une cohésion de premier ordre. KVM: De son côté, le rejeton de Qumranet, nouvellement sous l'égide Red Hat, évolue lui aussi de façon impressionante. Il est maintenant pourvu de KSM (Kernel SamePage Merging) permettant de fusionner au niveau de l'hôte les pages mémoire identiques des invités, améliorant de cette façon le nombre potentiel de machine virtuelles pouvant tourner sur une machine physique. A ceci viennent s'ajouter le support des HugePages (affligé néanmoins de désavantages), le branchement/débranchement à chaud d'interfaces réseau, des améliorations de performances substantielles pour le format de disque qcow2 avec le cache d'écriture désactivé et l'arrivée d'une ABI invité stable entre les versions ( plus de réactivation Windows en perspective ). Tout ceci est consultable sur le Lien 2. Ensuite, après le nested SVM (instructions de virtualisation AMD), vient à son tour le nested VMX (instructions de virtualisation Intel) ( Lien 5 ). Non encore totalement implémentée, cette fonctionnalité très intérressante en environnement de test, consistant à pouvoir virtualiser les extensions de virtualisation elles-même dans les invités et permettant de ce fait de simuler une ferme d'hôtes, ne sera plus reservée aux possesseurs de processeurs AMD. Enfin, et cette fois concernant les invités Windows, Red Hat a libéré ses drivers para-virtualisés de réseau et de stockage, promettant une amélioration visible des performances pour les machines virtuelles tournant sous l'OS de la firme de Redmond ( Lien 6 ). Spice: Suivant les deux excellents journaux d'IsNotGood (Liens 7 et 8), le protocole de bureau distant SPICE se pose indéniablement comme composant majeur de l'infrastructure virtualisée. Grandement attendu de la communauté, les informations le concernant restaient malheureusement rares et éparses, surtout depuis que toute trace de son existance a disparue du wiki de Fedora (Lien 9). Après quelques recherches je suis finalement tombé sur une présentation de Arnon Gilboa provenant du Red Hat summit 2009 nommée 'SPICE: An Open Remote Computing Solution' (Lien 10) et quelle présentation! Celle-ci explique en détail l'architecture de cette solution, son état actuel ainsi que son développement futur. Succintement, SPICE, comme vu plus haut, est un protocole crée spécialement pour les bureaux virtualisés distants. Il concurrence de ce fait directement les ténors actuels comme RDP, ICA et NX. Il dispose de plus d'avantages de taille. En effet il tire tout d'abord parti du GPU client pour le rendement, libérant le CPU de cette tâche. Il distribue de même dynamiquement les calculs entre le serveur et le client suivant la puissance et les possibilités de ce dernier. Il supporte le chiffrement des flux, le multi-écran distant, la video HD et les flux audio bi-directionnels (il est possible d'écouter de la musique tout en s'enregistrant par exemple). La 3D est en prépartion ainsi que le partage d'imprimante, le partage de périphérique générique et bien d'autres choses. Tout ceci est accessible aussi bien pour les systèmes Linux que Windows. Un site lui étant dédié va d'ailleurs bientôt être mis en place ( Lien 11 ). La présentation ne contenant pas de déclaration claire quand à sa libération, j'ai pris la liberté de le demander à son auteur. Voici la partie pertinente de sa réponse: ... Spice is soon to be completely open-sourced (we are Red Hat). ... Le doute n'est donc plus de mise, SPICE va bientôt rejoindre les rangs du libre! Openvswitch/OpenFlow: Changeons à présent de paysage pour nous concentrer sur la virtualisation du réseau. Citrix a, comme convenu, mis à disposition de la communauté le résultat de ses travaux à propos de son switch virtuel, nommé openvswitch ( Lien 12 ). Celui-ci supporte NetFlow, le SPAN, le RSPAN (permettant une visibilité quant aux communications inter-VMs) ainsi que les VLAN avec trunking (possibilité d'assigner simplement plusieurs VLAN à une même interface), les polices de contrôle par machine virtuelle, le bonding avec load-balancing et un mode de compatibilité avec brctl. Beaucoup d'autre fonctionnalités sont en phase d'implémentation. Etant à l'heure actuelle en finalisation, il ne possède pas encore de release officielle ( seul le dépôt git est disponible ). Cela ne devrait plus tarder. Bien que très complet, il ne prétend pas concurrencer à lui seul le Nexus 1000v de Cisco, mais plutôt le vswitch de Vmware. Ce n'est qu'en collaboration avec OpenFlow, standard visant en simplifiant à addresser la communication inter-switch (Lien 13) qu'il devient réellement distribué et permettra une virtualisation complète de l'infrastructure réseau (migration des règles entre vswitchs parrallèlement à la migration d'une machine virtuelle, administration centralisée, ...). Libvirt: Cette bibliothèque et démon de contrôle de machines virtuelles (Lien 14) supporte désormais les hôtes de type ESX et OpenNebula ( en sus des habitués KVM, LXC, OpenVZ, Xen, VirtualBox et UML). Elle permet de ce fait d'administrer ces différentes solutions de manière totalement homogène. Utilisée par un nombre important de projets, elle peut se targuer d'un aspect sécuritaire avancé au travers de l'initiative Svirt (Lien 15) ainsi que de son utilisation en profondeur de la bibliothèque libcap-ng (bibliothèque permettant de facilement tirer parti des capacités POSIX) et de son support de PolicyKit. Elle permet en outre de gérer le stockage ( NFS, iSCSI, USB, fibre, LVM, ...) et la configuration des interfaces via netcf (Lien 17). Elle peut enfin être gérée à distance à l'aide de son propre protocole, de QMF ( protocole d'administration applicatif basé sur AMQP, Lien 18) ou de CIM. Celle-ci vient juste de sortir en version 0.7.1 et va subir une grande restructuration de ses sources afin de pouvoir continuer sur des bases plus saines. Ovirt: Version libre de RHEV-M (outil d'administration d'infrastructure virtuelle, Lien 19), cette solution est pour ainsi dire le vSphere du libre. Elle comprend une image système minimale dédiée à la gestion des hôtes ( du type ESXi ) ainsi que d'un éco-système logiciel complet pour la gestion de son infrastructure virtuelle. Ce dernier se compose de FreeIPA (Lien 20), solution d'authentification centralisée comparable à AD, de cobbler (Lien 21) pour le provisionning, de collectd (Lien 22) pour le monitoring et les statistiques et d'une interface web d'administration complète rassemblant gestion habituelle et cloud. Cette dernière est réalisée en rails et innove en étant très dynamique car basée fortement sur la recherche (critères infinis avec un pseudo language SQL). Le mode maintenance, permettant en un clic de migrer automatiquement toutes les machines virtuelle d'un hôte afin de procéder à une quelconque opération apparait de même très pratique. Je vous invite à ce titre à regarder une démonstration de son pendant commercial (Lien 23). Cette solution supporte enfin le clustering, le load-balancing et possède des API externes afin de pouvoir contrôler programmaticalement tout ceci. Libguestfs: Petite dédicace rapide à cette bibliothèque (Lien 24) extrêmement pratique permettant d'accéder, depuis l'hôte, aux images disques des machines virtuelles (actuellement qcow, qcow2 et vmdk) de la même façon qu'en local ( l'image sera tout simplement montée dans l'arborescence) et ce au travers de divers languages de programmation ainsi qu'avec son shell dédié, guestfish. Tous les types de partions supportés par le noyau Linux le sont aussi par Libguestfs. Il est dorénavent possible d'accéder à tout fichier précis, cloner des machines virtuelles, etc très simplement. A l'issue de ce petit tour d'horizon il est clair que le libre est en totale ébullition concernant la virtualisation, qu'elle soit système ou réseau. Cela avance très vite. Les solutions présentées ici sont toutes 'entreprise ready' ou en passe de le devenir rapidement. Les prochain mois vont être à mon avis plus qu'intéressants! Lien 1 : [[http://wiki.xensource.com/xenwiki/XenDom0Kernels](http://wiki.xensource.com/xenwiki/XenDom0Kernels)] Lien 2 : [[http://fedoraproject.org/wiki/Documentation_Virtualization_B(...)](http://fedoraproject.org/wiki/Documentation_Virtualization_Beat)] Lien 3 : [http://www.mail-archive.com/libvir-list@redhat.com/msg16027.(...)](http://www.mail-archive.com/libvir-list@redhat.com/msg16027.html) Lien 4 : [[http://www.xen.org/products/cloud_source.html](http://www.xen.org/products/cloud_source.html)] Lien 5 : [[http://avikivity.blogspot.com/2009/09/nested-vmx-support-com(...)](http://avikivity.blogspot.com/2009/09/nested-vmx-support-coming-to-kvm.html)] Lien 6 : [[http://www.linux-kvm.org/page/WindowsGuestDrivers](http://www.linux-kvm.org/page/WindowsGuestDrivers)] Lien 7 : [[http://linuxfr.org/~IsNotGood/27880.html](http://linuxfr.org/~IsNotGood/27880.html)] Lien 8 : [[http://linuxfr.org/~IsNotGood/28502.html](http://linuxfr.org/~IsNotGood/28502.html)] Lien 9 : [[http://fedoraproject.org/wiki/Qumranet#SPICE.2FSolidICE](http://fedoraproject.org/wiki/Qumranet#SPICE.2FSolidICE)] Lien 10 : [[http://www.redhat.com/f/pdf/summit/agilboa_11_spice.pdf](http://www.redhat.com/f/pdf/summit/agilboa_11_spice.pdf)] Lien 11 : [[http://www.spice-space.org](http://www.spice-space.org)] Lien 12 : [[http://openvswitch.org/](http://openvswitch.org/)] Lien 13 : [[http://www.openflowswitch.org/](http://www.openflowswitch.org/)] Lien 14 : [[http://libvirt.org/](http://libvirt.org/)] Lien 15 : [[http://selinuxproject.org/page/SVirt](http://selinuxproject.org/page/SVirt)] Lien 16 : [[http://freshmeat.net/projects/libcap-ng](http://freshmeat.net/projects/libcap-ng)] Lien 17 : [[https://fedorahosted.org/netcf/](https://fedorahosted.org/netcf/)] Lien 18 : [[http://qpid.apache.org/qmf-protocol.html](http://qpid.apache.org/qmf-protocol.html)] Lien 19 : [[http://ovirt.org](http://ovirt.org)] Lien 20 : [[http://freeipa.org/](http://freeipa.org/)] Lien 21 : [[https://fedorahosted.org/cobbler/](https://fedorahosted.org/cobbler/)] Lien 22 : [[http://collectd.org/](http://collectd.org/)] Lien 23 : [[http://www.youtube.com/watch?v=_wY1NxM3Yc4&feature=player_em(...)](http://www.youtube.com/watch?v=_wY1NxM3Yc4&feature=player_embedded)] Lien 24 : [[http://libguestfs.org/](http://libguestfs.org/)]