Xen et l' Art de la Virtualization Computer Laboratory Antoine Nivard Responsable technique Adéquat région Ouest Responsable de Site francophone de XEN
Sommaire Aperçu sur la Virtualisation Xen Aujourd'hui : 3.0 Architecture Performance Migration de VM en « live » Xen et l'avenir
Jargon de la virtualisation Mettre des machines logiques (OS) sur des machines physiques Machine physique: Machine hôte Dom0 Hyperviseur Machine virtuelle Machine guest VM DomU
Aperçu sur la Virtualisation Emulation: QEMU, BOCHS L'émulation n'est pas la virtualisation! Un seul OS: Ensim, Vservers, CKRM Groupes de processus utilisateurs dans des conteneurs de ressources Difficile d'avoir une bonne isolation! Virtualisation complète: VMware, VirtualPC Plusieurs OS sans modifications Difficile de bien virtualiser le x86 Para-virtualisation: UML, Xen Plusieurs OS sur une architecture spéciale Arch Xen/x86 est très proche x86
XEN, une solution Pour serveurs XEN est une des meilleurs solution pour la consolidation de serveurs Pas la meilleur pour le « Destop » Excellentes performances, proche du natif! ~1% d'overhead 40 VM sur un quadri-processeurs Pour environnements libres Fonctionne avec tous les environnements libres Pas de windows! Mature pour la production Fonctionne en production pour des hébergeurs Solution de sécurité pré-packagés
Virtualisation dans l'Entreprise X Consolider les serveurs sous-utilisés et réduire les coût matériel (achats, maintenance, recyclage) et les coûts d'exploitation (administration, pilotage) Eviter les temps d'interruption lié aux migrations Avoir un load-balancing dynamique pour garantir les SLA sur les services/applications X X Renforcer la politique de sécurité
Xen aujourd'hui : 3.0 Isolation sécurisé entre les VM Pas d'effet de bord Sécurisation des ressources Contrôle des ressources Allocation matériel de type AGP, PCI, USB possible Gestion fines du réseaux Réallocation de mémoire à la volée Réallocation de CPU virtuelle à la volée Contrôle de la QoS Relocalisation en direct de VM entre noeud XEN
Xen aujourd'hui : 3.0 Architecture spécifique: Arcg/Xen Seulement le noyau de la VM a besoin d'être porté Toutes les applications et librairies fonctionnent sans modification Linux 2.4/2.6: Debian, FedoraCore, Mandriva, SUSE FreeBSD, OpenSolaris, NetBSD, Plan9 Solution pré-packagés dans les distributions Performance des binaires très proche du natif Supporte le même matériel que Linux x86
Para-Virtualisation de Xen Arch xen/x86 : comme x86, mais remplace les instructions privilégiés par des hypercalls XEN Evite la réécriture de binaires Pour Linux 2.6, seulement les fichiers “arch-dep” sont modifiés Modifications relativement simples et isolées dans le code Modifier l'OS pour un environnement virtualisé Wall-clock time vs. virtual processor time Xen fournit les deux types de timer Accès aux réels ressources Optimisation du comportement de l'OS Virtualisation de la MMU: direct vs. shadow mode
Xen 2.0 Architecture Event Channel Virtual MMUVirtual CPU Control IF Hardware (SMP, MMU, physical memory, Ethernet, SCSI/IDE) Native Device Driver GuestOS (XenLinux) Device Manager & Control s/w VM0 Native Device Driver GuestOS (XenLinux) Unmodified User Software VM1 Front-End Device Drivers GuestOS (XenLinux) Unmodified User Software VM2 Front-End Device Drivers GuestOS (XenBSD) Unmodified User Software VM3 Safe HW IF Xen Virtual Machine Monitor Back-End
Xen 3.0 Architecture Event Channel Virtual MMUVirtual CPU Control IF Hardware (SMP, MMU, physical memory, Ethernet, SCSI/IDE) Native Devic e Driver GuestOS (XenLinux) Device Manager & Control s/w VM0 Native Devic e Driver GuestOS (XenLinux) Unmodified User Software VM1 Front-End Device Drivers GuestOS (XenLinux) Unmodified User Software VM2 Front-End Device Drivers Unmodified GuestOS (WinXP)) Unmodified User Software VM3 Safe HW IF Xen Virtual Machine Monitor Back-End VT-x x86_32 x86_64 IA64 AGP ACPI PCI SMP
SMP Guest Kernels Xen étend son support à de multiple VCPUs Virtuel IPI’s sont envoyés via « Xen event channels » Actuellement 32 VCPUs sont supportés Simple hotplug/unplug de VCPUs A partir de la VM ou par les outils de contrôle Optimisation avec un VCPU par des patch spinlocks sur les binaires.
SMP Guest Kernels Bonnes perfomances SMP tant que la sécurité (contrôle) est assurée Requis extra TLB syncronisation IPIs L'approche para-virtualisation a de nombreux avantages Evites plusieurs IPI virtuel Permet d'éviter « bad preemption » plug/unplug à chaud et automatiquement de VCPUs SMP scheduling est un problème complexe « Strict gang scheduling leads to wasted cycles »
ring 3 x86_32 Xen réserve le haut de l'espace VA Protection de segmentation sur Xen à partir du kernel La vitesse du “call” ne change pas Xen 3 supporte un PAE de plus de >4GB mem Kernel Use r 4G B 3G B 0G B Xen S S U ring 1 ring 0
x86_64 Plus grand espace VA, facilite la vie mais: Pas de support sur la limite de segment Besoin d'utiliser la protection de page-level pour protéger hypervisor Kernel Use r Xen U S U Reserved
Architecture des E/S Xen délégue aux VM des Espace-E/S et celles-ci gérent les accès aux E/S dédiés Espace de configuration virtuel pour le PCI Interruptions Virtuelles Besoin du IOMMU pour la protection en full DMA Périphériques sont virtualisés et exportés aux VMs via Device Channels Asynchronous sûr et transport de la mémoire partagé « Backend » drivers exporter en « frontend » drivers Net: utilisation normale du bridging, routing, iptables Block: exporte n'importe quel blk dev e.g. sda4,loop0,vg3 Infiniband / Smart NICs en direct pour les E/S d'une VM
Virtualisation des E/S IO virtualization in s/w incurs overhead Latency vs. overhead tradeoff More of an issue for network than storage Can burn 10-30% more CPU Solution is well understood Direct h/w access from VMs Multiplexing and protection implemented in h/w Smart NICs / HCAs Infiniband, Level-5, Aaorhi etc Will become commodity before too long
MMU Micro-Benchmarks LXVU Page fault (µs) LXVU Process fork (µs) Résultats de lmbench sur Linux (L), Xen (X), VMWare Workstation (V) et UML (U)
Performances Système LXVU SPEC INT2000 (score) LXVU Linux build time (s) LXVU OSDB-OLTP (tup/s) LXVU SPEC WEB99 (score) Benchmark standard sur Linux (L), Xen (X), VMware Workstation (V) et UML (U)
Résultats réseaux: TCP LXVU Tx, MTU 1500 (Mbps) LXVU Rx, MTU 1500 (Mbps) LXVU Tx, MTU 500 (Mbps) LXVU Rx, MTU 500 (Mbps) Bande passante en TCP sur Linux (L), Xen (X), VMWare Workstation (V) et UML (U)
Scalability LX 2 LX 4 LX 8 LX SPEC WEB99 en simultané sur des services sous Linux (L) et Xen(X)
VM Relocation : Motivation La relocation de VM permet: Haute Disponibilité Maintenance serveur Load balancing Gain de preformances Xen
Migration dynamique des VM A quoi cela peut servir? Gestion d'un pool de VMs fonctionnant en cluster Maintenance et mise à jour facile à mettre en oeuvre Load balancing des VMs à travers le cluster Un challenge Les VMs ont plusieurs états possibles Certaines VMs ont besoin de hautes disponibilités Ex. serveurs web, bases de données, serveurs de jeux On peut limiter les ressources lors de la migration Les évolutions Phase d'analyse pour une migration plus rapide Relocation à tranvers un WAN (IPSec) et « CoW mirroring» FileSystem clusterisé (GFS, DRDB) supportant le cluster de XEN
Pré-requis Stockage en réseau NAS: NFS, CIFS SAN: Fibre Channel iSCSI, network block dev drdb network RAID Bonne connectivité Minimum réseau L2 Conseillé L3 re-routeing => GIGABIT bien sûr! Xen Storag e
Etape 0: pré-migration Etape 1: réservation Etape 2: itérative pré-copy Etape 3: pause-et-copie Etape 4: ré-activation Stratégie de relocation VM active sur l'hôte A, la destination de l'hôte cible sélectionné. Les “block devices” sont mirrorés. Initialisation du conteneur sur la cible Copie des pages mémoires en plusieurs fois Pause de VM sur l'hôte A Redirection du traffic réseaux. Synchronisation sur l'état mémoire Activation sur l'hôte B et arrêt de la VM sur l'hôte A
Extensions Cluster et load balancing Phase d'analyse pour la pré-migration Optimisation bruts selon des mesures Fermeture d'un noeud pour maintenance Migration rapide pour maintenance Système de stockage supportant le cluster de VM Décentralisation, réplication de donnés, copy-on-write Relocation à travers un WAN Tunnels sur IPSec et « CoW mirroring » en réseaux
Vitesse de migration/perte
Migration d'un serveur Quake 3
Etat actuel de la 3.0 Driver Domains 64-on-64 VT ? 4TB16GB >4GB memory ~tools Save/Restore/Migrate new! SMP Guests Domain U Domain 0 PowerIA64x86_64x86_32px86_32
3.1 feuille de route Amélioration du support virtualisation complète Pacifica / VT-x abstraction Plus d'outils pour le contrôle du projet Tuning et optimisation des performances Eviter les problèmes liés à la configuration manuel Support de Infiniband / Smart NIC NUMA, Virtual framebuffer, etc
Feuille de route Optimisation de support VT (Intel) et de Pacifica (AMD) Meilleurs outils du contrôles des ressources VM « forking » Alléger le service de replication et d'isolation Tolérance de panne logiciel Exploitation déterministe « replay » Algorithmes de load balancing de cluster Modèle pour des migrations automatisées (CPU/RAM/ES) Cluster distribué (Mosix?) Securisation de la virtualisation Multi-level secure Xen
VT-x / (Pacifica) Permet à des OS Guest de fonctionner sans modification de para-virtualisation E.g. legacy Linux, Windows XP/2003 CPU fournit certaines instructions privilegiées Le système “Shadow page” est utilisé pour fournir la virtualisation de la MMU Xen fournit une plateforme simple d'émulation BIOS, Ethernet (ne2k), IDE emulation Install des drivers para-virtualisés après le boot pour de haute-performance en E/S
Conclusions Xen est une solution compléte et robuste de VMM GPL Exeptionnel performance et “scalability” Excellent contrôle de ressource et protection La relocation/migration en directe permet en temps- réel de réduire les temps d'indisponabilité et de maintenance