Virtualisation principes et applications Xavier Belanger Décembre
Remerciements
Licence Ce document est sous licence Creative Commons by-nc-ca 2.0 Vous êtes libre de reproduire, distribuer et de modifier cette création selon les conditions suivantes : ● Paternité : vous devez citer le nom de l'auteur original ● Pas d'utilisation commerciale : vous n'avez pas le droit d'utiliser cette création à des fins commerciales ● Partage des conditions initiales à l'identique : si vous modifiez, transformez ou adaptez ce document, vous n'avez le droit de distribuer la création qui en résulte que sous un contrat identique à celui-ci
Plan ● Introduction : définition et historique ● Objectifs : buts de la virtualisation, gestion des ressources ● Théorie : bases et typologie de solutions techniques ● Mise en œuvre : logiciels de virtualisation, démonstrations ● Conclusion et références
Qu'est ce que la virtualisation ? C'est une technique permettant à un ou plusieurs systèmes d'exploitation (systèmes invités) d'être exécutés indépendamment sur un système hôte et de pouvoir utiliser ses ressources. Introduction
Historique 1961 : Développement au MIT d'un système à temps partagé : CTSS (Compatible Time-Sharing System) 1964 : CP-40 et CMS (Cambrige Monitor System) permettant l'exécution de 14 "pseudo-machines" 1965 : Annonce de l'IBM M44/44X qui expérimente la mise en œuvre de machines virtuelles 1966 : Mainframe IBM System/360 Model 67, intégrant le système TSS (Time Sharing System) permettant la gestion de mémoire virtuelle et le support matériel pour la virtualisation Le système CP/CMS (Control Program/Conversational Monitor System) remplace le système originel des S/ et permet l'essor de la virtualisation. Ce système est publié par IBM sous forme de code source libre (IBM Type III Library) en Introduction
Historique 1972 : Ré-implémentation de CP/CMS sur les S/370, qui avec la lignée des mainframes IBM aboutit au système z/VM utilisé sur les actuels z/Series : Gerald J. Popek et Robert P. Goldberg : "Formal Requirements for Virtualizable Third Generation Architectures" 1978 : Apparition du processeur Intel : SoftPC d'Insignia Solutions permet de faire fonctionner MS-DOS sur des stations de travail UNIX 1997 : Virtual PC de Connectix pour Mac OS 1998 : Fondation de VMware 2003 : Projet Qemu, projet Xen 2007 : VirtualBox de innoTek publié en GPL, KVM intégré au noyau Linux Introduction
Buts de la virtualisation ● Amélioration de la charge des serveurs (consolidation) ● Séparation de services (isolation) ● Reprise d'activité, transferts de charge, continuité d'exploitation (disponibilité) ● Diminution de consommation électrique, climatisation, … (économie, écologie) ● Tests, développement, "bac à sable" Objectifs
Gestion des ressources Pour chaque machine virtuelle on détermine une attribution de ressources : ● Ressources communes (CPU, mémoire) selon des limites fixées ● Ressources dédiées pour chaque machine virtuelle (disque, interface réseau,...) Objectifs
Virtualisation des périphériques ● Le disque dur correspond à un fichier sur le disque du système hôte ● Le lecteur optique peut être celui de la machine hôte ou une image ISO ● L'accès réseau peut être direct ou se faire à travers le système hôte ● Selon le système de virtualisation d'autres possibilités peuvent s'ajouter Objectifs
Limites ● Pas d'affichage graphique 3D accéléré ● Peu de support pour des périphériques spécifiques Objectifs
Fondements techniques (plateforme x86) Les instructions sur un processeur x86 peuvent être exécutées à différents niveau de privilèges, de façon hiérarchique : ● Ring 0 : niveau le plus élevé, utilisé par le noyau ● Ring 1 et 2 : inusités ● Ring 3 : utilisé par les applications utilisateurs Les logiciels de virtualisation vont "décaler" l'exécution des systèmes invités. Théorie
Évolutions techniques ● Les deux principaux fondeurs proposent maintenant des instructions de virtualisation : ● VT pour Intel (Vanderpool) ● AMD-V pour AMD (Pacifica) ● egrep '(vmx|svm)' /proc/cpuinfo Théorie
Solutions techniques ● Cloisonnement ● Émulation ● Virtualisation complète ● Paravirtualisation Théorie
Cloisonnement Matériel Système d'exploitation Prison Théorie
Émulation Matériel Système d'exploitation Émulateur Théorie
Virtualisation complète Matériel Système d'exploitation Logiciel de virtualisation Machine virtuelle Théorie
Paravirtualisation Matériel Hyperviseur Machine virtuelle Théorie
Infrastructure virtuelle Une infrastructure virtuelle regroupe : ● Un ensemble de machines hôtes ● Des systèmes virtualisés ● Des ressources réseau virtualisées ● Des accès disques centralisés ● Des outils de gestion communs Théorie
Infrastructure virtuelle SAN Serveur hôte 1Serveur hôte 2 VM 1VM 2 VM 3 VM 4VM 5 Théorie
Qemu ● Sous licence GPL, développé par F. Bellard ● Émulateur de processeurs de différentes architectures (x86, x86_64, SPARC, PowerPC, …) ● Interfaces graphiques disponibles : Kqemu, QtEmu, Qemulator Mise en œuvre
VirtualBox ● Base libre (sous licence GPL), version complète propriétaire ● Rachat d'InnoTeK par Sun début 2008 ● Intègre du code de Qemu ● Orienté utilisateur Mise en œuvre
Xen ● Développé par l'université de Cambridge depuis 2003, puis sous la tutelle de XenSource ● Intègre du code de Qemu ● Disponible en version libre et en version propriétaire, sous MS Windows et sous Linux ● Racheté par Citrix en Mise en œuvre
KVM (Kernel-based Virtual Machine) ● Intégré au noyau Linux depuis la version (février 2007) ● Intègre du code de Qemu ● Interface graphique disponible : Virtual Machine Manager Mise en œuvre
VMware ● Propriétaire (gratuit pour les produits d'entrée de gamme) Mise en œuvre
Démonstrations avec VirtualBox ● Création d'une machine virtuelle ● Exécution d'une machine virtuelle ● Intégration avec le système hôte ● Gestion des instantanés (snapshots) Mise en œuvre
Évolutions de la virtualisation libre ● LibVirt ● Open Virtualization Format ● Open Virtual Machine Tools Conclusion et références
Références Sites web ● Wikipédia, l'encyclopédie libre (versions française et anglaise) ● Linux virtualization wiki ● Journées TutoJRES Virtualisation ● Virtual Overhead (blog espagnol) Conclusion et références
Références Ouvrages ● Best Damn Server Virtualization Book Period (Syngress) Revues ● Login: n°121 ● GNU/Linux Magazine n°85 / 92 ● UnixGarden Conclusion et références
Références Liste de discussion ● vmkernelnewbies Conclusion et références