Plan Systèmes Embarqués Modulaires M2 SRI 2007-2008 Machines Virtuelles 1 Historique Taxonomie Système Classique Serveurs Virtuels Langage haut-niveau Autres 's.../... 2 Plan Virtualisation: intérêt à la hausse.../... Outils Utilisations Référence: Virtual Machines, versatile platforms for systems and processes J.E. Smith, R. Nair, Ed: Elsevier Src: Google Trends 23 Janvier 2007 3
Mais il faut raison garder Les technologies de virtualisation semblent «populaires» Src: Google Trends 23 Janvier 2007 Src: Google Trends 23 Janvier 2007 Historique Apparues durant les années 60 chez IBM Sujet à la mode durant les années 60 et 70 Survey of Virtual Machine Research (Goldberg, 1974) Virtual Machines have finally arrived. Dismissed for a number of years as merely academic curiosities, they are now seen as cost-effective techniques for organizing computer systems resources to provide extraordinary system flexibility and support for certain unique applications 72 papiers publiés de 1966 à 1973 7 Historique Définition de Goldberg (60-70) : Simulateur du jeu d'instruction X sur le jeu d'instructions G Ralentissement de 1000 pour 1 Quand X == G Ralentissement de 20 pour 1 Quand X == G, utilisation de G(réel) autant que possible, pour être plus efficace. Virtual Machine systems (s) Simulator = Virtual machine monitors (M)mostly 8
Définition (Goldberg) Définition (Goldberg) Bare Machine Privileged software nucleus Basic Machine Interface Bare Machine Virtual Machine Monitor Virtual Machines Basic Machine Interface User program Extended Machines Extended Machine Interfaces User program User program Privileged software nucleus #1 Extended Machine Interfaces #1 User program Extended Machines Privileged software nucleus #2 User program Extended Machine Interfaces #2 User program 9 10 Historique Années 80: Pas d'activité visible sur le sujet Fin des années 90, 2000: Résurgence des avec Java HLL-'s : High-Level Language Résurgence des systèmes classiques: Vmware (Intel), Connectix (Initially: PC simulation on Mac's) Partitionnement des serveurs SMP/Numa Physique ou Logique : IBM, HP, Sun, Bull Serveurs Virtuels: (Virtuozzo, LVS, jail,...) Utilisés pour hébergement de sites Web 11 Historique Taxonomie Plan Système Classique Serveurs Virtuels Langage haut-niveau Autres 's.../... 12
Virtualisation? Oh, Virtualisation! Virtual Networking? Intel VT? UML? IBM/? Virtual Server? ware? Transitive QuickTransit? Java, J? Application Virtualization? Pascal Pcode? Platespin? AMD S? TransMeta Crusoe? Virtual Solutions? SIMICS? Softricity? QEMU? Dynamo? VirtualPC? Virtual Reality? Virtual Storage? FX!32?c Différentes classes de virtualisation Traduction (Emulation) X apparaît comme Y Quelque fois X et Y sont identiques => duplication Aggrégation N ressources apparaissent comme 1 Grilles / Clusters / Single System Image... Partition 1 ressource apparaît comme N Moniteurs de machines virtuelles 14 Architecture Système Inter-opérabilité Mac Apps. Windows Apps. Linux Apps. Systèmes construits avec 3 composants principaux Mac Windows Linux Avantages: PowerPC X86 X86 Tâches de conception indépendantes Applications portables Problèmes: Composants non inter-opérables Applications ISA Mac Apps. Mac Windows Apps. Linux L'existant limite l'innovation Difficulté d'optimisation Hardware Courtesy E. Smith Courtesy E. Smith X86 X86 15 16
Machine Virtuelle Applications. Composition de Machines Virtuelles Applications. Apps Applications. Applications. Apps ISA ISA translation ISA Optimisation ISA Replication Coupling Software Real Machine Virtual Machine Apps Apps Courtesy E. Smith 17 Courtesy E. Smith ISA Composition 18 Interfaces Système Application Software System calls Operating System Application Software System calls Operating System System ISA User ISA ISA System ISA User ISA ABI Hardware Hardware Courtesy E. Smith 's can provide an ISA interface System level 's can provide an ABI interface Process level Machines Virtuelles Processus (ABI) Multiprogrammation Tout multi-tâches fournit une à chaque processus qu'il supporte. Émulation et Traducteurs Binaires Dynamiques Digital FX!32: exécute Wintel apps sur Win/Alpha Transitive QuickTransit TM 19 20
Machines Virtuelles Processus (ABI) Machines Virtuelles Système (ISA) Optimiseurs Binaires Dynamiques HP Dynamo: optimises PA-8000 on PA-8000! High-Level Language 's: Pascal (P-code), Java, Microsoft Common Language Infrastructure Replication de la plate forme matérielle VmWare, Xen, Denali, IBM/360 Différenciées principalement par l'implémentation système complète (whole system 's) Supporte l' et les applications sur une plate forme avec ISA différente Co-Designed 's Transmeta Crusoe 21 22 Taxonomy (dérivée de E. Smith) System Level (ISA) s Process Level (ABI) Une autre Taxonomie possible s System s Process s Replication (Same ISA) Translation (#ISA or possibly same ISA) (Same ISA) (Possibly different ISA) (Same ISA) (Possibly different ISA) Classic Whole System (Simics, Bochs, QEMU) Multiprogrammed Systems Dynamic Translators Multitask Classic Dynamic ISA Translators Dynamic ABI Translators (#ISA) (==ISA) (==) (#) (==) (#) Native, Type I Paravirtualized (Xen, VLX) Transparent (ware ESX, HW assist: Xen, VLX) Hosted, Type II (ware WS, K) Multitask Virtual Servers Virtuozzo, Solaris Zones Translator WABI, WINE ISA & ABI Translator FX!32 ISA & Translator Transitive High Level Language Java Virtual Servers (Virtuozzo, Solaris Zones) Para-virtualized (Xen, VLX) Native, Type I Hosted, Type II (ware WS, K) Transparent (ware ESX, HW assist: Xen, VLX) Whole System (Simics, Bochs, QEMU) High Level Language (Java) ISA & ABI Translator (FX!32) ISA & ABI Translators (==) (#) ISA & Translator (Transitive) Translator (WABI, WINE)
Historique Taxonomie Plan Système Classique Serveurs Virtuels Langage haut-niveau Autres 's.../... 25 Système Classique A virtual machine () provides a faithful implementation of a physical processor s hardware running in a protected and isolated environment. Virtual machines are created by a software layer called the virtual machine monitor (M) that runs as a privileged task on a physical processor. A virtual machine may implement the instruction set for any processor. If it implements the instruction set for the physical processor on which it is running, it is called a hypervisor. 26 Système Classqiue Système Classique Permet d'exécuter 2 (ou +) invités (guest ) simultanément sur la même machine 2 approches: Native: les s'xécutent sur un M ou hyperviseur Apps M ISA Apps Apps Apps HT ISA «Hébergé» (Hosted): On a besoin d'abord d'un M nécessite un hôte (host ) ou non Type I: Standalone M VmWare ESX. IBM/, HP SuperDome... Xen, VLX, Denali, Disco, Type II: M nécessite un hôte ware Workstation, Serenity SVISTA, MSFT VirtualPC, Parallels UML, co-linux Les qui s'exécutent dans une sont "invités" (guest ) 27 28
Système Classique Exécuter directement image binaire d'un Translation binaire dynamique : ware Assistance matérielle (Intel VT): K, VLX-VT Technique de «paravirtualisation» Adapter l' pour exécution + efficace dans Inclut [drivers de ] périphériques virtuels Xen, VLX, UML Problèmes Les ont été conçus avec l'hypothèse que ce seriat le seul logiciel controllant l'intégralité des ressources physiques de la machine: Mémoire, CPU, Interruptions, horloges, périphériques... Nécessité de détecter et résoudre les conflits entre ces différents : masquage interruptions, programmation MMU,... en agissant au niveau machine virtuelle pas nécessairement au niveau physique. 29 30 Solutions Virtualisation CPU Instructions privilégiées But: exécuter le binaire de l' invité en mode non-privilégié (il a été écrit pour s'exécuter mode privilégié) Moyens: Réservées au mode superviseur () Exception si exécutées en mode utilisateur Instructions dites «hardware-sensitive» Interagissent avec ressources matérielles Virtualisation transparent ou native: Pas de modification préalable du binaire de l' Traduction binaire dynamique Processeurs totalement virtualisables Para-virtualisation Modification des parties dépendantes machines control-sensitive: change configuration ressources behaviour-sensitive: depend de la configuration Instructions inoffensives Non hardware-sensitive Exécutables dans tous les modes 31 32
Processeurs Virtualisables Virtualisation CPU Problème: Y a-t-il des instructions dont le comportement diffère ou devrait différer entre mode privilégié et mode non privilégié? Instructions sensibles: Trap en mode superviseur si exécutée en mode utilisateur : OK Ex: cli, sti (Intel x86) trap quand exécutée en mode utilisateur Non-op: not OK: Ex: POPF (Intel x86): Indicateur masquauge IT pas affecté en mode utilisateur Obtenir état système / matériel: pas OK Ex: Lecture CR3 (Intel x86) retournerait info physique et non pas virtuelle. Problème des instructions dites critiques Instructions hardware-sensitive NON privilégiées Ex: Intel IA-32 popf avec bit masquage interruptions en mode utilisateur, pas d'effet MAIS pas d'exception Doivent être détectées et virtualisées par M Remplacées par un «trap» vers M (patching) Instruction remplacée est interprétée par M Opère sur version logicielle ressources physiques 33 34 Fully Virtualizable Processors Hardware assisted virtualization Existing Solutions Existing solutions utilize concepts such as binary patching or para-virtualization Drawbacks include the complexity of binary patching and the requirement for having source Ring 3 Ring 1 Ring 0 Application Unmodified Operating System Binary Patching Application Operating System Driver Front End Virtual Machine Monitor Non Root Mode Root Mode Intel Virtualization Technology (VT-x) VT-enabled Intel CPUs integrate a new execution mode, enabled by an instruction set and control structure Allows for two new operating modes and a set of hardware-based triggers to switch between them Ring 3 Ring 0 Ring 3 Ring 0 Application Unmodified Operating System Application Unmodified Operating System Virtual Machine Monitor Traduction Binaire Dynamique Fonctionne sur processeur sans support de virtualisation Exécute binaire non modifié en mode moin sprivilégié (ex: ring 3 au lieu de ring 0 sur x86) Traduction Binaire Dynamique (ex: ware sur x86) M ré-écrit dynamiquement les instructions privilégiées qui s'exécuteraient silencieusement en mode utilisateur Instructions ré-écrites à la demande, dans un cache Permet de «réorganiser» le code Impact consommation mémoire Impact sur le détermisnisme temporel Solution transparente mais complexe La complexité réside dans le M Hardware Hardware 35 36
Virtualisation Mémoire Virtualisation Mémoire Mémoire Physique Mémoire de la machine physique Mémoire Réelle Mémoire attribuée par M à une mémoire réelle peut-être > mémoire physique Mémoire Virtuelle Espace mémoire attribué par un Guest à chaque processus 4 GB sur Intel IA-32 Chaque guest gére ses tables de pages Translation adresse virtuelle <-> adresse réelle M gére mémoire physique Translation adresse réelle <-> adresse physique adresse réelle adresse physique M maintient une copie des tables de translations de chacun des Guest 37 38 Virtualisation Mémoire Virtualisation Mémoire 2000 6000 1000 4000 Page virtuelle non mappée 1000 5000 39 1000 7000 8000 1 P1.1 P1.2 0 2 P2.1 Page virtuelle mappée Page réelle mappée Page réelle non mappée Page physique 3000 7000 Mémoire physique Espace virtuel Processus 1000 3000 Mémoire réelle de M peut swapper pages réelles d'une Page virtuelle non mappée par Guest Page réelle ne doit pas être mappée par M Respecter défauts de page du Guest Défauts de page réelle transparents au Guest Pages réelles peuvent être partagées par M entre plusieurs Guest 40
Ex: User Mode Linux Ex: User Mode Linux Inclus dans le noyau 2.6 Chaque processus "invité" s'exécute dans un processus Linux hôte Le Linux "invité" est un debogueur de ce processus 41 42 Ex: User Mode Linux Ex: User Mode Linux 43 44
Ex: User Mode Linux Ex: User Mode Linux / skas : Accès au système de fichiers via hostfs 45 Pour éviter: 4 changements de contexte par appel système, que la protection (mémoire) du Linux hébergé ne ralentisse le système, Problèmes pour déboguer les processus invités, Problèmes de synchronisation On permet à un processus Linux (hôte) d'avoir plusieurs espaces d'adressage Tous les processus et le noyau Linux ihébergés sont alors différents espaces d'adressage d'un même processu hôte unique. 46 Exemples: UMLinux Exemple: UMLinux 0xFFFFFFFF Guest app. Guest app. Guest 0xC0000000 0xbFFFFFFF 0x70000000 Host Guest Guest application Guest 4 1 M process UMLinux Kernel Guest machine process Host operating system Host hardware 0x6FFFFFFF Application Space Guest Application M 3 2 Host Operating System 0x0 UMLinux address space 47 48
Exemple: VmWare Workstation & GSX Exemple: VmWare Virtualisation des périphériques Type II (hosted) Network Packet Send Guest Supporte en binaire Pas de modifications Configuration avec pilotes de périphériques appropriés Seulement sur X86 hébergés s'exécutent en mode utilisateur App's Host Appl driver Physical Machine Applications Operating Systems Virtual Machine Monitor Out to I/O port Context Switch Return to App Syscall Bridge code M M Driver M App Net Driver Host Ethernet Driver Out to I/O port Ethernet H/W 49 50 Exemple: VmWare Virtualisation des périphériques Network Packet Receive Ethernet H/W Host, Appl, Driver Virtual Machine Virt. NIC M Net Driver Physical Machine Virtual Machine Virt. NIC M Virtual Network Hub (Bridged) Virtual Bridge Phys. NIC Device Interrupt Host Ethernet Driver Bridge Code Net Driver Return from select() M App Memcpy to memory ask M to raise IRQ M Raise IRQ In/Out to I/O port Context Switch Guest M Driver Return from IOCTL App Exemples: VmWare ESX Type I (native) Supportes en binaire: Pas de modifications Configuration avec pilotes de périphériques appropriés X86 seulement hébergés en mode utilisateur 51 52
Exemple: VmWare ESX Exemple: ware ESX Couche de Virtualisation Basé sur un noyau Linux maison? Dixit ware forum Gestion Mémoire Virtuelle Swap Out / In Machines Virtuelles Partage de pages basé sur le contenu Notion de "part de memoire" Exporte fichiers FS comme des disques virtuels FS visible as /vmfs dans Service Console hébergé peut gérer directement un disque physique. 53 Supporte SMP et NUMA Jusqu'à 8 CPU virtuels par CPU Physique Réécrit dynamiquement certaines parties de l' invité (binary translation) pour insérer des appels au M Implémente versions "double" de structures systèmes Tables de Pages Maintient cohérence=> coût à la création de processus 54 Exemple: Xen Exemple: Xen Paravirtualization Terme créé par projet Denali Modifications de l' hébergé (pas des applications) Minimise le nombrer d'instructions à virtualiser But : capacité de tourner + de 100 But de Denali: tourner + de 1000's supporté: Ilwaco : exokernel libs + 1 application Paravirtualization de la gestion Mémoire Can't install fully privileged segments Can't overlap with top end of linear address space Guest : read access to page table, updates batched and validated by hypervisor No paging by M => isolation between 's. Xen is mapped in 64 MB section at the top of every address space Ballooning (as in ESX) is used to free extra memory. 55 56
Exemple: Xen Exemple: Xen Paravirtualization of CPU Guest must run at lower privilege than Xen Ring 1 on x86 Guest must register exception handlers. Aside from page faults real and virtual handlers are identical Cannot access to CR2 from ring1 Store it on stack before invoking ring1 handler. Guest may install fast syscall handler w/o indirection through ring 0 Guest aware of both real and virtual time(s). 57 Paravirtualization of Device I/O Virtual devices(only) Data transfer through asynchronous I/O rings Event mechanism instead of hardware interrupt 58 Exemples: Xen Exemple: Xen Notifications from Xen to the Guest pending events are stored in a per-guest bitmask. is done using asynchronous mechanism. is sent when the flags associated with certain events like data received, I/O complete etc. are set. Domain0 Handles device virtualization Created at boot time Control interface: create/terminate domains Domain properties: Scheduling, memory allocation.. X E N Control Plane Software Guest XenoLinux Domain0 control interface User Software Guest XenoLinux Virtual x86 CPU User Software Guest XenoLinux Virtual memory H/W (phy mem, x86 CPU) User Software Guest XenoLinux Virtual devices 59 60
Xen Performances Plan Historique Taxonomie Système Classique Serveurs Virtuels Langage haut-niveau Autres 's.../... 61 62 Virtuozzo Linux-VServer http://www.linux-vserver.org/ Une instance unique d' Ressources isolées Root file system, IP tables, Process for signals Autres exemples: FreeBSD jail Linux chroot http://www.sw-soft.com/en/products/virtuozzo/ve/ Ne pas confondre avec Linux Virtual Server (LVS)! LVS exporte plusieurs serveurs physique comme un seul, en utilisant du "load balancing" Linux-VServer Machine unique, instance unique d' Noyau Linux modifié pour isoler les # instances Indépendant de la plat forme matérielle Utilisable en conjonction avec d'autres méthodes de virtualisation 63 64
Plan Historique Taxonomie Système Classique Serveurs Virtuels Langage haut-niveau Autres 's.../... 65 Émule complètement une architecture (ISA) sur une autre Exemple: Intel on Sparc Bochs (LGPL), http://bochs.sourceforge.net/ 386, 486, Pentium, Pentium Pro, AMD64 Périphériques I/O courants, Bios Sur Unix ou Windows Pour mémoire : Plex86 (LGPL?) 66 FAUmachine (GPL) Successeur de UMLinux (GPL)(# de UML(GPL)!) Possibilités d'injection de fautes Outil pour automatiser des tests, expériences. Mode utilisateur, supporte des noyaux Linux natifs(?) hôtes: Linux, en progrès : BSD, Windows Ressemble à une extension d'umlinux avec précompilateur ou compilateur JIT pour convertir les instructions privilégiées en appels au simulateur. Qemu http://fabrice.bellard.free.fr/qemu/ CPU cibles: X86, ARM, PowerPC, SPARC CPU hôtes: x86, PowerPC, ARM, SPARC,... hôtes: LINUX, WINDOWS, Mac X Émulation mode utilisateur seulement ou totale Utilise translation dynamique vers code natif pour des performances raisonnables. Supporte code auto-modifiant. Le CPU virtuel CPU se présente comme une librairie. 67 68
PearPC (GPL): Émulation PowerPC sur Linux/Windows http://pearpc.sourceforge.net/about.html EM86: émulation x86 sur Linux / Alpha http://www.cs.rose-hulman.edu/~donaldlf/em86/index.html SkyEye: émulation ARM7TDMI, ARM720T,StrongARM, Xscale sur Linux /Windows http://www.skyeye.org/ SIMH (modified X-Windows license):http://simh.trailing-edge.com/ Digital Equipment Corporation PDP-1, PDP-4, PDP-7, PDP-8, PDP-9, PDP-10, PDP-11, PDP-15, VAX Data General Corporation Nova, Eclipse IBM Corporation 1130, 1401, 1620, System 3 GRI Corporation GRI-909 Honeywell Corporation H316/516 Hewlett Packard Corporation HP2116, HP2100, HP21MX Interdata Corporation 16b systems, 7/32, 8/32 Scientific Data Systems SDS-940 MITS Altair 8080, Altair Z80 Royal-Mcbee LGP-30, LGP-21 69 70 Plan Simics http://www.virtutech.com/ Simulateur complet de: Alpha, ARM, IA-64, MIPS, PowerPC, SPARC V9, x86, et AMD64. Simulation de machines SMP et de "clusters". Utilisable pour simuler de nouveaux jeux d'instructions Tourne sur Linux, Windows, Solaris,... 71 Historique Taxonomie Système Classique Serveurs Virtuels Langage haut-niveau Autres 's.../... 72
HLL 's Plan Java Définit une architecture ISA (bytecode) Définit une "ABI" Fournit une abstraction "portable" des ressources physiques sous-jacentes Pas spécialement dédiée à la "replication" 73 Historique Taxonomie Système Classique Serveurs Virtuels Langage haut-niveau Autres 's.../... 74 Autres 's Exemple: FX!32 Simple ABI Digital FX!32: supporte des applications Windows x86 sur Windows Alpha But: Rendre des applications existantes disponibles sur un "nouveau" processeur rapide avec un minimum de dégradations de performances Collecte les profils pendant l'exécution Transforme les images en tenant compte des profils x86 Applications. Transparency Agent X86 image Runtime & Emulator Translated images Binary Translator Execution Profiles DB registry Server Windows ALPHA ISA 75 76
Autres 's Autres 's ABI & Translation: Transitive QuickTransit: http://www.transitive.com/ Supporte applications ISA1 'x' sur ISA2 'y' ISA1: MIPS, x86, PPC, Mainframes ISA2: Itanium, x86, Opteron, PPC Principalement pour la migration de vieilles applications binaires vers de nouveaux systèmes Gain de performance attendu: ("très" vieux matériel -> matériel neuf, très rapide) HP Dynamo: optimise des applications PA9000 sur PA9000 Génère du code pour les "points chauds" 77 78 Exemples: Dynamo Exemples: Dynamo 79 80
Autres 's Exemples: Crusoe Co-Designed : Transmeta Crusoe http://www.transmeta.com/ Code Morphing Execution of x86 code on VLIW processor Simplified Hardware: Mobile PIII: L1: 32KB, L2: 256KB, Die Size: 106 mm 2 TM 5400: L1: 32KB, L2: 256KB, Die Size: 73 mm 2 Less power consumption, less heat dissipation Code Morphing Exécution de code x86 sur processeur VLIW 4 atomes de type RISC Matériel simplifié: Mobile PIII L1: 32KB, L2: 256KB, Die Size: 106 mm 2 TM 5400 L1: 32KB, L2: 256KB, Die Size: 73 mm 2 FADD ADD LD BRCC FPU 128-bit molecule Integer ALU #0 Plus faible consommation, moins de dissipation de chaleur Load/Store Unit Branch Unit 81 82 Exemples: Crusoe Plan Crusoe Code Morphing Software BI Code Morphing.../... Outils Utilisations VLIW engine Software Appls 83 84
Outils : Xen Outils : VmWare Domaine 0: dédié à la gestion des Domaines créés et chargés depuis le domaine 0 Crée, construit, démarre, arrête, détruit les autres domaines Console Système gérée par le domaine 0 Migration de domaines actifs, même entre machines physiques distinctes Vtools: Assistant P2V: Aide / automatise la migration de serveurs Physique vers Virtuel Copie de disque physique Re-configure système (IP/ Interface réseau, Drivers,...) Crée la avec la copie de disque 85 86 Outils: VmWare Outils: HP Virtual Center (C) Gère les serveurs comme un ensemble unique de ressources Installe Instant Servers, provisione la plate-forme Monitor serveurs Virtuels Vmotion: Permet de migrer un serveur d'une machine hôte physique vers une autre sans interruption du serveur Répartition de charge, maintenance physique WorkLoad Manager (hp/wlm) Partitioning Continuum Hyperplex: gère les partitions physiques d'un cluster composé de plusieurs noeuds. Npartitions: Permet partition physique au sein d'une seule machine Vpar: Partition logicielle (virtualisation) au sein d'une partition physique PRM: virtualisation de serveur au sein d'une Vpar ( unique multiplexé) 87 88
Plan Utilisations des Machines Virtuelles.../... Outils Utilisations Hébergement d'hôtes Virtuels, Développement, Debug, test, Réseaux virtuels, Pratique de récupération en cas désastre Que faire après: #rm -rf / Éducation 89 90 Utilisations des Machines Virtuelles Utilisations des Machines Virtuelles Consolidation des Serveurs: Arrêter la prolifération des processeurs Intel, Permettre aux utilisateurs de consolider les machines Maximiser utilisation des ressources serveurs Réduire le TCO (Total Cost of Ownership) Sécurité: Journalisation sécurisée, Détection et prévention des intrusions Honeypot, Firewalls 91 92
Utilisations des Machines Virtuelles Utilisations des Machines Virtuelles Haute disponibilité Haute disponibilité Backup de serveurs Migrer environnement du bureau à la maison Implémentation des détecteurs de défaillance "Cluster" In A Box Replication active de l'état d'un 93 94